2012-02-09 2 views
0

Если у меня есть 4 строки db, я хочу, чтобы их сортировать по столбцу «позиция».php mysql порядок сортировки. Изменить порядок сортировки с помощью гиперссылки (стрелки вверх/вниз)

идентификатор - имя - позиция

1 - row1 - 1 
2 - row2 - 2 
3 - row3 - 3 
4 - row4 - 4 

Я знаю, как сортировать с PHP SELECT, SORT BY и т.д.

Но я хочу, чтобы иметь возможность нажать гиперссылку, которая будет поменять позиции.

Row img  img 
row1 (down) 
row2 (up) (down) 
row3 (up) (down) 
row4 (up) 

т.е. Нажмите на строке 2 изменит row2 положение -> 1 и изменит ряд 1 место -> 2

Любая помощь будет принята с благодарностью.

+0

Что именно вы хотите? Это всего лишь JavaScript, который вас интересует? Или PHP code + структура базы данных для повторной организации данных в таблице базы данных? –

+0

, был после консультации с тем, что, по мнению ppl, было лучшим решением. Если у вас есть идеи PLS, дайте мне знать. – Codded

+0

Понял, но, как вы задали свой вопрос, кажется, что люди думают, что это вопрос JavaScript/GUI. Вы должны повторно сформулировать свой вопрос, подчеркнув, что у вас есть столбец позиции и вы хотите, чтобы решение могло манипулировать его значением. –

ответ

0

по гиперссылке, загрузите PHP страницу, которая принимает несколько параметров:

  1. Идентификатор строки вы хотите, чтобы двигаться вверх/вниз
  2. Текущее положение строки вы хотите, чтобы двигаться вверх/вниз
  3. идентификатор строки ниже/выше строки, которую требуется переместить
  4. текущее положение строки вы хотите, чтобы двигаться вверх/вниз
  5. Если вы хотите, чтобы двигаться вверх или вниз в строке вы (например, его идентификатор) и th текущую позицию, а также новую позицию.

Из этого вы точно узнаете, что вам нужно сделать, и можете запросить обменить эти элементы в базе данных. После этого перезагрузите страницу.

+0

да, я знаю это в теории – Codded

0

Проще всего использовать библиотеку javascript, которая позволяет переупорядочивать элементы. Проверьте: http://jqueryui.com/demos/sortable/

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

+0

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

+0

После того, как пользователь закончил заказывать предметы, он должен нажать на кнопку/ссылку, чтобы сохранить текущий заказ. В этом случае вам необходимо сериализовать элементы и отправить их на сервер. –

+0

Если вам нужна дополнительная информация о сохранении заказанных элементов, я просто нашел другой вопрос именно об этом: http://stackoverflow.com/questions/7342727/jquery-ui-saving-sortable-list –

0

гм , что об этом

while ($row = mysql_fetch_array($query)) { 
@$group[] = $row['img']; 
} 

and call it 
echo $group[1]; 
echo $group[3]; 
echo $group[0]; 
echo $group[2]; 

и т.д. ИДК, если это то, что вы имели в виду

0

, если вы хотите поменять позицию только в пользовательском интерфейсе, вы можете использовать JavaScript.

например:

<div id="1" > <div id="data_1">data goes here for row1</div> </div> 
<div id="2" > <div id="data_2">data goes here for row2</div> <a onclick="moveUp(2);"> UP</a> <a onclick="moveDown(2);"> Down</a></div> 
<div id="3" > <div id="data_3">data goes here for row3</div> </div> 

<script> 
function moveUp(n){ 
    var m = n-1; 
    var own_id = 'data_'+n; 
    var new_id = 'data_'+m; 
    var tmp_data = ''; 
    var own_data = $(own_id).innerHtml; 
    if($(new_id) != 'undefined'){ 
    tmp_data = $(new_id).innerHtml; 
    $(new_id).innerHtml = own_data; 
    $(own_id).innerHtml = tmp_data; 
    } 

} 

function moveDown(n){ 
    //same logic can be applied here 
} 
</script> 

надеюсь, что это поможет.

Смежные вопросы