Разбитие на страницы (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> |
Куча материалов по запросу "php разбивка на страницы" и ни один не подошел? Значит не так пробовали, надо по другому.
|
SkyLight,
Честно говоря еще не все перепробовал, думал может кто на путь истинный сразу направит чтоб долго не парится :) |
Как раз в статьях и есть все необходимые общие примеры. Главное понять сам принцип.
А задача форума - не предоставить просящему готовое решение, а натолкнуть на правильные мысли. |
вот нашел то что нужно, вот только очередная проблема. Куда и как правильно его поместить в код?
// количество записей, выводимых на странице $per_page=10; // получаем номер страницы if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0; // вычисляем первый оператор для LIMIT $start=abs($page*$per_page); // составляем запрос и выводим записи // переменную $start используем, как нумератор записей. $q="SELECT * FROM `akk_goods` ORDER BY id LIMIT $start,$per_page"; $res=mysql_query($q); while($row=mysql_fetch_array($res)) { echo ++$start.". ".$row['id']."<br>\n"; } // дальше выводим ссылки на страницы: $q="SELECT count(*) FROM `akk_goods`"; $res=mysql_query($q); $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-1 == $page) { echo $i." "; } else { echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> "; } } |
В приведенном коде строки 1-13 отвечают за вывод записей, остальные - вывод пейджинга. Ну тут ведь несложно догадаться, что делать дальше.
|
Цитата:
|
Тогда вы сами создали себе проблему. Надо как раз "толком" разобраться в пхп, это позволит решить сразу много вопросов. Если по каждой проблеме тыкаться за справкой - потеряете много времени.
В первом посте вы дали код страницы. Если его написали вы, то должны понимать, как он работает и, соответственно, сможете понять, как привязать пагинацию. Я уже сказал, что в том коде всего два ключевых момента: вывод списка записей и вывод списка страниц. Теперь вам надо всего лишь изменить вывод записей под свои данные и переделать запрос для получения общего количества записей для формирования пейджера. |
вот пробую так разбить но все равно ничего не получается.
добился только того что выводит количество страниц а вот список товаров не делит на страницы <?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-1 == $page) { echo $i." "; } else { echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> "; } } ?></h1> <!--разбитие на страницы--> помогите пожалуйста :( |
Принципа вы так и не поняли. В вашем коде вообще нет разбивания на страницы. Насколько я понял, выборка списка происходит в строке 26. Только где в ней LIMIT? И вообще, код бестолковый, куча лишних действий...
|
Часовой пояс GMT +3, время: 10:03. |