Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Постраничная навигация

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Без описания
DOciK
Отправлено: 04 Сентября, 2014 - 14:29:10
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Что не так с кодом, выдает 10 записей по id как и нужно, но во всех страницах одно и тоже, хотя в базе записей 85-86 просто дублирует все 10 на все странички?Напишите как правильно, чтоб все записи из базы данных раскидал по 10 по страничкам.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include ('bd.php');
  3. $res=mysql_query("SELECT * FROM test_tab ORDER BY id DESC");
  4.  
  5. $max_posts=10;
  6. $num_posts=mysql_num_rows($res);
  7. $num_pages=ceil($num_posts/$max_posts);
  8.  
  9. for($i=1;$i<=$num_pages;$i++)
  10.       echo "
  11.  
  12.                         <a href='?pages.php=$i'>$i</a>
  13.                         ";
  14.          
  15. if(isset($_GET['pages'])){
  16. $page=$_GET['pages'];
  17. $page = intval($page);
  18.  if($page<1)
  19.     $page=1;
  20.         elseif($page>$num_pages)
  21.         $page=$num_pages;
  22. }        
  23. else{
  24. $page=1;
  25. }
  26.  
  27. $q=1;
  28. $post=mysql_fetch_array($res);
  29.     do
  30.       {$newdate=$post['Date'];
  31. $date_explode = explode(" ", $newdate);
  32. $date = explode("-", $date_explode[0]);
  33. $year = $date[0];
  34. $day = $date[2];
  35. $month = $date[1];
  36. $months = array('Januar', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
  37. $month = $months[$month-1];
  38.           if (($q>($page*$max_posts-$max_posts))&&($q<=($page*$max_posts))){
  39.                     printf('
  40. <h2>'.$post["Name"].'</h2>
  41. <h2>'.$day .'</h2>
  42. <h2>'.$month .'</h2>
  43. <h2>'.$year .'</h2>
  44. ');
  45. }}
  46. while($post=mysql_fetch_array($res) and $q++);
  47. ?>

(Отредактировано автором: 04 Сентября, 2014 - 14:37:00)

 
 Top
esterio
Отправлено: 04 Сентября, 2014 - 14:37:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)





очень ну очнь плохой код

в нете полно примеров более грамротных чем этот.
По сабжу а где у вас указано с какой записи начинать?
 
 Top
DOciK
Отправлено: 04 Сентября, 2014 - 14:38:26
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




esterio пишет:

очень ну очнь плохой код

в нете полно примеров более грамротных чем этот.
По сабжу а где у вас указано с какой записи начинать?

А как это сделать?
Понятие грамотности кода, это понятие понимания php, а я в нем не очень то соображаю, нашел этот и вроде работает, но не так как надо, а искать как Вы говорите грамотный код, это можно сказать не в моей компетенции в силу непонимания)

(Отредактировано автором: 04 Сентября, 2014 - 14:40:50)

 
 Top
OrmaJever
Отправлено: 04 Сентября, 2014 - 14:45:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




вот здесь http://www.php.su/articles/?cat=...les&page=062 очень хорошее описание с примерами


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DOciK
Отправлено: 04 Сентября, 2014 - 14:46:53
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




OrmaJever пишет:
вот здесь http://www.php.su/articles/?cat=...les&page=062 очень хорошее описание с примерами

