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]   

> Без описания
Andrey5555
Отправлено: 04 Января, 2008 - 16:08:30
Post Id


Частый гость


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


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




Мне надо сделать так что бы на странице выводилось 1 сообщение (скрипт называеться show_announcement.php). Сообщений много.

Вот то что у меня получилось, но здесь что то не такю Исправьте пожалуйста.

<?php
include ("mysql.php");
$section_id = $_GET['id'];
$section_id = mysql_real_escape_string($section_id);
$section_id = (int)$section_id;
$query = mysql_query ("SELECT id, section, type, text, name, email, date FROM announcements WHERE section = '$section_id' ORDER BY date desc");
while (list ($id, $section, $type, $text, $name, $email, $date) = mysql_fetch_array ($query))
{
echo "<table width='300' border ='1' >";
echo "<tr>";
echo "<td width='150'>$type</td><td><div align='right'>$date</div></td>";
echo "</tr>";
echo "</table>";
echo "<table width='300' border ='1'>";
echo "<tr>";
echo "<td>$text</td>";
echo "</tr>";
echo "</table>";
echo "<table width='300' border ='1'>";
echo "<tr>";
echo "<td width='150'>$name</td><td><div align='right'><a href='mailto:$email'>$email</div></td>";
echo "</table>";
echo "<br>";
}
$num = mysql_num_rows ($query);
$page = "0";
if ($num > 0)
{
$page = $page + 1;
echo "<a href='show_announcement?page=$page'>$page </a>";
}
?>
 
 Top
T-Mon
Отправлено: 04 Января, 2008 - 17:52:57
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


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




Лень заниматься твоим кодом, прикрепляю файл, мной недавно написаный, там как реализована постраничная навигация, если сумеешь создать необходимые базы данных, сможешь даже лицезреть результат.

P.S. Присмотрись к функциям show_navi(), jump_pages(), avoid_errors() и ко всем, которые используются ними.
Скачать файл: editor.rar
Скачан раз: 232
 
 Top
Нирвана
Отправлено: 04 Января, 2008 - 22:35:02
Post Id



Новичок


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


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




T-Mon пишет:
Лень заниматься твоим кодом, прикрепляю файл, мной недавно написаный, там как реализована постраничная навигация, если сумеешь создать необходимые базы данных, сможешь даже лицезреть результат.

P.S. Присмотрись к функциям show_navi(), jump_pages(), avoid_errors() и ко всем, которые используются ними.


Слишком круто, а нет ничего попроще, для тупых, как я Улыбка))))
Мне тожа нуно разбить списки по страницам, но простым способом.\n\n(Добавление)
Вот - накопал в инете, может кому сгодиться:

PHP:
скопировать код в буфер обмена
  1. /*Простейшая функция постраничного вывода, назавём её просто PagePrint*/
  2. function PagePrint($start, $count) {
  3. $HrefPage='';//----Создаём переменную которая будет содержать постраничный вывод
  4. $number=10;//----Количество записей на странице
  5. /*Подсчитываем количество страниц, где $count - общее количество записей, $number - количество записей на странице*/
  6. $CountPage=(int)(($count+$number-1)/$number);
  7. /*Перебираем в цикле все страницы*/
  8. for($link=1; $link <= $CountPage; $link++):
  9. $PageStart=($link - 1) * $number;//----Рассчитываем точку выборки из базы данных
  10. $HrefPage=$HrefPage."<a href=".getenv('PHP_SELF')."?start=".$PageStart." target=_parent>".$link."</a>";//--Формируем ссылки
  11. endfor;
  12. return $HrefPage;
  13. }


БОЛЕЕ СЛОЖНАЯ:

