У меня есть сайт, на котором люди могут создать таблицу неизвестной длины, содержащую два столбца, word_1
и word_2
, и сохранить эту таблицу в базе данных. Конечно, очень просто вставить эти значения в базу данных, просто перебирая строки.
Теперь кто-то решает обновить некоторые значения, и он переходит на страницу редактирования, где он находит все строки в <input/>
-fields в таблице. Какой самый быстрый способ обновить эти значения, когда он редактирует контент, добавляет другую строку или удаляет строку?
Например, это таблица после ее создания:
[word_1 ] [word_2 ]
1. [foo ] [bar ]
2. [something ] [more ]
3. [another ] [row ]
...
600. [another_value ] [blabla ]
601. [last ] [row ]
И затем кто-то решает его отредактировать:
1. [foo ] [bar ]
2. [changed_val ] [more ]
...
234. [another_change] [changed_value]
...
600. deleted
601. [last ] [row ]
602. [new_row ] [new_value ]
Я думаю, что мой HTML-код будет выглядеть следующим образом:
<table>
<tr>
<td>
<input type="hidden" name="row[0][id]" value="id-2" />
<input type="text" name="row[0][word_1]" value="value_1" />
</td>
<td>
<input type="text" name="row[0][word_2]" value="value_2" />
</td>
<td>
<img src="img.gif" onclick="delete_row()" />
</td>
</tr>
<tr>
<td>
<input type="hidden" name="row[1][id]" value="id-5" />
<input type="text" name="row[1][word_1]" value="value_1" />
</td>
<td>
<input type="text" name="row[1][word_2]" value="value_2" />
</td>
<td>
<img src="img.gif" onclick="delete_row()" />
</td>
</tr>
</table>
Есть ли лучший способ обновить таблицу, чем пройти через каждую из этих строк и проверить с запросом, если отредактировать текущую строку? И каков наилучший способ увидеть, удалена ли строка?
Я знаю, что эти данные очень легко хранить в XML, но я предпочитаю базу данных, поэтому я могу связать данные из других таблиц и пользователей и т.д. вместе.
Вероятно, самый быстрый способ, предполагающий, что таблицы будут большими, заключалось бы в том, чтобы вытащить все это в память с помощью одного запроса, пропустить это, сравнивая строки и, при необходимости, обновлять.
Лучше было бы сделать что-то динамическое, где запросы отправляются в db на лету, поскольку строки редактируются с помощью вызова AJAX.
вы можете использовать delete_row() с идентификатором этого слова, и каждый раз, когда выполняется delete_row, он хранит данные в переменной js, а в конце, когда пользователь нажимает кнопку обновления, вы знаете, какие строки обновлять
var deletedRows = new Array();
var numberOfRowsDeleted = 0;
function delete_row(row_id)
{
deletedRows[numberOfRowsDeleted] = row_id;
numberOfRowsDeleted++;
}