Спасибо большое
(Добавление)
пошел по ссылке скопировал вставил к себе и подставил свои значения
выдает ошибку:
faultCode0faultStringNotice:Undefined variable: page in www/html/pages1.php on line 14
faultCode0faultStringWarning:mysql_fetch_array() expects parameter 1 to be resource, boolean given in www/html/pages1.php on line 26
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // Устанавливаем соединение с базой данных
  3. include ('bd.php');
  4. // Переменная хранит число сообщений выводимых на станице
  5. $num = 10;
  6. // Извлекаем из URL текущую страницу
  7. // Определяем общее число сообщений в базе данных
  8. $result = mysql_query("SELECT COUNT(*) FROM test_tab");
  9. $posts = mysql_fetch_row($result);
  10. $posts= ceil($posts);
  11. // Находим общее число страниц
  12. $total = ceil($posts/$num);
  13. // Определяем начало сообщений для текущей страницы
  14. $page=ceil($page);
  15. // Если значение $page меньше единицы или отрицательно
  16. // переходим на первую страницу
  17. // А если слишком большое, то переходим на последнюю
  18. if(empty($page) or $page < 0) $page = 1;
  19.   if($page > $total) $page = $total;
  20. // Вычисляем начиная к какого номера
  21. // следует выводить сообщения
  22. $start = $page * $num - $num;
  23. // Выбираем $num сообщений начиная с номера $start
  24. $result = mysql_query("SELECT * FROM test_tab LIMIT $start, $num");
  25. // В цикле переносим результаты запроса в массив $postrow
  26. while ($postrow=mysql_fetch_array($result))
  27. ?>
  28. <?PHP
  29. echo "<table>";
  30. for($i = 0; $i < $num; $i++)
  31. {
  32. echo "<tr>
  33.         <td>".$postrow[$i]['name']."</td>
  34.         <td>".$postrow[$i]['time']."</td></tr>
  35.       <tr><td colspan=\"2\">".$postrow[$i]['text']."</td></tr>";
  36. }
  37. echo "</table>";
  38. ?>
  39. <?PHP
  40. // Проверяем нужны ли стрелки назад
  41. if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>
  42.                               <a href= ./page?page='. ($page - 1) .'><</a> ';
  43. // Проверяем нужны ли стрелки вперед
  44. if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a>
  45.                                   <a href= ./page?page=' .$total. '>>></a>';
  46.  
  47. // Находим две ближайшие станицы с обоих краев, если они есть
  48. if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
  49. if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
  50. if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
  51. if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  52.  
  53. // Вывод меню
  54. echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
  55. ?>

Как определить эту переменную? от куда он ее возьмет?
 
 Top
Sail
Отправлено: 04 Сентября, 2014 - 15:42:09
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




DOciK пишет:
Как определить эту переменную? от куда он ее возьмет?

В том примере:

Из запроса...
Надо ещё предусмотреть случаи, когда параметр 'page' в запросе не передан, или не является натуральным числом...
 
 Top
DOciK
Отправлено: 04 Сентября, 2014 - 15:45:44
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




А можете написать код в котором будет то, что Вы сказали
(Добавление)
Пишу так
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // Устанавливаем соединение с базой данных
  3. include ('bd.php');
  4. // Переменная хранит число сообщений выводимых на станице
  5. $num = 10;
  6. // Извлекаем из URL текущую страницу
  7. // Определяем общее число сообщений в базе данных
  8. $result = mysql_query("SELECT COUNT(*) FROM test_tab");
  9. $posts = mysql_fetch_row($result);
  10. $posts= ceil($posts);
  11. // Находим общее число страниц
  12. if(isset($_GET['pages'])){
  13. $page=$_GET['pages']};
  14. $total = ceil($posts/$num);
  15. // Определяем начало сообщений для текущей страницы
  16. $page=ceil($page);
  17. // Если значение $page меньше единицы или отрицательно
  18. // переходим на первую страницу
  19. // А если слишком большое, то переходим на последнюю
  20. if(empty($page) or $page < 0) $page = 1;
  21.   if($page > $total) $page = $total;
  22. // Вычисляем начиная к какого номера
  23. // следует выводить сообщения
  24. $start = $page * $num - $num;
  25. // Выбираем $num сообщений начиная с номера $start
  26. $result = mysql_query("SELECT * FROM test_tab LIMIT $start, $num");
  27. // В цикле переносим результаты запроса в массив $postrow
  28. while ($postrow=mysql_fetch_array($result))
  29. ?>
  30. <?PHP
  31. echo "<table>";
  32. for($i = 0; $i < $num; $i++)
  33. {
  34. echo "<tr>
  35.         <td>".$postrow[$i]['name']."</td>
  36.         <td>".$postrow[$i]['time']."</td></tr>
  37.       <tr><td colspan=\"2\">".$postrow[$i]['text']."</td></tr>";
  38. }
  39. echo "</table>";
  40. ?>
  41. <?PHP
  42. // Проверяем нужны ли стрелки назад
  43. if ($page != 1) $pervpage = '<a href= ./page?page=1><<</a>
  44.                               <a href= ./page?page='. ($page - 1) .'><</a> ';
  45. // Проверяем нужны ли стрелки вперед
  46. if ($page != $total) $nextpage = ' <a href= ./page?page='. ($page + 1) .'>></a>
  47.                                   <a href= ./page?page=' .$total. '>>></a>';
  48.  
  49. // Находим две ближайшие станицы с обоих краев, если они есть
  50. if($page - 2 > 0) $page2left = ' <a href= ./page?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
  51. if($page - 1 > 0) $page1left = '<a href= ./page?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
  52. if($page + 2 <= $total) $page2right = ' | <a href= ./page?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
  53. if($page + 1 <= $total) $page1right = ' | <a href= ./page?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  54.  
  55. // Вывод меню
  56. echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
  57. ?>
