Разбитие на страницы (php + mysql). Нужна помощь.

Discussion in 'PHP' started by dac_60, 11 Feb 2011.

  1. dac_60

    dac_60 New Member

    Joined:
    11 Feb 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Доброго всем утра.

    Появилась потребность разбить на страницы вывод каталога в магазине.
    Побывал по примерам сделать ничего не получилось.
    Напишите пожалуйста как это сделать?
    Вот собственно код страницы которую нужно разбить:
    PHP:
    <div id="akk">
                 <?php
                 $cq
    =mysql_query("select * from `akk_cat` order by `id`");
                 
    ?>
                 <? while($ca=mysql_fetch_array($cq)):?>
                 <?php
                 $q
    =mysql_query("select * from `akk_goods` where `cat`='$ca[id]' order by `price`");
                 
    $i=0;
                 
    ?>
                 <? if(mysql_num_rows($q)>0):?>
                 <div><div class="name" style="color:black;"><b><?=$ca[name]?></b></div></div>
                 <? endif;?>
                 <? while ($a=mysql_fetch_array($q)):?>
                    <?php
                    $qq
    =mysql_query("select `id` from `akk_codes` where `good`='$a[id]' and `status`<1");
                    
    $num=mysql_num_rows($qq);
                    
    ?>
                    <? if($num>0):?>
                    <?php
                    $uq
    =mysql_query("select `rub` from `akk_kurs` where `currency`='usd'");
                    
    $ua=mysql_fetch_array($uq);
                    
    $price_usd=round($a[price]/$ua[rub],2);
                    
    ?>
                    <div class="<?php if($i==0) {echo("a"); $i=1;} else {echo("b"); $i=0;} ?>"><div class="name"><?=$a[name]?></div><div class="cena"><?=$a[price]?> руб / <?=$price_usd?> usd</div><div class="shop"><a href="order.php?id=<?=$a[id]?>">купить</a></div></div>
                    <?endif;?>
                 <? endwhile;?>  
                 <? endwhile;?>
                   <?php
                 $q
    =mysql_query("select * from `akk_goods` where `cat`='0' order by `price`");
                 
    $i=0;
                   
    ?>
                 <? while ($a=mysql_fetch_array($q)):?>
                    <?php
                    $qq
    =mysql_query("select `id` from `akk_codes` where `good`='$a[id]' and `status`<1");
                    
    $num=mysql_num_rows($qq);
                    
    ?>
                    <? if($num>0):?>
                    <?php
                    $uq
    =mysql_query("select `rub` from `akk_kurs` where `currency`='usd'");
                    
    $ua=mysql_fetch_array($uq);
                    
    $price_usd=round($a[price]/$ua[rub],2);
                    
    ?>
                    <div class="<?php if($i==0) {echo("a"); $i=1;} else {echo("b"); $i=0;} ?>"><div class="name"><?=$a[name]?></div><div class="cena"><?=$a[price]?> руб / <?=$price_usd?> usd</div><div class="shop"><a href="order.php?id=<?=$a[id]?>">купить</a></div></div>
                    <? endif;?>
                 <? endwhile;?> 
                 </div>
    Буду очень благодарен за подробное разъяснение что к чему и куда
     
  2. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    http://generalit.ru/blog/archives/1149
     
  3. dac_60

    dac_60 New Member

    Joined:
    11 Feb 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    не помогло
     
  4. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    статья: http://www.tigir.com/paging.htm
    класс: http://www.tigir.com/scripts/paging.inc.php
    Сам им пользуюсь.
     
    _________________________
  5. dac_60

    dac_60 New Member

    Joined:
    11 Feb 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    вот пробую так разбить но все равно ничего не получается.
    добился только того что выводит количество страниц а вот список товаров не делит на страницы
    PHP:
    <?php
    // количество записей, выводимых на странице
    $per_page=3;
    // получаем номер страницы
    $page=(isset($_GET['page'])? $_GET['page']: -1); 
    $page=((!$page)==false)? $page:-1;
    // вычисляем первый оператор для LIMIT
    $start=abs($page*$per_page);
    // составляем запрос и выводим записи
    // переменную $start используем, как нумератор записей.
    $qp="SELECT id FROM `akk_goods` where `cat`='0' order by `price` LIMIT $start$per_page";
    $res=mysql_query($qp);
    while(
    $row=mysql_fetch_array($res)) {
      echo ++
    $start.". ".$row['id']."\n<br>\n";
    }
    // дальше выводим ссылки на страницы:
    $qp="SELECT count(*) FROM `akk_goods`";
    $res=mysql_query($qp);
    $row=mysql_fetch_row($res);
    $total_rows=$row[0];

    $num_pages=ceil($total_rows/$per_page);
    ?>
    <!--разбитие на страницы-->             
                 <?php
                 $cq
    =mysql_query("select * from `akk_cat` order by `id`");
                 while(
    $ca=mysql_fetch_array($cq)):
                 
    $q=mysql_query("select * from `akk_goods` where `cat`='$ca[id]' order by `price`");
                 
    $i=0;
                 if(
    mysql_num_rows($q)>0):
                 echo (
    "<div><div class='name_cat'>$ca[name]</div></div>");
                 endif;
                 while (
    $a=mysql_fetch_array($q)):
                 
    $qq=mysql_query("select `id` from `akk_codes` where `good`='$a[id]' and `status`<1");
                 
    $num=mysql_num_rows($qq);
                 if(
    $num>0):?>
                    <div class="<?php if($i==0) {echo("a"); $i=1;} else {echo("b"); $i=0;} ?>"><div class="name"><?=$a['name']?></div><div class="cena"><?=$a['price']?> руб</div><div class="shop"><a href="order.php?id=<?=$a[id]?>">купить</a></div></div><br>
                    <?endif;?>
                 <? endwhile;?>  
                 <? endwhile;?>     
                 <?php
                 $q
    =mysql_query("select * from `akk_goods` where `cat`='0' order by `price`");
                 
    $i=0;
                 while (
    $a=mysql_fetch_array($q)):
                 
    $qq=mysql_query("select `id` from `akk_codes` where `good`='$a[id]' and `status`<1");
                 
    $num=mysql_num_rows($qq);
                 if(
    $num>0):?>
                 <div class="<?php if($i==0) {echo("a"); $i=1;} else {echo("b"); $i=0;} ?>"><div class="name"><?=$a[name]?></div><div class="cena"><?=$a[price]?> руб</div><div class="shop"><a href="order.php?id=<?=$a[id]?>">купить</a></div></div>
                 <? endif;?>
                 <? endwhile;?>
    <!--разбитие на страницы-->
    <h1><?php
    // дальше выводим ссылки на страницы:
    $qp="SELECT count(id) FROM `akk_goods` order by `price`";
    $res=mysql_query($qp);
    $row=mysql_fetch_row($res);
    $total_rows=$row[0];

    $num_pages=ceil($total_rows/$per_page);

    for(
    $i=1;$i<=$num_pages;$i++) {
      if (
    $i-== $page) {
        echo 
    $i." ";
      } else {
        echo 
    '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";
      }
    }
    ?></h1>    
    <!--разбитие на страницы-->
    помогите пожалуйста :(
     
    #5 dac_60, 11 Feb 2011
    Last edited: 11 Feb 2011
  6. dac_60

    dac_60 New Member

    Joined:
    11 Feb 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    информацию черпал от сюда /threadnav43065-2-10.html но до конца ничего не понял
     
  7. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    /showpost.php?p=1739660&postcount=3
     
  8. dac_60

    dac_60 New Member

    Joined:
    11 Feb 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    все равно ничего не понял, как правильно сделать разбитие.
    Не мог бы ты подробней расписать что куда нужно прописывать и в какой последовательности.