PHP:
скопировать код в буфер обмена
  1. function PagePrint($variable) {
  2. global $beginPage, $endPage;//------Объявляем глобальные переменные, отвечающие за ссылку на первую и последнюю страницу
  3. $href='';//-----Перемменная содержащая в себе постраничный вывод
  4. $separator=' ';//-----Переменная задающая разделитель между ссылками, по умолчанию пробел
  5. $style='style="text-decoration:none" style="color:orange" style="font-weight:bold"';//-------Задаёт стиль текущей страницы
  6. $stylePage='style="text-decoration:none" style="color:blue" style="font-weight:bold"';//------Задаёт стиль ссылки на первую и последнюю страницу
  7. if(is_array($variable))://------Проверяем тип array
  8. #Перебираем массив и присваиваем $number - количество записей, $start - точка извлечения, $pageCount - количество записей, $andere - другие свойства ссылки, $class - стиль для ссылок, $showLink - количество ссылок на странице
  9. list($number, $start, $pageCount, $andere, $class, $showLink)=$variable;
  10. #Обрабатывам $start
  11. if(empty($start) && !is_int($start) && !is_numeric($start)) $start=0;
  12. else $start=$start;
  13. #Обрабатываем $number
  14. if(empty($number) && !is_int($number) && !is_numeric($number)) $number=10;
  15. else $number=$number;
  16.  
  17.  
  18. $page=(($start/10)+1);//-------Рассчитывавем номер страницы
  19. $count=ceil($pageCount/$number);//------Количество страниц
  20.  
  21. #Вывод сслыки на первую и последнюю страницы
  22. if($count!==1) :
  23. $beginPage="<a href="".getenv('PHP_SELF')."?start=0".$andere."" ".$stylePage.">перв</a>";//--------Первая страница
  24. $endPage="<a href="".getenv('PHP_SELF')."?start=".(($count-1)*10).$andere."" ".$stylePage.">посл</a>";//-----Последняя страница
  25. else: FALSE;
  26. endif;
  27.  
  28. if($pageCount==10): return False;
  29. else:
  30. #Постраничный вывод
  31. $begin=$page - intval($showLink/2);//------Определяет номер страницы с которой выводить
  32. for($j=0; $j<=$showLink; $j++):
  33. $i=$begin+$j;//------Номер страницы
  34. #Защищает скрипт если $<0, будет до тех пор увеличивать пока $showPage=1
  35. if($i<1):
  36. $showLink++;
  37. continue;
  38. endif;
  39. #Постраничный вывод
  40. if($i>$count) break;//-----Защита если количество $i>возможных записей
  41. if($i==$page) $href=$href." <a ".$style." >".$i."</a>";//------Вывод текущей страницы
  42. else $href=$href." <a href="".getenv('PHP_SELF')."?start=".(($i - 1)*10).$andere."" ".$class.">".$i."</a> ";//------Вывод следующих страниц
  43. endfor;
  44. return $href;
  45. endif;
  46. endif;
  47. }
\n\n(Добавление)
ВОТ ЕЩЕ ОДИН ВАРИАНТ:

