Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.02.2011, 08:31
Новичок на форуме
Отправить личное сообщение для dac_60 Посмотреть профиль Найти все сообщения от dac_60
 
Регистрация: 10.12.2010
Сообщений: 9

Разбитие на страницы (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 (permalink)  
Старый 10.02.2011, 11:09
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Куча материалов по запросу "php разбивка на страницы" и ни один не подошел? Значит не так пробовали, надо по другому.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #3 (permalink)  
Старый 10.02.2011, 12:02
Новичок на форуме
Отправить личное сообщение для dac_60 Посмотреть профиль Найти все сообщения от dac_60
 
Регистрация: 10.12.2010
Сообщений: 9

SkyLight,
Честно говоря еще не все перепробовал, думал может кто на путь истинный сразу направит чтоб долго не парится
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2011, 13:30
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Как раз в статьях и есть все необходимые общие примеры. Главное понять сам принцип.
А задача форума - не предоставить просящему готовое решение, а натолкнуть на правильные мысли.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2011, 14:48
Новичок на форуме
Отправить личное сообщение для dac_60 Посмотреть профиль Найти все сообщения от dac_60
 
Регистрация: 10.12.2010
Сообщений: 9

вот нашел то что нужно, вот только очередная проблема. Куда и как правильно его поместить в код?

// количество записей, выводимых на странице
$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> ";
  }
}
Ответить с цитированием
  #6 (permalink)  
Старый 10.02.2011, 14:57
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

В приведенном коде строки 1-13 отвечают за вывод записей, остальные - вывод пейджинга. Ну тут ведь несложно догадаться, что делать дальше.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #7 (permalink)  
Старый 10.02.2011, 15:09
Новичок на форуме
Отправить личное сообщение для dac_60 Посмотреть профиль Найти все сообщения от dac_60
 
Регистрация: 10.12.2010
Сообщений: 9

Сообщение от SkyLight Посмотреть сообщение
В приведенном коде строки 1-13 отвечают за вывод записей, остальные - вывод пейджинга. Ну тут ведь несложно догадаться, что делать дальше.
Трудно, если ничего толком не понимаешь в PHP
Ответить с цитированием
  #8 (permalink)  
Старый 10.02.2011, 15:33
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Тогда вы сами создали себе проблему. Надо как раз "толком" разобраться в пхп, это позволит решить сразу много вопросов. Если по каждой проблеме тыкаться за справкой - потеряете много времени.

В первом посте вы дали код страницы. Если его написали вы, то должны понимать, как он работает и, соответственно, сможете понять, как привязать пагинацию. Я уже сказал, что в том коде всего два ключевых момента: вывод списка записей и вывод списка страниц. Теперь вам надо всего лишь изменить вывод записей под свои данные и переделать запрос для получения общего количества записей для формирования пейджера.
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
  #9 (permalink)  
Старый 11.02.2011, 22:24
Новичок на форуме
Отправить личное сообщение для dac_60 Посмотреть профиль Найти все сообщения от dac_60
 
Регистрация: 10.12.2010
Сообщений: 9

вот пробую так разбить но все равно ничего не получается.
добился только того что выводит количество страниц а вот список товаров не делит на страницы
<?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>	
<!--разбитие на страницы-->

помогите пожалуйста
Ответить с цитированием
  #10 (permalink)  
Старый 12.02.2011, 11:33
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Принципа вы так и не поняли. В вашем коде вообще нет разбивания на страницы. Насколько я понял, выборка списка происходит в строке 26. Только где в ней LIMIT? И вообще, код бестолковый, куча лишних действий...
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь, если можно Fox-WNT Общие вопросы Javascript 3 27.07.2010 11:38
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17
Работа js +php без обновления страницы Jekel Javascript под браузер 18 29.11.2009 20:17
Нужна быстрая небольшая помощь. Плачу 5wmz Zuzlan Работа 3 25.02.2009 16:45
Кроссдоменный GET запрос. Нужна помощь! notxcain AJAX и COMET 4 07.12.2008 20:55