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

Форум PHP

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

 

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

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

тема: постраничная навигация
 
 автор: Medulla   (04.10.2007 в 10:16)   письмо автору
 
 

хочу реализовать постраничную навигацию, как на этом форуме.
допустим, чтобы после [17]-[32] следовало ..., а затем посл. 8 новостей.
как это сделать?


include "config_news.php";
$pnumber = 8;
   
 if(isset($_GET['page'])) $page = $_GET['page'];
 else $page = 1;

$start = (($page-1)*$pnumber );


    $query = "SELECT `news_id`, `title`, `text2`, `text`, date_format(`date`,'%e.%m.%Y %H:%i') as `newdate` FROM news ORDER BY date DESC LIMIT $start, $pnumber";
    $prd = mysql_query($query);
    if(!$prd) exit(mysql_error());

    if(mysql_num_rows($prd) > 0)
    {

      while($row = mysql_fetch_array($prd))
      {

echo  "<tr height=12px; width=430px ><td align=left background=bg.gif> &nbsp; <FONT COLOR=#ffffff> ".$row['newdate']."".' '."".stripslashes($row['title'])."</FONT></td></tr>";
echo "<tr width= 430px> <td> ".stripslashes($row['text'])."</td></tr>";
echo '<tr width: 425px><td align=right>  <a href="one_news2.php?news_id='.$row['news_id'].'">подробнее</a></td></tr>';

      }
     
      echo "</table>";
    }

 $query = "SELECT COUNT(*) FROM news";
    $tot = mysql_query($query);
    if(!$tot) exit(mysql_error());
    $total = mysql_result($tot,0);
    $number = (int)($total/$pnumber);
    if((float)($total/$pnumber) - $number != 0) $number++;


    for($i = 1; $i <= $number; $i++)
    {
      if($i != $number)
      {
        if($page == $i)
        {
          echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]&nbsp;";
        }
        else
        {
           echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
                        (($i - 1)*$pnumber + 1)."-".
                        $i*$pnumber."]</a>&nbsp;";
        }
      }
      else
      {
        if($page == $i)
        {
          echo "[".(($i - 1)*$pnumber + 1)."-".($total)."]&nbsp;";
        }
        else
        {
            echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
                        (($i - 1)*$pnumber + 1)."-".
                        ($total)."]</a>&nbsp;";
        }
      }
    }

mysql_close($connection);

   
 
 автор: cheops   (04.10.2007 в 10:58)   письмо автору
 
   для: Medulla   (04.10.2007 в 10:16)
 

Можно поступить следующим образом
<?php
  
include "config_news.php"

  
$pnumber 8
  
$page_link 3

  
if(empty($_GET['page'])) $page 1;
  else 
$page $_GET['page'];
  
$begin = ($page 1)*$pnumber;

  
$query "SELECT `news_id`, 
                   `title`, 
                   `text2`, 
                   `text`, 
                   date_format(`date`,'%e.%m.%Y %H:%i') as `newdate` 
            FROM news 
            ORDER BY date DESC 
            LIMIT 
$begin$pnumber"
  
$prd mysql_query($query); 
  if(!
$prd) exit(mysql_error()); 

  if(
mysql_num_rows($prd) > 0
  { 
    while(
$row mysql_fetch_array($prd)) 
    { 
      echo  
"<tr height=12px; width=430px >
             <td align=left background=bg.gif> &nbsp; 
             <FONT COLOR=#ffffff> "
.$row['newdate'].
             
"".' '."".stripslashes($row['title'])."</FONT></td></tr>"
      echo 
"<tr width= 430px> <td> ".stripslashes($row['text'])."</td></tr>"
      echo 
'<tr width: 425px><td align=right>  
            <a href="one_news2.php?news_id='
.$row['news_id'].'">подробнее</a></td></tr>'
    } 
    echo 
"</table>"
  } 

  
$query "SELECT COUNT(*) FROM news"
  
$tot mysql_query($query); 
  if(!
$tot) exit(mysql_error()); 
  
$total mysql_result($tot,0); 

  
pager($page$total$pnumber$page_link"");

  
mysql_close($connection);

  function 
pager($page$total$pnumber$page_link$parameters)
  {
    
// Вычисляем число страниц в системе
    
$number = (int)($total/$pnumber);
    if((float)(
$total/$pnumber) - $number != 0$number++;
    
// Проверяем есть ли ссылки слева
    
if($page $page_link 1)
    {
      echo 
"<a class=menuinfo href=$_SERVER[PHP_SELF]?page=1{$parameters}> <nobr>[1-$pnumber]</nobr></a>&nbsp;<em class=currentpage><nobr>&nbsp;...&nbsp;</nobr> </em>&nbsp;";
      
// Есть
      
for($i $page $page_link$i<$page$i++)
      {
          echo 
"&nbsp;<a class=menuinfo href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
      }
    }
    else
    {
      
// Нет
      
for($i 1$i<$page$i++)
      {
          echo 
"&nbsp;<a class=menuinfo href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
      }
    }
    
// Проверяем есть ли ссылки справа
    
if($page $page_link $number)
    {
      
// Есть
      
for($i $page$i<=$page $page_link$i++)
      {
        if(
$page == $i)
          echo 
"<em class=currentpage><nobr>&nbsp;[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]&nbsp;</nobr> </em>";
        else
          echo 
"&nbsp;<a class=menuinfo href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
      }
      echo 
"<em class=currentpage><nobr>&nbsp;...&nbsp;</nobr> </em>&nbsp;<a class=menuinfo href=$_SERVER[PHP_SELF]?page=$number{$parameters}> <nobr>[".(($number 1)*$pnumber 1)."-$total]</nobr></a>&nbsp;";
    }
    else
    {
      
// Нет
      
for($i $page$i<=$number$i++)
      {
        if(
$number == $i)
        {
          if(
$page == $i)
            echo 
"<em class=currentpage><nobr>&nbsp;[".(($i 1)*$pnumber 1)."-$total]&nbsp;</nobr></em>";
          else
            echo 
"&nbsp;<a class=menuinfo href=$_SERVER[PHP_SELF]?page=$i{$parameters}>[".(($i 1)*$pnumber 1)."-$total]</a>&nbsp;";
        }
        else
        {
          if(
$page == $i)
            echo 
"<em class=currentpage><nobr>&nbsp;[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]&nbsp;</nobr> </em>";
          else
            echo 
"&nbsp;<a class=menuinfo href=$_SERVER[PHP_SELF]?page=$i{$parameters}> <nobr>[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]</nobr></a>&nbsp;";
        }
      }
    }
  }
?>

   
 
 автор: Medulla   (04.10.2007 в 14:49)   письмо автору
 
   для: cheops   (04.10.2007 в 10:58)
 

спасибо большое)

   
Rambler's Top100
вверх

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