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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Anton63
Отправлено: 21 Июля, 2009 - 08:07:37
Post Id


Новичок


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


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




Помогите...
Никак не могу понять в чём проблема...
Это скрипт по выводу 5 сообщений на каждую страницу из БД.
Ошибок никаких не выводит, а вывод всё равно не тот...
Вот листинг
PHP:
скопировать код в буфер обмена
  1.  
  2. $db=mysql_connect('localhost', 'root', '')  or die("Ошибка: ".mysql_error());
  3. mysql_select_db('top10', $db)  or die("Ошибка: ".mysql_error());
  4.  
  5. $max=5;
  6. $res=mysql_query("SELECT head FROM ansvers", $db)  or die("Ошибка: ".mysql_error());
  7. //Создаём массив элементов БД
  8. $row=mysql_fetch_array($res)  or die("Ошибка: ".mysql_error());
  9. //Получаем количество элементов в массиве
  10. $mass = mysql_num_rows($res)  or die("Ошибка: ".mysql_error());
  11. //Делим на количество отображаемых на странице изображений и округляем в большую сторону
  12. $pages = ceil($mass/$max);
  13. //Принимаем входящую переменную, которая указывает номер страницы
  14. $_p = $_GET['page'];
  15. //Создаем вспомогательные переменные для навигации, если переменная $_p не задана
  16. if(!$_p OR $_p ==''){
  17. //Нижний предел
  18. $nmin = 0;
  19. //Верхний предел
  20. $nmax=$max-1;
  21. echo 'Анкеты<BR>';
  22. for($i=$nmin;$i<=$nmax;$i++){ // Выводим head по 5 штук на странице
  23.     if($row[$i]){
  24. echo $row[$i]."<BR>";
  25. }
  26. }
  27. }
  28. else {//Переменная $_p создана
  29. $nmin = ($_p*$max)-$max ;
  30. $nmax=($max*$_p)-1;
  31. echo 'Анкеты<BR>';
  32. for($i=$nmin;$i<=$nmax;$i++){ // Выводим head по 5 штук на странице
  33.     if($row[$i]){
  34. echo $row[$i]."c<BR>";
  35. }
  36. }
  37. }
  38. //Выводим номера страниц
  39. echo "<br/><br/>";
  40. for($n=1;$n<=$pages;$n++) {
  41.  
  42. if($_p != $n) {echo '<a href="ansver.php?page='.$n.'">['.$n.']</a>&nbsp;';}
  43. if($_p == $n) {echo '['.$n.']&nbsp;';}
  44. }
  45.  


У меня выводятся номера страниц... а самих заголовков нет...
 
 Top
JustUserR
Отправлено: 21 Июля, 2009 - 13:37:45
Post Id



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


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


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




Даже страшно читать код - почему бы для выбора пяти элементов не использовать конструкрцию LIMIT $P,5 где $P это номер страницы начиная с нуля


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Anton63
Отправлено: 22 Июля, 2009 - 08:18:04
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $max=5;
  3. $res=mysql_query("SELECT head FROM ansvers", $db)  or die("Ошибка: ".mysql_error());
  4. //Получаем количество элементов в массиве
  5. $mass = mysql_num_rows($res)  or die("Ошибка: ".mysql_error());
  6. //Делим на количество отображаемых на странице сообщений и округляем в большую сторону
  7. $pages = ceil($mass/$max);
  8. //Принимаем входящую переменную, которая указывает номер страницы
  9. $_p = $_GET['page'];
  10. //Создаем вспомогательные переменные для навигации, если переменная $_p не задана
  11. if(!$_p OR $_p ==''){
  12. //Нижний предел
  13. $nmin = 0;
  14. //Верхний предел
  15. $nmax=$max-1;
  16. echo 'Анкеты<BR>';
  17. $res=mysql_query("SELECT head FROM ansvers LIMIT $nmin, $nmax", $db)  or die("Ошибка: ".mysql_error());
  18. while ($row = mysql_fetch_assoc($res)) // Выводим head по 5 штук на странице
  19. {
  20.      echo $row['head']."<br/>";
  21. }
  22. }
  23. else {//Переменная $_p создана
  24. $nmin = ($_p*$max)-$max ;
  25. $nmax=($max*$_p)-1;
  26. echo 'Анкеты<BR>';
  27. $res=mysql_query("SELECT head FROM ansvers LIMIT $nmin, $nmax", $db)  or die("Ошибка: ".mysql_error());
  28. while ($row = mysql_fetch_assoc($res)) // Выводим head по 5 штук на странице
  29. {
  30.      echo $row['head']."<br/>";
  31. }
  32. }
  33. //Выводим номера страниц
  34. echo "<br/><br/>";
  35. for($n=1;$n<=$pages;$n++) {
  36.  
  37. if($_p != $n) {echo '<a href="ansver.php?page='.$n.'">['.$n.']</a>&nbsp;';}
  38. if($_p == $n) {echo '['.$n.']&nbsp;';}
  39. }
  40.  

Значит так???
Так конечно лучше... хоть что то выводит... всего у меня 3 страницы получается(14 анкет)... на первой выводятся 4 анкеты, на второй выводятся 11 анкет... и на третей странице 11 анкет... где то всё равно ошибка...

(Отредактировано автором: 22 Июля, 2009 - 08:19:09)

 
 Top
JustUserR
Отправлено: 22 Июля, 2009 - 14:02:01
Post Id



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


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


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




Честно сказать ваш код запутан и ошибка появляются скорее всего изза "ошибки охранного поста" - когда значение на единицу больше или меньше чем надо
Вот что я вам посоветую (Как обычно поступают при постраничнй навигции)
1 Количество записей узнаем так SELECT COUNT(*) FROM ansvers и потом в mysql_result(0,0) лежит это количетсов записей - $all_pages
2 Вводим максимальное число записей на страницу - менье него может быть выведено толькл записи на последней из всех страниц - $max_entries
3 Вводим переменную-номер страницы НАЧИНАЯ С НУЛЯ (Когда выводим пользователю просто можем прибавить единицу чтобы было естественнее)
4 Запрос для каждой страницы - SELECT * FROM ansvers LIMIT $page*$max_entries, $page
5 Проверка на существование следующей страницы ($page+1)*$max_entries<$all_pages


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB