PHP: <?php require_once "db.php"; echo <<<HTML <form action='post.php' method='post'> <b>Name:</b><br> <input type='text' name='name'><br> <b>Message</b><br> <textarea cols=50 rows=10 name='msg'></textarea><br><br> <input type='submit' value='Send'><br><br><hr> </form> HTML; $num = 10; if(isset($_GET['page'])) $page = $_GET['page']-1; else $page = 0; $start = abs($page * $num); $query = "SELECT * FROM messages LIMIT $start, $num"; $result = dbConnect()->query($query); while($row = $result->fetch_array(MYSQLI_ASSOC)) { echo "<b>" . $row['name'] . ":</b> " . $row['msg'] . "<br><br><hr>"; } $count_query = "SELECT * FROM messages"; $count_result = dbConnect()->query($count_query); $rows = $count_result->num_rows; $num_pages = ceil($rows / $num); for($i = 1; $i <= $num_pages; $i++) { if($i-1 == $page) echo $i . "\n.\n"; else echo "<a href='" . $_SERVER['PHP_SELF'] . "?page=" . $i . "'>\n" . $i . "\n.\n</a>"; } $result->close(); $count_result->close(); dbClose(); ?> Есть такой код для вывода постранично данных из базы. Все работает, только он выводит от первого до последнего елемента, а мне нужно от последнего до первого постранично. Уже перепробовал все что мог, через for вышло от последнего выбирать, но постранично не получилось. Помогите. Спасибо.
В самом SQL запросе можно задать сортировку по полю через ORDER BY и указать от меньшего или большего сортировать ASC/DESC
В PHP есть функции для сортировки массивов, посмотри их в официальной документации. https://php.net/manual/ru/array.sorting.php https://php.net/manual/ru/book.array.php
С таблицы же мы только одну строку выбираем, и все эти функции php ее и сортируют, а нужно всю таблицу отсортировать, я пробовал через for это осуществить, на одну страницу получается вывести от последнего до первого id, а вот постранично нет,
Сортируй тогда в SQL запросе, должно и по страницам работать. Покажи запрос с сортировкой для первой страницы и для второй
В SQL запросе все отлично работает, просто я где то видел пример навигации без LIMIT и ORDER BY, только вот в прямом порядке вывод, и там автор статьи показывал цифры скорости обработки, и в случае без LIMIT и ORDER BY скорость обработки гораздо выше, вот я и пытался так осуществить, прямой вывод постранично работает, а обратный только на одну страницу все записи. Ты просишь что бы я показал запрос с сортировкой вне SQL запроса?
Я понял что ты хочешь по страницам выводить данные и они должны быть отсортированы. Покажи какие SQL запросы ты для этого сделал и приложи как данные сортировались и как ты бы хотел чтобы они сортировались. На до же как-то наглядно посмотреть что нужно.
PHP: $query = "SELECT * FROM table"; $result = dbConnect()->query($query); $rows = $result->num_rows; for($i = $rows; $i >= 0; $i--) { $result->data_seek($i); $data = $result->fetch_array(MYSQLI_ASSOC); echo $data['value'] . "<br>"; } Так выводит от последнего до первого на одну страницу. PHP: $query = "SELECT * FROM table WHERE id > '$start' AND id < '$stop'; а там уже игрался с стартом и стопом, с началом и концом цикла, но желаемого результата не достиг. Это только что написал, с тех попыток ничего уже не осталось.
Тебе нужно на одну страницу несколько записей вывести? И почему ты так упорно не хочешь использовать сортировку в SQL?
Мне нужно все записи таблицы вывести на несколько страниц по несколько записей, SQL сортировка с этим прекрасно справляется, и я решил использовать ее, просто интересно было бы узнать как реализовать без нее такой вывод, учитывая показания автора той статьи и скоростном преимуществе.
в php есть встроенная функция, которая разворачивает массив. так вот если вытянуть таблицу БД в массив и развернуть этот массив, то получится сортировка без sql. Это ответ на вопрос а не предложение. т к это наверн ненужная нагрузка на сервак...