Разбитие на страницы (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, время: 02:19. |