и такая ошибка
faultCode0faultStringParse error:syntax error, unexpected '}' in www/html/pages1.php on line 13
(Добавление)
но куда убрать закрывающую скобку не знаю
(Добавление)
если просто пишу $page=$_GET['page']; говорит
неопределенная переменная
 
 Top
Sail
Отправлено: 04 Сентября, 2014 - 15:59:05
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




DOciK пишет:
но куда убрать закрывающую скобку не знаю
Скобку надо после точки с запятой поставить.
И блок
добавить к тому if'у.
И определитесь всё-таки с параметром в URL: page= или pages=
Что пишете в строке браузера/ссылке для перехода?

(Отредактировано автором: 04 Сентября, 2014 - 16:03:07)

 
 Top
DOciK
Отправлено: 04 Сентября, 2014 - 16:15:04
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Спасибо, сейчас попробую
(Добавление)
Вот такие ошибки выдал
faultCode0faultStringWarning:mysql_fetch_array() expects parameter 1 to be resource, boolean given in www/html/pages1.php on line 31

faultCode0faultStringNotice:Undefined variable: page2left in www/html/pages1.php on line 59
faultCode0faultStringNotice:Undefined variable: page1left in www/html/pages1.php on line 59
faultCode0faultStringNotice:Undefined variable: page1right in www/html/pages1.php on line 59
faultCode0faultStringNotice:Undefined variable: page2right in www/html/pages1.php on line 59
faultCode0faultStringNotice:Undefined variable: nextpage in www/html/pages1.php on line 59
 
 Top
RickMan
Отправлено: 04 Сентября, 2014 - 16:33:54
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




После
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM test_tab LIMIT $start, $num");

сделай

Так как $result вернуло ошибку а не данные...
 
 Top
Sail
Отправлено: 04 Сентября, 2014 - 16:34:54
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




DOciK пишет:
faultCode0faultStringWarning:mysql_fetch_array() expects parameter 1 to be resource, boolean given in www/html/pages1.php on line 31

Сообщает, что функция mysql_fetch_array() ожидала в качестве параметра ресурс. Вместо этого ей подсунули значение типа boolean.
Следовательно, не отработал как ожидалось от него предшествующий ей вызов функции mysql_query().
Вызов функции mysql_error() обычно помогает узнать, какая ошибка возникла в ходе выполнения запроса к базе.
 
 Top
DOciK
Отправлено: 04 Сентября, 2014 - 16:37:58
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Добавил то что вы сказали и выдал такое:
1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-10, 10' at line 1
faultCode0faultStringWarning:mysql_fetch_array() expects parameter 1 to be resource, boolean given in www/html/pages1.php on line 32
 
 Top
RickMan
Отправлено: 04 Сентября, 2014 - 16:41:49
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM test_tab LIMIT $start, $num");

В этом запросу $start стал отрицательным числом (-10), а такого быть не может. Формирвоание переменной надо исправить.
(Добавление)
PHP:
скопировать код в буфер обмена
  1. if(empty($page) or $page < 0) $page = 1;

замените на
PHP:
скопировать код в буфер обмена
  1. if(empty($page) or $page <= 0){ $page = 1; }

(Отредактировано автором: 04 Сентября, 2014 - 16:43:38)

 
 Top
DOciK
Отправлено: 04 Сентября, 2014 - 16:49:52
Post Id


Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Выдает ту же ошибку
1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-10, 10' at line 1faultCode0faultStringWarning:mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/html/pages1.php on line 32
 
 Top
RickMan
Отправлено: 04 Сентября, 2014 - 16:53:51
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




PHP:
скопировать код в буфер обмена
  1. if($page > $total) $page = $total;

замените на:
PHP:
скопировать код в буфер обмена
  1. if($page && $page > $total){ $page = $total; }
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB