Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Навигация по страницам
 
 автор: off   (05.09.2005 в 21:16)   письмо автору
 
 

Ворос по статье http://www.softtime.ru/info/articlephp.php?id_article=33.
Есть допустим 7 страниц.
Как вместо << < 1|2|3|4 > >> сделать просто список страниц, т.е 1 2 3 4 5 6 7 ?

   
 
 автор: off   (05.09.2005 в 21:18)   письмо автору
 
   для: off   (05.09.2005 в 21:16)
 

Извинте, случайно не в ту тему, но все равно ответьте плиз!!

   
 
 автор: cheops   (06.09.2005 в 00:58)   письмо автору
 
   для: off   (05.09.2005 в 21:16)
 

Для этого последний блок следует заменить
<?php
      $number 
= (int)($total/$num);
      if((float)(
$total/$num) - $number != 0$number++;
      for(
$i 1$i<=$number$i++)
      {
        if(
$page == $i)
          echo 
"&nbsp;$i&nbsp;";
        else
          echo 
"&nbsp;<a href=index.php?page=".$i.">$i</a>&nbsp;";
      }
?>

   
 
 автор: off   (06.09.2005 в 19:26)   письмо автору
 
   для: cheops   (06.09.2005 в 00:58)
 

Чего-то не работает. Есть в БД 11 запсей.

У меня $num=10;

А он выводит эти 10 записей, а ссылку на стр. 2 (где последняя 11 запись) не выводит.

   
 
 автор: cheops   (06.09.2005 в 19:56)   письмо автору
 
   для: off   (06.09.2005 в 19:26)
 

Попробуйте уменьшить значение $num скажем до 2 - как изменяется поведение скрипта?

   
 
 автор: off   (06.09.2005 в 22:18)   письмо автору
 
   для: cheops   (06.09.2005 в 19:56)
 

кол-во сообщ как я уже говорил 11.
если num=2, то показывает 3 стр.
если num=1, то показывает 13 стр.

   
 
 автор: cheops   (07.09.2005 в 13:24)   письмо автору
 
   для: off   (06.09.2005 в 22:18)
 

Вы бы не могли привести тот код, который у вас сейчас имеется, чтобы его можно было потестировать на локальной машине?

   
 
 автор: off   (09.09.2005 в 19:28)   письмо автору
 
   для: cheops   (07.09.2005 в 13:24)
 


<?
$num
2;
$page $_GET['page']; 
if (
$page==""$page=0;
$result mysql_query("SELECT COUNT(*) FROM c_news_cat"); 
$posts mysql_result($result,0); 
$total intval(($posts 1) / $num) +1;
$page intval($page); 
if(empty(
$page) or $page 0$page 1
if(
$page $total$page $total
$start $page $num $num
?>



<?
//Делаем запрос из БД
$sql "SELECT * FROM c_news_cat order by date LIMIT $start$num";
$result mysql_query($sql);
... 
ну и выводим записи...
?>



<?
//Постраничная навигация

$number = (int)($total/$num); 
      if((float)(
$total/$num) - $number != 0$number++; 
      for(
$i 1$i<=$number$i++) 


if(
$page == $i
echo 
"&nbsp;$i&nbsp;"
else echo 
"&nbsp;<a style='background-color:CDEDF9' href= ?mod=".$mod."&lang=".$lang_site."&page=".$i." class=pages>&nbsp;$i&nbsp;</a>&nbsp;"

?>


Вот он сам код.

   
 
 автор: cheops   (10.09.2005 в 12:15)   письмо автору
 
   для: off   (09.09.2005 в 19:28)
 

Вот эти строчки
<?php
  $posts 
mysql_result($result,0); 
  
$total intval(($posts 1) / $num) +1;
?>

замените на
<?php
  $total 
mysql_result($result,0); 
?>

   
 
 автор: off   (11.09.2005 в 12:41)   письмо автору
 
   для: cheops   (10.09.2005 в 12:15)
 

огромное спасибо!

   
 
 автор: Денис   (07.09.2005 в 12:03)   письмо автору
 
   для: off   (05.09.2005 в 21:16)
 

попробуй разобраться, прочитав эти сообщения:
http://softtime.ru/forum/read.php?id_forum=1&id_theme=4163&page=1
http://softtime.ru/forum/read.php?id_forum=1&id_theme=3044&page=1
http://softtime.ru/forum/read.php?id_forum=1&id_theme=2493&page=1

   
 
 автор: off   (10.09.2005 в 11:36)   письмо автору
 
   для: Денис   (07.09.2005 в 12:03)
 

cheops, ну что ты посмотрел код?

   
 
 автор: Эдуард   (11.09.2005 в 16:29)   письмо автору
 
   для: off   (10.09.2005 в 11:36)
 

Тут всё немножко по другому. Вот код который действительно работает:

$num = 10;
$page = $_GET['page'];
$result = mysql_query("SELECT * FROM basa"); 
$posts = mysql_num_rows($result);
$total = intval(($posts - 1) / $num) + 1;
$page = intval($page);
if(empty($page) or $page < 0) 
{
$page = 1; 
}
if($page > $total) 
{
$page = $total;
}
$start = $page * $num - $num;
$result = mysql_query("SELECT * FROM basa LIMIT $start, $num");
while ( $postrow[] = mysql_fetch_array($result))
?>
<center><table width="700" border="1" bgcolor="#FFFFFF">
<?php 
for($i 0$i $num$i++) 

echo 
"<tr>
     <td>Объявление добавил: "
.$postrow[$i]['name']."<br>
     Id объявления: "
.$postrow[$i]['id']."<br>
     E-mail: "
.$postrow[$i]['email']."<br>
     Url сайта: <a href =http://"
.$postrow[$i]['url'].">".$postrow[$i]['url']."</a><br>
     Объявление: "
.$postrow[$i]['objav']."<br>
     Яндекс цитирования: <img src=http://www.yandex.ru/cycounter?http://"
.$postrow[$i]['url']." width=88 height=31 alt=Яндекс цитирования border=0>
</td>
  </tr>"


?>
</table></center>
<?php
if ($page != 1
{
$pervpage "<a href= ./index.html?page=1><<</a> 
                               <a href= ./index.html?page="
. ($page 1) ."><</a> ";

if (
$page != $total
{
$nextpage " <a href= ./index.html?page=". ($page 1) .">></a> 
<a href= ./index.html?page="
.$total.">>></a>"
}
if(
$page 0
{
$page2left " <a href= ./index.html?page=". ($page 2) .">". ($page 2) ."</a> | ";

if(
$page 0
{
$page1left "<a href= ./index.html?page=". ($page 1) .">". ($page 1) ."</a> | ";

if(
$page <= $total
{
$page2right " | <a href= ./index.html?page=". ($page 2) .">". ($page 2) ."</a>";

if(
$page <= $total
{
$page1right " | <a href= ./index.html?page=". ($page 1) .">". ($page 1) ."</a>";

echo 
"$pervpage $page2left $page1left <b> $page </b> $page1right $page2right $nextpage";
?>

   
 
 автор: Ziq   (12.09.2005 в 07:13)   письмо автору
 
   для: Эдуард   (11.09.2005 в 16:29)
 

C тысячей IF-оф некрасиво как-то. А что если надо будет вывести не 5 цифр, а 15. Это пол страницы IF-ами займешь. У меня где-то валялась, помоему, реализованная на циклах. Если кому надо выложу.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования