За последние 24 часа нас посетили 15644 программиста и 1555 роботов. Сейчас ищут 876 программистов ...

Вывод данных из БД

Тема в разделе "PHP и базы данных", создана пользователем Oleksii, 12 апр 2016.

  1. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    PHP:
    1.     <?php
    2.     require_once "db.php";
    3.  
    4.     echo <<<HTML
    5.             <form action='post.php' method='post'>
    6.             <b>Name:</b><br>
    7.             <input type='text' name='name'><br>
    8.             <b>Message</b><br>
    9.             <textarea cols=50 rows=10 name='msg'></textarea><br><br>
    10.             <input type='submit' value='Send'><br><br><hr>
    11.             </form>
    12. HTML;
    13.    
    14.     $num = 10;
    15.     if(isset($_GET['page'])) $page = $_GET['page']-1;
    16.     else $page = 0;
    17.     $start = abs($page * $num);
    18.     $query = "SELECT * FROM messages LIMIT $start, $num";
    19.     $result = dbConnect()->query($query);
    20.     while($row = $result->fetch_array(MYSQLI_ASSOC))
    21.     {
    22.         echo "<b>" . $row['name'] . ":</b> " . $row['msg'] . "<br><br><hr>";
    23.     }
    24.     $count_query = "SELECT * FROM messages";
    25.     $count_result = dbConnect()->query($count_query);
    26.     $rows = $count_result->num_rows;
    27.     $num_pages = ceil($rows / $num);
    28.     for($i = 1; $i <= $num_pages; $i++)
    29.     {
    30.         if($i-1 == $page) echo $i . "\n.\n";
    31.         else echo "<a href='" . $_SERVER['PHP_SELF'] . "?page=" . $i . "'>\n" . $i . "\n.\n</a>";
    32.     }
    33.     $result->close();
    34.     $count_result->close();
    35.     dbClose();
    36.  
    37.  
    38.  
    39.     ?>
    Есть такой код для вывода постранично данных из базы. Все работает, только он выводит от первого до последнего елемента, а мне нужно от последнего до первого постранично. Уже перепробовал все что мог, через for вышло от последнего выбирать, но постранично не получилось. Помогите. Спасибо.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    В самом SQL запросе можно задать сортировку по полю через ORDER BY и указать от меньшего или большего сортировать ASC/DESC
     
    Oleksii нравится это.
  3. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    Спасибо) Все отлично работает. А вне запроса можно сортировать?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  5. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    С таблицы же мы только одну строку выбираем, и все эти функции php ее и сортируют, а нужно всю таблицу отсортировать, я пробовал через for это осуществить, на одну страницу получается вывести от последнего до первого id, а вот постранично нет,
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Сортируй тогда в SQL запросе, должно и по страницам работать.
    Покажи запрос с сортировкой для первой страницы и для второй
     
  7. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    В SQL запросе все отлично работает, просто я где то видел пример навигации без LIMIT и ORDER BY, только вот в прямом порядке вывод, и там автор статьи показывал цифры скорости обработки, и в случае без LIMIT и ORDER BY скорость обработки гораздо выше, вот я и пытался так осуществить, прямой вывод постранично работает, а обратный только на одну страницу все записи.
    Ты просишь что бы я показал запрос с сортировкой вне SQL запроса?
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Я понял что ты хочешь по страницам выводить данные и они должны быть отсортированы.
    Покажи какие SQL запросы ты для этого сделал и приложи как данные сортировались и как ты бы хотел чтобы они сортировались.
    На до же как-то наглядно посмотреть что нужно.
     
  9. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    PHP:
    1. $query = "SELECT * FROM table";
    2. $result = dbConnect()->query($query);
    3. $rows = $result->num_rows;
    4. for($i = $rows; $i >= 0; $i--)
    5. {
    6. $result->data_seek($i);
    7. $data = $result->fetch_array(MYSQLI_ASSOC);
    8. echo $data['value'] . "<br>";
    9. }
    Так выводит от последнего до первого на одну страницу.
    PHP:
    1. $query = "SELECT * FROM table WHERE id > '$start' AND id < '$stop';
    а там уже игрался с стартом и стопом, с началом и концом цикла, но желаемого результата не достиг.
    Это только что написал, с тех попыток ничего уже не осталось.
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Тебе нужно на одну страницу несколько записей вывести?
    И почему ты так упорно не хочешь использовать сортировку в SQL?
     
  11. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    Мне нужно все записи таблицы вывести на несколько страниц по несколько записей, SQL сортировка с этим прекрасно справляется, и я решил использовать ее, просто интересно было бы узнать как реализовать без нее такой вывод, учитывая показания автора той статьи и скоростном преимуществе.
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Есть ссылка на ту статью?
     
  13. Oleksii

    Oleksii Новичок

    С нами с:
    12 апр 2016
    Сообщения:
    22
    Симпатии:
    0
    Нет, я ее несколько дней назад видел, и тогда кучу статей перерыл по навигации
     
  14. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    в php есть встроенная функция, которая разворачивает массив. так вот если вытянуть таблицу БД в массив и развернуть этот массив, то получится сортировка без sql. Это ответ на вопрос а не предложение. т к это наверн ненужная нагрузка на сервак...