Cортировка результатов

almaz

Новичок
Имеется код:
PHP:
$result = mysqli_query($db, "SELECT * FROM `test_tbl` ORDER BY `dmg` DESC LIMIT 30");

foreach ($result as $row) {
    echo "<tbody><tr><td>".$row['num']."</td><td>".$row['name']."</td><td>".$row['dmg']."</td></tr></tbody>";
}
В запросе происходит сортировка по столбцу dmg. Мне нужно сделать чтобы сортировка в запросе не касалась столбца num, потому как у меня на выходе получается:

PHP:
22      PETR    244578
18      DIMA    189623
74      Oleg    163091
118     VIKTOR  132381
1380    KTO ?   118807
60      Olga    103181
...
мне же нужно в конечном результате такой вид таблицы:
PHP:
1       PETR    244578
2       DIMA    189623
3       Oleg    163091
4       VIKTOR  132381
5       KTO ?   118807
6       Olga    103181
...
Просто заменить первый столбец счетчиком не вариант, т.к у меня есть еще пагинация, которая будет ломать счетчик, что нужно будет еще костылить. Подскажите пожалуйста новичку может как-то можно все-таки изящно все сделать в моем варианте?
 
Последнее редактирование:

Adelf

Administrator
Команда форума
пагинация? это наверно невероятно сложно посчитать номер строчки при пагинации?
 

almaz

Новичок
пагинация? это наверно невероятно сложно посчитать номер строчки при пагинации?
Вопрос в другом, можно ли как-то обойтись без этого т.к я написал что хотелось бы "почище чтоль" код.
Мне нужно сделать чтобы сортировка в запросе не касалась столбца num
Я имел виду, может в запросе реально исключение сделать как-то. Или еще какие-то варианты.
 

ksnk

прохожий
Мне нужно сделать чтобы сортировка в запросе не касалась столбца num
Ну и что написано в запросе? Разве там есть сортировка по num ?

Если нужно выводить номер строки, то и нужно выводить не ненужный num, а номер строки. Кроме foreach в php есть еще и просто for. Или можно отдельную переменную завести со счетчиком, инкрементировать ее каждый цикл...
 

almaz

Новичок
Ну и что написано в запросе? Разве там есть сортировка по num ?

Если нужно выводить номер строки, то и нужно выводить не ненужный num, а номер строки. Кроме foreach в php есть еще и просто for. Или можно отдельную переменную завести со счетчиком, инкрементировать ее каждый цикл...
Все верно, там стоит сортировка по dmg (как мне и нужно), но мне нужно чтобы первый столбец num это не касалось. Сортировка в запросе в две стороны выдает не совсем то что нужно (там получается начинает сортировать вторую сторону уже из сделанной выборки первой сортировки)...

ps пример того вида как мне нужно есть же в посте.
 

ksnk

прохожий
Паджинация - это что ? 30 записей на страницу? В каком месте до запроса доводится откуда начинать?
PHP:
$page=empty($_GET['page'])?0:(int)$_GET['page']-1; // для простоты...
$perpage=30;
$cnt=$page*$perpage;
$result = mysqli_query($db, "SELECT * FROM `test_tbl` ORDER BY `dmg` DESC LIMIT ".$cnt.",".$perpage); // паджинация !

foreach ($result as $row) {
    echo "<tbody><tr><td>".++$cnt."</td><td>".$row['name']."</td><td>".$row['dmg']."</td></tr></tbody>";
}
Это не оно ?
 

almaz

Новичок
Паджинация - это что ? 30 записей на страницу? В каком месте до запроса доводится откуда начинать?
PHP:
$page=empty($_GET['page'])?0:(int)$_GET['page']-1; // для простоты...
$perpage=30;
$cnt=$page*$perpage;
$result = mysqli_query($db, "SELECT * FROM `test_tbl` ORDER BY `dmg` DESC LIMIT ".$cnt.",".$perpage); // паджинация !

foreach ($result as $row) {
    echo "<tbody><tr><td>".++$cnt."</td><td>".$row['name']."</td><td>".$row['dmg']."</td></tr></tbody>";
}
Это не оно ?
Да про подобное я вкурсе. Просто думал можно как-то без костылей, именно запросом как-то решить.
 

ksnk

прохожий
В каком месте тут костыли ? В mysql нет функции row_number, так что вот там-то костыли и будут, имитировать номер с
помощью переменных....
 
Сверху