За последние 24 часа нас посетили 16805 программистов и 1694 робота. Сейчас ищут 896 программистов ...

Нет перехода по страницам, Помогите с решением задачи

Тема в разделе "Прочие вопросы по PHP", создана пользователем spinozaby, 28 мар 2014.

  1. spinozaby

    spinozaby Новичок

    С нами с:
    28 мар 2014
    Сообщения:
    3
    Симпатии:
    0
    Помогите с решением задачи в работе скрипта. При переходе на другую страницу нет отображения данных из таблицы Mysql, только первые записи. Как отобразить следующие записи?

    Скрипт
    Код (Text):
    1.  
    2. <?php
    3. /* Создаем соединение */
    4.  
    5. define('DB_HOST', 'localhost'); // сервер БД
    6. define('DB_USER', 'root'); // логин БД
    7. define('DB_PASS', ''); // пароль БД
    8. define('DB_NAME', 'test'); // имя БД
    9.  
    10. if (!$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS)) {
    11.     echo 'не могу подключиться к серверу БД';
    12.     exit;
    13. }
    14. if (!mysql_select_db(DB_NAME)) {
    15.     echo 'не могу подключить БД';
    16. }
    17. // запрещаем вывод предупреждений
    18. Error_Reporting(E_ALL & ~E_NOTICE);
    19. // в какой кодировке получать данные от БД для вывода клиенту
    20. mysql_query('set character_set_results="utf8"');
    21. // Устанавливаем количество записей, которые будут выводиться на одной странице
    22. // Поставьте нужное вам число. Для примера я указал одну запись на страницу
    23. $quantity = 2;
    24.  
    25. // Ограничиваем количество ссылок, которые будут выводиться перед и
    26. // после текущей страницы
    27. $limit = 3;
    28.  
    29. // Если значение page= не является числом, то показываем
    30. // пользователю первую страницу
    31. if (!is_numeric($page)) {
    32.     $page = 1;
    33. }
    34.  
    35. // Если пользователь вручную поменяет в адресной строке значение page= на нуль,
    36. // то мы определим это и поменяем на единицу, то-есть отправим на первую
    37. // страницу, чтобы избежать ошибки
    38. if ($page < 1) {
    39.     $page = 1;
    40. }
    41.  
    42. // Узнаем количество всех доступных записей
    43. $result2 = mysql_query("SELECT * FROM contacts;");
    44. /* @var $num type */
    45. $num = mysql_num_rows($result2);
    46.  
    47. // Вычисляем количество страниц, чтобы знать сколько ссылок выводить
    48. $pages = $num/$quantity;
    49.  
    50. // Округляем полученное число страниц в большую сторону
    51. $pages = ceil($pages);
    52.  
    53. // Здесь мы увеличиваем число страниц на единицу чтобы начальное значение было
    54. // равно единице, а не нулю. Значение page= будет
    55. // совпадать с цифрой в ссылке, которую будут видеть посетители
    56. $pages++;
    57.  
    58. // Если значение page= больше числа страниц, то выводим первую страницу
    59. if ($page > $pages) {
    60.     $page = 1;
    61. }
    62.  
    63. // Выводим заголовок с номером текущей страницы
    64. echo '<strong style="color: #df0000">Страница № ' . $page .
    65.  '</strong><br /><br />';
    66.  
    67. // Переменная $list указывает с какой записи начинать выводить данные.
    68. // Если это число не определено, то будем выводить
    69. // с самого начала, то-есть с нулевой записи
    70. if (!isset($list)) {
    71.     $list = 0;
    72. }
    73.  
    74. // Чтобы у нас значение page= в адресе ссылки совпадало с номером
    75. // страницы мы будем его увеличивать на единицу при выводе ссылок, а
    76. // здесь наоборот уменьшаем чтобы ничего не нарушить.
    77. $list = --$page * $quantity;
    78.  
    79. // Делаем запрос подставляя значения переменных $quantity и $list
    80. $result = mysql_query("SELECT * FROM contacts LIMIT $quantity OFFSET $list;");
    81.  
    82. // Считаем количество полученных записей
    83. $num_result = mysql_num_rows($result);
    84. /* Выводим данные из таблицы */
    85. echo ("
    86. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    87. <html xmlns=\"http://www.w3.org/1999/xhtml\">
    88.  
    89. <head>
    90.  
    91.     <meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1251\" />
    92.  
    93.     <title>Вывод данных из MySQL</title>
    94.  
    95. <style type=\"text/css\">
    96. <!--
    97. body { font: 12px Georgia; color: #666666; }
    98. h3 { font-size: 16px; text-align: center; }
    99. table { width: 700px; border-collapse: collapse; margin: 0px auto; background: #E6E6E6; }
    100. td { padding: 3px; text-align: center; vertical-align: middle; }
    101. .buttons { width: auto; border: double 1px #666666; background: #D6D6D6; }
    102. -->
    103. </style>
    104.  
    105. </head>
    106.  
    107. <body>
    108.  
    109. <h3>Вывод сохраненных данных из таблицы MySQL</h3>
    110.  
    111. <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">
    112.  <tr style=\"border: solid 1px #000\">
    113.   <td><b>Номер</b></td>
    114.   <td align=\"center\"><b>Фамилия, имя и отчество клиента</b></td>
    115.   <td align=\"center\"><b>Статус</b></td>
    116.  </tr>
    117. ");
    118. // Выводим все записи текущей страницы
    119. for ($i = 0; $i < $num_result; $i++) {
    120.     $row = mysql_fetch_array($result);
    121.     echo "<tr>\n";
    122.     echo "<td>" . $row['id'] . "</td>\n";
    123.     echo "<td>" . $row['name'] . "</td>\n";
    124.     echo "<td>" . $row['status'] . "</td>\n";
    125. }
    126. echo ("</table>\n");
    127.  
    128. echo 'Страницы: ';
    129.  
    130. // _________________ начало блока 1 _________________
    131. // Выводим ссылки "назад" и "на первую страницу"
    132. if ($page >= 1) {
    133.  
    134.     // Значение page= для первой страницы всегда равно единице,
    135.     // поэтому так и пишем
    136.     echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=1"><<</a> &nbsp; ';
    137.  
    138.     // Так как мы количество страниц до этого уменьшили на единицу,
    139.     // то для того, чтобы попасть на предыдущую страницу,
    140.     // нам не нужно ничего вычислять
    141.     echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . $page .
    142.     '">< </a> &nbsp; ';
    143. }
    144.  
    145. // __________________ конец блока 1 __________________
    146. // На данном этапе номер текущей страницы = $page+1
    147. $_this = $page + 1;
    148.  
    149. // Узнаем с какой ссылки начинать вывод
    150. $start = $_this - $limit;
    151.  
    152. // Узнаем номер последней ссылки для вывода
    153. $end = $_this + $limit;
    154.  
    155. // Выводим ссылки на все страницы
    156. // Начальное число $j в нашем случае должно равнятся единице, а не нулю
    157. for ($j = 1; $j < $pages; $j++) {
    158.  
    159.     // Выводим ссылки только в том случае, если их номер больше или равен
    160.     // начальному значению, и меньше или равен конечному значению
    161.     if ($j >= $start && $j <= $end) {
    162.  
    163.         // Ссылка на текущую страницу выделяется жирным
    164.         if ($j == ($page + 1)) {
    165.             echo '<a href="' . $_SERVER['SCRIPT_NAME'] .
    166.             '?page=' . $j . '"><strong style="color: #df0000">' . $j .
    167.             '</strong></a> &nbsp; ';
    168.         }
    169.  
    170.         // Ссылки на остальные страницы
    171.         else {
    172.             echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' .
    173.             $j . '">' . $j . '</a> &nbsp; ';
    174.         }
    175.     }
    176. }
    177.  
    178. // _________________ начало блока 2 _________________
    179. // Выводим ссылки "вперед" и "на последнюю страницу"
    180. if ($j > $page && ($page + 2) < $j) {
    181.  
    182.     // Чтобы попасть на следующую страницу нужно увеличить $pages на 2
    183.     echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($page + 2) .
    184.     '"> ></a> &nbsp; ';
    185.  
    186.     // Так как у нас $j = количество страниц + 1, то теперь
    187.     // уменьшаем его на единицу и получаем ссылку на последнюю страницу
    188.     echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=' . ($j - 1) .
    189.     '">>></a> &nbsp; ';
    190. }
    191. // __________________ конец блока 2 __________________
    192. ?>
    А вот ссылка на работу с внешнего сервера

    http://strahovka-vip.by/test3.php
     
  2. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    79 строка

    попробуй так или поменЯй местами $quantity, $list
    $result = mysql_query("SELECT * FROM contacts LIMIT $quantity, $list;");
     
  3. spinozaby

    spinozaby Новичок

    С нами с:
    28 мар 2014
    Сообщения:
    3
    Симпатии:
    0
    Вообще не отображает строку из базы данных, только шапку отображает.
     
  4. spinozaby

    spinozaby Новичок

    С нами с:
    28 мар 2014
    Сообщения:
    3
    Симпатии:
    0
    Я думая проблема в передачи значения page на следующую страницу

    Добавлено спустя 17 минут 8 секунд:
    Разобрался

    не хватало

    $page=$_GET['page'];