PHP:
скопировать код в буфер обмена
  1. // кол-во строк в страницах
  2. $in_page = 10;
  3.  
  4. // получаем количество строк
  5. $amount = @mysql_result(mysql_query("SELECT count(id) as goods_total FROM goods"),0);
  6.  
  7. // рисуем навигационную строку и пишем начало таблицы
  8. print("<div align=center>". <b>draw_bar($page, $amount, $in_page,
  9.     "goods.php?page=")</b>. "</div>n<table>");
  10.  
  11. // формируем запрос к базе
  12. $goods_result = mysql_query("SELECT id, name, description, price FROM goods
  13.    ORDER BY name, price ". <b>get_limit($page, $amount, $in_page)</b>);
  14.  
  15. // получаем номер для нумерованного списка
  16. $count = <b>get_count_limit($page, $amount, $in_page)</b>;
  17.  
  18. // выводим строки
  19. while ($good_row = mysql_fetch_array($goods_result)) {
  20.   $count++;
  21.   print ("<tr");
  22.  
  23.   // фон каждой второй строки — серым цветом
  24.   if ($count/2==intval($count/2))
  25.     print (" bgcolor=#e1e1e1");
  26.   print ("><td align=right>$count.</td><td>${good_row[name]}
  27.    <br>${good_row[description]}</td><td align=right>${good_row[price]}</td></tr>n");
  28.  
  29.   };
  30.  
  31. // конец таблицы и нижняя навигационная строка
  32. print("</table><div align=center>". <b>draw_bar($page, $amount,
  33.     $in_page, "goods.php?page=")</b>. "</div>n");
\n\n(Добавление)
ВОТ ЕЩЕ ОДИН ВАРИАНТ:

PHP:
скопировать код в буфер обмена
  1. // кол-во строк в страницах
  2. $in_page = 10;
  3.  
  4. // получаем количество строк
  5. $amount = @mysql_result(mysql_query("SELECT count(id) as goods_total FROM goods"),0);
  6.  
  7. // рисуем навигационную строку и пишем начало таблицы
  8. print("<div align=center>". <b>draw_bar($page, $amount, $in_page,
  9.     "goods.php?page=")</b>. "</div>n<table>");
  10.  
  11. // формируем запрос к базе
  12. $goods_result = mysql_query("SELECT id, name, description, price FROM goods
  13.    ORDER BY name, price ". <b>get_limit($page, $amount, $in_page)</b>);
  14.  
  15. // получаем номер для нумерованного списка
  16. $count = <b>get_count_limit($page, $amount, $in_page)</b>;
  17.  
  18. // выводим строки
  19. while ($good_row = mysql_fetch_array($goods_result)) {
  20.   $count++;
  21.   print ("<tr");
  22.  
  23.   // фон каждой второй строки — серым цветом
  24.   if ($count/2==intval($count/2))
  25.     print (" bgcolor=#e1e1e1");
  26.   print ("><td align=right>$count.</td><td>${good_row[name]}
  27.    <br>${good_row[description]}</td><td align=right>${good_row[price]}</td></tr>n");
  28.  
  29.   };
  30.  
  31. // конец таблицы и нижняя навигационная строка
  32. print("</table><div align=center>". <b>draw_bar($page, $amount,
  33.     $in_page, "goods.php?page=")</b>. "</div>n");
 
 Top
Andrey5555
Отправлено: 05 Января, 2008 - 11:12:14
Post Id


Частый гость


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


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




T-Mon пишет:
Лень заниматься твоим кодом, прикрепляю файл, мной недавно написаный, там как реализована постраничная навигация, если сумеешь создать необходимые базы данных, сможешь даже лицезреть результат.

P.S. Присмотрись к функциям show_navi(), jump_pages(), avoid_errors() и ко всем, которые используются ними.



У тебя там слишком сложно.
Помогите.
 
 Top
Нирвана
Отправлено: 06 Января, 2008 - 21:20:13
Post Id



Новичок


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


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




Andrey5555 пишет:

У тебя там слишком сложно.
Помогите.


ДЕРЖИ РАБОЧИЙ КОД!!

PHP:
скопировать код в буфер обмена
  1.   // количество записей, выводимых на странице
  2.   $per_page=10;
  3.  
  4.   // получаем номер страницы
  5.   if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
  6.  
  7.   // вычисляем первый оператор для LIMIT
  8.   $start=abs($page*$per_page);
  9.  
  10.   $zapros2 = "SELECT * FROM `demo` ORDER by name";  
  11.   $result2 = mysql_query($zapros2, $soedinenie) or die('Невозможно сделать запрос');
  12.  
  13.   // составляем запрос и выводим записи
  14.   // переменную $start используем, как нумератор записей.
  15.   $q="SELECT * FROM `demo` LIMIT $start,$per_page";
  16.   $res=mysql_query($q) or die('Невозможно сделать запрос');
  17.  
  18.   $num = mysql_num_rows ($result2);
  19.  
  20.  
  21.   while ($row=mysql_fetch_array($res))
  22.        {
  23.          echo ++$start." ".$row['name'];
  24.   }
  25.  
  26.   // дальше выводим ссылки на страницы:
  27.   $q="SELECT count(*) FROM `demo` ORDER by name";
  28.   $res=mysql_query($q) or die('Невозможно сделать запрос');
  29.   $row=mysql_fetch_row($res);
  30.   $total_rows=$row[0];
  31.  
  32.   $num_pages=ceil($total_rows/$per_page);
  33.  
  34.   for ($i=1;$i<=$num_pages;$i++)
  35.      {
  36.        if ($i-1 == $page)
  37.          {
  38.            echo $i." ";
  39.      } else {
  40.                echo '<a href="'.$_SERVER['PHP_SELF'].'&page='.$i.'">'.$i."</a> ";
  41.      }
  42.   }  
 
 Top
Andrey5555
Отправлено: 07 Января, 2008 - 18:42:22
Post Id


Частый гость


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


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




Не работает. Админы спасайте!!!
 
 Top
Dastar
Отправлено: 07 Января, 2008 - 22:11:52
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Помню над подобной задачей целый день просидел... А ведь решил!
Воть мое решение:
http://forum.php.su/topic.php?fo...=35&topic=25


-----
Не знаешь - молчи.
 
 Top
Andrey5555
Отправлено: 08 Января, 2008 - 21:40:10
Post Id


Частый гость


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


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




Это получилось терь новая проблема.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include ("mysql.php");
  3. $section_id = $_GET['id'];
  4. $section_id = mysql_real_escape_string($section_id);
  5. $section_id = (int)$section_id;
  6. $query = mysql_query ("SELECT id, section, type, text, name, email, date FROM announcements WHERE section = '$section_id' ORDER BY date desc");
  7. while (list ($id, $section, $type, $text, $name, $email, $date) = mysql_fetch_array ($query))
  8. {
  9. echo "<table width='300' border ='1' >";
  10. echo "<tr>";
  11. echo "<td width='150'>$type</td><td><div align='right'>$date</div></td>";
  12. echo "</tr>";
  13. echo "</table>";
  14. echo "<table width='300' border ='1'>";
  15. echo "<tr>";
  16. echo "<td>$text</td>";
  17. echo "</tr>";
  18. echo "</table>";
  19. echo "<table width='300' border ='1'>";
  20. echo "<tr>";
  21. echo "<td width='150'>$name</td><td><div align='right'><a href='mailto:$email'>$email</div></td>";
  22. echo "</table>";
  23. echo "<br>";
  24. $get = mysql_query ("SELECT id FROM announcements");
  25. $allnum = mysql_num_rows ($get);
  26. $on_page = 10;
  27. if(!isset($_GET['page'])) $pages = 1;
  28. else
  29. $pages = ($_GET['page']);
  30. $begin = ($pages - 1) * $on_page;
  31. $str = ceil($allnum / $on_page);
  32. $get_s = mysql_query ("SELECT section, type, text, name, email, date FROM announcements WHERE section = '$section_id' ORDER BY date desc LIMIT $begin, 1");
  33. $num_s = mysql_num_rows($get_s);
  34. for($i=0;$i<$str;$i++)
  35. {
  36. $page = $i+1;
  37. echo "<a href=?page=$page>$page</a> ";
  38. }
  39. }
  40. ?>
  41.  



В адресной строке передаеться номер раздела для извлечения новости из бд. Но при переходе на след. или текущую страницу - передаеться номер страницы. Что делать?
 
 Top
Dastar
Отправлено: 09 Января, 2008 - 14:31:26
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




А переменные $query и $get_b должны быть эквалентны?


-----
Не знаешь - молчи.
 
 Top
Andrey5555
Отправлено: 09 Января, 2008 - 17:12:31
Post Id


Частый гость


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


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




Все решено. Вся проблема была в линке. Всем спасибо. Можно закрывать.
 
 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