За последние 24 часа нас посетили 18655 программистов и 1661 робот. Сейчас ищут 927 программистов ...

вывод из таблицы mysql постранично

Тема в разделе "MySQL", создана пользователем Intergo, 13 янв 2013.

  1. Intergo

    Intergo Активный пользователь

    С нами с:
    13 янв 2013
    Сообщения:
    3
    Симпатии:
    0
    Задача: вывести данные из таблицы mysql постранично. Подскажите готовые решения на php или помогите разораться, почему не работает вот это решение:

    Код (Text):
    1. $link = mysql_connect("localhost", "root", "");
    2. if (! $link)
    3. die( "Couldn`t connect to localhost!");
    4. $db = "user";
    5. mysql_select_db($db) or die ("Error open DB!");
    6.  
    7. // количество записей, выводимых на странице
    8. $per_page=10;
    9. // получаем номер страницы
    10. if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
    11. // вычисляем первый оператор для LIMIT
    12. $start=abs($page*$per_page);
    13. // составляем запрос и выводим записи
    14. // переменную $start используем, как нумератор записей.
    15.  
    16. $q="SELECT * FROM `subs` ORDER BY field LIMIT $start,$per_page";
    17.  
    18. $res=mysql_query($q);
    19.  
    20. while($row=mysql_fetch_array($res)) {
    21.   echo ++$start.". ".$row['field']."<br>\n";
    22. }
    23.  
    24. // дальше выводим ссылки на страницы:
    25. $q="SELECT count(*) FROM `subs`";
    26. $res=mysql_query($q);
    27. $row=mysql_fetch_row($res);
    28. $total_rows=$row[0];
    29.  
    30. $num_pages=ceil($total_rows/$per_page);
    31.  
    32. for($i=1;$i<=$num_pages;$i++) {
    33.   if ($i-1 == $page) {
    34.     echo $i." ";
    35.   } else {
    36.     echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";
    37.   }
    38. };
    39.  
    40. mysql_close($link);
    Выдаёт ошибку:
    Код (Text):
    1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
    Искал разные решение в сети, всё на нерабочие натыкался. Исправлял, но не заработало всё равно. В конечном итоге ещё одна программа тоже не заработала из-за ошибки с mysql_fetch_array.
     
  2. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    Тут же все ясно и понятно написано), аргумент пропущен--какой тип массива возвращать. Читаем документацию).

    Я лично для работы с базой использую DbSimple --удобная оч. Там как-раз есть реализация постраничной выборки+избавишь себя от уязвимостей, если будешь юзать плейсхолдеры.
     
  3. Intergo

    Intergo Активный пользователь

    С нами с:
    13 янв 2013
    Сообщения:
    3
    Симпатии:
    0
    Разобрался. Переписал немного кода:

    Код (Text):
    1. $res=mysql_query("SELECT * FROM subs LIMIT $start,$per_page");
    2.  
    3. while($row=mysql_fetch_array($res)) {
    4.   echo ++$start.". ".$row['0'].$row['1'].$row['2'].$row['3'].$row['4']."<br>\n";
     
  4. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    Ой, сорри, я ошибся%). Тупо дочитал ошибку до конца