За последние 24 часа нас посетили 45782 программиста и 1273 робота. Сейчас ищут 1186 программистов ...

Помогите с постраничным выводом

Тема в разделе "PHP для новичков", создана пользователем usik, 27 сен 2008.

  1. usik

    usik Активный пользователь

    С нами с:
    22 сен 2008
    Сообщения:
    29
    Симпатии:
    0
    В общем есть БД, в которой одна таблица. В этой таблице записаны имена людей. При запуске данного сценария появляется рубрикатор. Например, щелкаю на ,букву 'В' и появляются имена людей которые начинаются с этой буквы.
    Я хочу сделать постраничный вывод.

    Итак , запускаю этот скрипт , появляется рубрикатор. Нажимаю на букву, что происходит.. А происходит у меня следующее- При нажатии на букву идет запрос который отбирает из таблице первые n записей (в моем случае 2),
    после чего он выводит их, а также выводит общее количество страниц в виде гипперсылок(1,2,3). Я хочу просмотреть
    следующие две записи. Нажимаю на цифру 2 и ничего не происходит. Я думаю потому ,что во время этого нажатия я определяю только переменную page, а переменную Selected нет. Вопрос у меня в том как определить две переменные
    и $page и $Selected сразу ? Думаю ,что это нужно делать в этой строчке <a href=Main.php?page=$i>$i</a>

    Код (Text):
    1.  
    2. <?php
    3.  
    4. function MakeQuery($Selected,$page)
    5.   {
    6.     if(isset($Selected))
    7.     {
    8.          $Selected=rawurldecode($Selected);
    9.           if (!mysql_connect("localhost", "root",'1111'))
    10.             echo "Невозможно присоединиться к серверу";
    11.  
    12.           $BaseName="Names";
    13.           mysql_select_db($BaseName);
    14.           mysql_query("SET NAMES cp1251");
    15.           $Selected=mysql_real_escape_string($Selected);
    16.           $result=mysql_query("Select Name from table1 where Name like '$Selected%'");
    17.  
    18.           $RecN=2;
    19.           $NumRows=mysql_num_rows($result);
    20.  
    21.            if (!isset($page))
    22.             $page=0;
    23.  
    24.              $k=ceil($NumRows/$RecN);//Определяю количество страниц
    25.            
    26.             echo "<table><tr>";
    27.              for ($i=1;$i<=$k;$i++)
    28.               {
    29.                echo "<td bgcolor=FFCC33 width=15 align=center>
    30.                       <a href=Main.php?page=$i>$i</a> // Здесь в виде таблицы появляются номера страниц,тут нужно сделать так чтобы определялся не только параметр page, но и Selected .
    31.                      
    32.                      </td>";
    33.               };
    34.              echo "</tr></table>";
    35.  
    36.           $records=$page*$RecN;
    37.           $q="Select Name from Table1 where Name like '$Selected%' limit ".$records.", $RecN";
    38.           echo "$q<br>";
    39.           $result=mysql_query($q);
    40.  
    41.            while ($s=mysql_fetch_array($result))
    42.             echo "$s[Name]<br>";
    43.  
    44.     }
    45.   };
    46. ?>
    47.  
    48.  
    49.  
    50. <HTML>
    51.    <Head>
    52.      <Title> First </Title>
    53.    </Head>
    54.  
    55.  <BODY>
    56.  
    57.   <?php
    58.     MakeQuery($_GET['Selected'],$_GET['page']);
    59.   ?>
    60.  
    61.   <div>
    62.     <a href="Main.php?OtraslSelected=<?=rawurlencode('А');?>">А</a>
    63.     <a href="Main.php?OtraslSelected=<?=rawurlencode('Б');?>">Б</a>
    64.     <a href="Main.php?OtraslSelected=<?=rawurlencode('В');?>">В</a>  
    65.  </div>
    66.  
    67.  </BODY>
    68.  
    69.  
    70.  
    71. </HTML>
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  3. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Тему не читал,
    $data - array('page_num'=> Кол-во публикаций на странице,'page_block'=>Кол-во ссылок в среднем блоке пэйджера)
    $n- текущая страница (формата от 1 и до бесконечности)
    $tpl - шаблон ссылки ( например /page/{i}/ или index.php?page={i} где {i} будет заменено на номер)
    $all - всего публикаций
    PHP:
    1. <?
    2. function pager($data,$n,$tpl,$all) {
    3.   $max=ceil($all/$data['page_num']);
    4.   if ($max<=0) $max=1;
    5.   $ot=$n-2;
    6.   if ($ot<=0) $ot=1;
    7.   $po=$ot+$data['page_block']-1;
    8.   if ($po>$max) $po=$max;
    9.   $page='';
    10.   if ($po==$max) $ot=$po+1-$data['page_block'];
    11.   if ($ot<=0) $ot=1;
    12.   if ($ot==2) $page.='...';
    13.   if ($ot>2) {
    14.       $page.="<a href='".str_replace('{i}','1',$tpl)."'>[1]</a>";
    15.       if ($ot>3) $page.="<a href='".str_replace('{i}','2',$tpl)."'>[2]</a>";
    16.       $page.='...';
    17.   }
    18.   for($i=$ot;$i<=$po;$i++) {
    19.       if ($n==$i) {
    20.         $page.="<b>[$i]</b>";
    21.       }else {
    22.         $page.="<a href='".str_replace('{i}',$i,$tpl)."'>[$i]</a>";
    23.      }
    24.   }
    25.   if ($po<=$max-2){
    26.        $page.='...';
    27.        if ($po<$max-2) $page.="<a href='".str_replace('{i}',($max-1),$tpl)."'>[".($max-1)."]</a>";
    28.        $page.="<a href='".str_replace('{i}',$max,$tpl)."'>[$max]</a>";
    29.   }
    30.   if ($po==$max-1) $page.='...';
    31.   return $page;
    32. }
    33. ?>