как хранить упорядоченные строки из jquery-UI сортируемый в MySQL - PullRequest
1 голос
/ 18 мая 2011

У меня есть список таких вещей, как

<ul id='lst'>
   <li id=123>first item</li>
   <li id=231>second item</li>
   <li id=321>third item</li>
</ul>

в jQuery я делаю это сортируемым:

$("#lst").sortable();

После того, как сортировка завершена, я вызываю следующее, чтобы получить заказ, в который пользователь поместил товары:

.sortable('toArray');

Я публикую этот массив в сценарии PHP, используя AJAX:

.post("store.php") {
   command: "storeitemorder",
   list: $("#lst").sortable("toArray") 
},function( data ) {},"json" );

это передает новый порядок в PHP, и я получаю массив. Теперь проблема: я хочу сохранить информацию в базе данных MySQL без необходимости делать отдельный запрос для каждого элемента. Каждый элемент имеет строку, хранящуюся в базе данных. Например, это начинается так:

123 - first item
231 - second item
321 - third item

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

first item (id=123), row=2
second item (id=231), row=1
third item (id=321), row=0

Я мог бы сделать 3 запроса, но для этого должно быть более элегантное решение. Кроме того, список может быть намного длиннее, чем этот, и так как есть много пользователей, я не хочу делать запрос для каждого элемента списка ...

Кто-нибудь знает решение для этого?

1 Ответ

0 голосов
/ 22 ноября 2011

Попробуйте это:

$sql = array(); 
foreach( $data as $row ) {
    $sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));

По сути, вы конвертируете массив с помощью implode

Подробнее здесь:

вставка нескольких строк через массив php в mysql

...