Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: разбивка на страницы
 
 автор: amsokol   (07.04.2013 в 17:36)   письмо автору
 
 

Привет товарищи :). Есть вопросик, нужно решение, кто хочет подумать присоединяйтесь. Есть таблица в базе

<?PHP
$ap 
mysql_query("SELECT * FROM `stat` WHERE `urlid`=$id and `dat`='$data 'ORDER BY `id`")or die(mysql_error());
?>

Вывожу в цикле

<?PHP
while($row=mysql_fetch_array($apMYSQL_ASSOC))
  {
// Выводятся строки с  подстановкой из $row['']
}
?>

Нужно разбить вывод цикла на страницы по 10 строк на каждой странице, и нумерацию страниц вывести ниже тела цикла.
Наведите на путь истины.

  Ответить  
 
 автор: confirm   (07.04.2013 в 18:56)   письмо автору
 
   для: amsokol   (07.04.2013 в 17:36)
 

Каждая $row[''] это именно одна строка?

  Ответить  
 
 автор: amsokol   (07.04.2013 в 19:33)   письмо автору
 
   для: amsokol   (07.04.2013 в 17:36)
 

Спасибо за ВАШИ ответы, сам сообразил
Сначало определяем количество записей в таблице

<?PHP
$q
=mysql_query("SELECT count(id)  FROM `stat` WHERE `urlid`=$id");
$row=mysql_fetch_row($q);
$number_pages=$row[0];

?>

дальше получаем номер страницы и значение для лимита

<?php
$onpage
=10;//количества записей на странице
if (isset($_GET['page'])) 
{
$NUM_PAGE=($_GET['page']);
}else{
 
$NUM_PAGE=1;
}
$start=abs(($NUM_PAGE-1)*$onpage);
?>

Дальше пишем запрос для цикла

<?PHP
$apsi 
mysql_query("SELECT * FROM `stat` WHERE `urlid`=$id and `dat`='$data 'ORDER BY `id` LIMIT $start,$onpage")or die(mysql_error());

while(
$row=mysql_fetch_array($apsiMYSQL_ASSOC))
{
// Выводятся строки с  подстановкой из $row['']...
$DATA[++$start]=$row;
}
?>

Определяем адрес строки браузера до переменной page

<?PHP
$url 
strtok($_SERVER['REQUEST_URI'],"?")."?";
unset(
$_GET['page']);
if (
$_GET)
 {
$url .= http_build_query($_GET)."&";
 }

//Находим число страниц и заполняем массив ссылками на страници
$number_pages=ceil($numtotal/$onpage);
for(
$i=1;$i<=$number_pages;$i++) 
{
$PAGES[$i]=$url.'page='.$i;
}

?>
Всего найдено записей: <b><?=$number_pages></b><br><br>
<
br>Страницы
<?
PHP
foreach ($PAGES as $i => $link)
{
   if (
$i == $CUR_PAGE)
   
?>
   <b><?=$i?></b>
   <?PHP
   
}
   else
   { 
   
?> 
   <a href="<?=$link?>"><?=$i?></a>
   <? 
   
}
}
?>

Вот такой код у меня получился, может кому пригодится.
Если у когото есть оптимальней решение-буду рад :)

  Ответить  
 
 автор: confirm   (07.04.2013 в 19:44)   письмо автору
 
   для: amsokol   (07.04.2013 в 19:33)
 

Это называется постраничная навигация, а вы задаете вопрос о разбиении на строки (чего не понять?), что там у вас в таблице, действительно ли строки, или текст который надо на них разбить.... Советовать что-то при такой постановке вопроса невозможно.

  Ответить  
 
 автор: amsokol   (07.04.2013 в 19:59)   письмо автору
 
   для: confirm   (07.04.2013 в 19:44)
 

Извиняюсь, может не правильно поставил вопрос

и пока код писал немного ошибся, вот правильный код
$onpage=10;//количества записей на странице
if (isset($_GET['page']))
{
$NUM_PAGE=($_GET['page']);
}else{
$NUM_PAGE=1;
}
$start=abs(($NUM_PAGE-1)*$onpage);
?>
[/code]
Дальше пишем запрос для циклаrn

<?PHP
$apsi 
mysql_query("SELECT * FROM `stat` WHERE `urlid`=$id and `dat`='$data 'ORDER BY `id` LIMIT $start,$onpage")or die(mysql_error());
while(
$row=mysql_fetch_array($apsiMYSQL_ASSOC))
{
// Выводятся строки с  подстановкой из $row['']...
$DATA[++$start]=$row;
}
?>

Определяем адрес строки браузера до переменной page

<?PHP
$url 
strtok($_SERVER['REQUEST_URI'],"?")."?";
unset(
$_GET['page']);
if (
$_GET)
{
$url .= http_build_query($_GET)."&";
 }
 
//Находим число страниц и заполняем массив ссылками на страницы
$number_pages=ceil($numtotal/$onpage);
for(
$i=1;$i<=$number_pages;$i++)
{
$PAGES[$i]=$url.'page='.$i;rn}
?>
Всего найдено записей: <b><?=$numtotal></b><br><br>
<
br>Страницы:
<?
PHP
  
foreach ($PAGES as $i => $link)
  {
 if (
$i == $CUR_PAGE)
    
?>
    <b><?=$i?></b>
    <?PHP
    
}
    else
    { 
    
?> 
    <a href="<?=$link?>"><?=$i?></a>
    <?
    
}
}
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования