Самый быстрый способ обновить таблицу базы данных

0

У меня есть сайт, на котором люди могут создать таблицу неизвестной длины, содержащую два столбца, 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, но я предпочитаю базу данных, поэтому я могу связать данные из других таблиц и пользователей и т.д. вместе.

  • 0
    Если это то, что люди редактируют на веб-странице, то о каком количестве данных мы говорим здесь? Самый быстрый метод может добавить больше сложности, чем стоит.
Теги:
store-data

2 ответа

2
Лучший ответ

Вероятно, самый быстрый способ, предполагающий, что таблицы будут большими, заключалось бы в том, чтобы вытащить все это в память с помощью одного запроса, пропустить это, сравнивая строки и, при необходимости, обновлять.

Лучше было бы сделать что-то динамическое, где запросы отправляются в db на лету, поскольку строки редактируются с помощью вызова AJAX.

  • 0
    Привет Питер, это отличная идея, чтобы обновить, редактируя с AJAX, не думал об этом! Вытащить всю таблицу в память, значит, поместить ее в $ _SESSION?
  • 0
    Вы можете поместить его в $ _SESSION, но подойдет любая переменная. Как только он окажется в локальной памяти, вы сможете обрабатывать данные гораздо быстрее, чем выполнять большое количество отдельных запросов. Вам нужно будет поэкспериментировать с производительностью, чтобы увидеть, какой путь выйдет вперед. Что-то вроде: $ result = mysql_query ("select * from table", $ conn); while ($ row = mysql_fetch_assoc ($ result)) {$ data [] = $ row; }
1

вы можете использовать delete_row() с идентификатором этого слова, и каждый раз, когда выполняется delete_row, он хранит данные в переменной js, а в конце, когда пользователь нажимает кнопку обновления, вы знаете, какие строки обновлять

var deletedRows = new Array();
var numberOfRowsDeleted = 0;
function delete_row(row_id)
{
    deletedRows[numberOfRowsDeleted] = row_id;
    numberOfRowsDeleted++;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню