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

Форум MySQL

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

 

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

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

тема: Постраничный вывод
 
 автор: chip   (21.11.2004 в 10:03)   письмо автору
 
 

Хочу создать постраничный вывод но извлекается не вся таблица а часть ее по параметрам как это реализовать???
Создана панель из ссылок <a href=Index.php?page=".$n.">[".$n."]</a>
где $n номер страницы
$pnumber колличество строк на странице

Вопрос как при переходе на ссылку Index.php?page=2
$begin = 1+ $pnumber *($page-1)
$pnumber = $pnumber *($page-1)+$pnumber

Грузилась страница по запросу mysql_query('SELECT tel.* , ul.* FROM tel, ul WHERE tel.ul = ul.kod AND (fam = 'Петров' ) LIMIT '.$begin.' ,'.$pnumber.' ; ')
.

   
 
 автор: elenaki   (21.11.2004 в 11:40)   письмо автору
 
   для: chip   (21.11.2004 в 10:03)
 

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

полностью кусок кода с постраничным выводом приводился в теме:

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=126

   
 
 автор: elenaki   (21.11.2004 в 11:51)   письмо автору
 
   для: chip   (21.11.2004 в 10:03)
 

а реализацию этого кода можно посмотреть вот здесь:

   
 
 автор: chip   (23.11.2004 в 15:58)   письмо автору
 
   для: elenaki   (21.11.2004 в 11:51)
 

elenaki а страница не на русском :(
вчера вобще не грузилась :(
Может код прикрепишь в виде файла сюда ;)

   
 
 автор: elenaki   (23.11.2004 в 19:07)   письмо автору
 
   для: chip   (23.11.2004 в 15:58)
 

на греческом :)

но это не важно. главное, есть ссылки на страницы 1|2|3| ...

странно, что не открывалась, у меня все открывается.

цепляю файл.

   
 
 автор: chip   (29.11.2004 в 02:02)   письмо автору
 
   для: elenaki   (23.11.2004 в 19:07)
 

Вот только сел за компьютер ...
ЕСЛИ ДВОЕ ЗАСТРЯЛИ в ЛИФТЕ ЭТО ЛЮБОFF
:)
elenaki
у меня вот какая проблемка $query получается у меня из параметров поиска
но при переходе на вторую (или другую) страницу у меня новые параметры не передаются т.е. мне находятся все записи (из всей таблицы) так нет условий поиска
нужно в код вставить скрытые поля где переменные которые формируют критерии поиска передавались на вторую (и другую страницу).
Т.Е. ссылки на страницы 1|2|3| ... должны быть как бы кнопками для отправки формы
типа:
<input type=hidden NAME='kvartira' value='$kvartira'>
как это реализуется?

Я только сделал так (Это кусок из файла которое был предложен тобой):

//vivod linkov v vide 1 | 2 | 3"
$count_pages = ceil($all_lines / $lines_per_page);
echo "<table><tr><td colspan=8 align=left>";
if ($count_pages>1) {
 for ($i=1; $i<=$count_pages; $i++) {
   if($page==$i and $i!=1) {echo " | <font style=color:#000000;<>$i</font>";}
   elseif ($page==$i and $i==1) {echo "1";}
   elseif($i==1 and $page!=$i) {echo "<a href=\"$PHP_SELF?page=$i&kvartira=$kvartira\"  class=catalog>$i</a>";}

   elseif($i!=1 and $page!=$i) {echo " | <a href=\"$PHP_SELF?page=$i&kvartira=$kvartira\"  class=catalog>$i</a>";}
 }
}

Т.е. параметры передаются GET а хотелось бы POST .

Спасибки за помощь elenaki ! И С наступлением календарной зимы! И любви большой (как у меня например :) )

Отдельный привет и поздравления Хеопсу и Кузнецову!!!

   
 
 автор: elenaki   (29.11.2004 в 09:23)   письмо автору
 
   для: chip   (29.11.2004 в 02:02)
 

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

можно, конечно, и форму сделать и передавать скрытыми полями. одну форму и много-много кнопок типа button и событием OnClick=window.location="$PHP_SELF" с соответсвующими парметрами в скрытых полях. кнопке можно нарисовать стиль, что она на кнопку похожа не будет, а будет как сылка (были у меня и такие извращения).

   
 
 автор: BAHO   (29.11.2004 в 12:13)   письмо автору
 
   для: elenaki   (29.11.2004 в 09:23)
 

 
<?
$f
=10;

      
$query=mysql_query("select count(id) from ks_news");
      
$count=mysql_fetch_array($query);
      
$pages ceil($count[0] / $f);
      if(
$page=="" or $page=="0"){$lim="0";}
      else{
$lim=($page 1) * $f;}

    
$base=mysql_query("select * from {таблица} order by id desc limit $lim$f;");
   print 
"Всего новостей: $count[0]</b>.   Страницы: ";
            if(
$count[0]>$f)
              {
              if(!isset(
$page))
                {
                
$page="1";
                }
                for(
$i 1$i <= $pages$i++)
                  {
                  if(
$i != $page)
                    {
                    
$r2=$f*$i;
                    
$r1=$r2-($f-1);
                    if(
$i==$pages)
                      {
                      print 
' <a href="{страница}.php?page='.$i.'" >['.$r1.'-'.$count[0].']</a>';
                      }
                    else print 
' <a href="{страница}.php?page='.$i.'" >['.$r1.'-'.$r2.']</a>';
                    }
                  else
                    {
                    
$r2=$f*$i;
                    
$r1=$r2-($f-1); 
                    if(
$i==$pages)
                      {
                      print 
' ['.$r1.'-'.$count[0].']';
                      }
                    else print 
' ['.$r1.'-'.$r2.']';
                    }
                  }
              }
?>

и т.д. Дальше сам разберёшься.
Вывод в виде [№ первого записи страницы-№ последней записи страницы]

   
 
 автор: Alexey123   (23.01.2006 в 07:09)   письмо автору
 
   для: BAHO   (29.11.2004 в 12:13)
 

Подскажите пожалуйста, как встроить код :
<?php
require('../conf.php');
$db = mysql_connect("$basahostname", "$basausename", "$basausepass");
mysql_select_db("$basaname",$db);
$result = mysql_query("SELECT * FROM faq ORDER BY binary(id) desc",$db);
if ($myrow = mysql_fetch_array($result))
{
echo "<table border=0 cellpadding=1 cellspacing=2 width=782 height=0>\n";
do
{
printf("
<tr align=right valign=bottom>
<td bgcolor=#E2E6E7 height=0 colspan=2><br>
<div align=\"right\"><font color=\"#111111\" size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">
Дата: %s
</font></div>
</td>
</tr>
<tr bgcolor=#F3F2DE align=left valign=top>
<td bgcolor=#D3D9DB width=185 height=0 valign=middle>Автор: </td>
<td width=591 height=0>%s</td>
</tr>
<tr bgcolor=#F3F2DE align=left valign=top>
<td bgcolor=#D3D9DB width=185 height=0 valign=middle>E-Mail: </td>
<td width=591 height=0>%s</td>
</tr>
<tr bgcolor=#F3F2DE align=left valign=top>
<td bgcolor=#D3D9DB width=185 height=0 valign=middle>Вопрос: </td>
<td width=591 height=0>%s</td>
</tr>
<tr bgcolor=#F3F2DE align=left valign=top>
<td bgcolor=#D3D9DB width=185 height=0 valign=middle>Ответ: </td>
<td width=591 height=0>%s</td>
</tr>
\n", $myrow["data"], $myrow["avtor"], $myrow["mail"], $myrow["vopros"], $myrow["otvet"]);
}
while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
printf ("
<table border=0 cellpadding=1 cellspacing=2 width=782 height=0>\n
<tr align=right valign=bottom>
<td bgcolor=#E2E6E7 height=0 colspan=2><br>
<a href=\"add.php\">
<div align=\"center\"><font color=\"#111111\" size=\"3\" face=\"Verdana, Arial, Helvetica, sans-serif\">
Задать вопрос
</font></div></a>
</td>
</tr>
</table>\n");
}
else
{
echo "Ошибка: немогу соединиться с базой данных.";
}

?>

в этот:

<?
$f=2;

$query=mysql_query("select count(id) from faq");
$count=mysql_fetch_array($query);
$pages = ceil($count[0] / $f);
if($page=="" or $page=="0"){$lim="0";}
else{$lim=($page - 1) * $f;}

$base=mysql_query("select * from faq order by id desc limit $lim, $f;");
print "&#194;&#241;&#229;&#227;&#238; &#226;&#238;&#239;&#240;&#238;&#241;&#238;&#226;: $count[0]</b>. &#209;&#242;&#240;&#224;&#237;&#232;&#246;&#251;: ";
if($count[0]>$f)
{
if(!isset($page))
{
$page="1";
}
for($i = 1; $i <= $pages; $i++)
{
if($i != $page)
{
$r2=$f*$i;
$r1=$r2-($f-1);
if($i==$pages)
{
print ' <a href="faq.php?page='.$i.'" >['.$r1.'-'.$count[0].']</a>';
}
else print ' <a href="faq.php?page='.$i.'" >['.$r1.'-'.$r2.']</a>';
}
else
{
$r2=$f*$i;
$r1=$r2-($f-1);
if($i==$pages)
{
print ' ['.$r1.'-'.$count[0].']';
}
else print ' ['.$r1.'-'.$r2.']';
}
}
}
?>

   
Rambler's Top100
вверх

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