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

Форум PHP

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

 

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

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

тема: И снова построничная навигация :(
 
 автор: Адоп Акробат   (11.10.2004 в 06:35)   письмо автору
 
 

Здравствуй вот я использую вот такой программный код (дал мне его хеопс)

<?php
if(empty($_REQUEST["start"])) $_REQUEST["start"] = 1;
$pnumber 10;

$query mysql_query("select * from links where id_catalog=$_REQUEST[id] order by vot desc limit $_REQUEST[start]$pnumber");
$row mysql_fetch_object($query);

$tot mysql_query("select * from links");
$total mysql_num_rows($tot);



$number = (int)($total/$pnumber);
if((float)(
$total/$pnumber) - $number != 0$number++;

echo 
"<center>";

for(
$i 1$i<=$number$i++)
{
    if(
$number == $i)
    {
        if(
$_REQUEST["start"] == $i)
           echo 
"<font class='menu'>$i ";
        else
           echo 
"<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>$i</a> ";
    }
    else
   {
        if(
$_REQUEST["start"] == $i)
           echo 
"<font class='menu'>$i ";
        else
           echo 
"<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>$i</a> ";
    }
}
?>


Все работает но, допустим у меня в базе 26 ссылок , на каждой странице показоваеца по 10 ссылок то тогда формируеца 3 ссылки (1 2 3) то я нажимаю на первую, показываеца первые 10 ссылок, потом нажимаю на вторую показываеца следущие 10 ссылок и когда я нажимаю на третию то мне показываеца последнии 10 ссылок а мне хочеца чтобу показывалось последнии 6
Как можно такое зделать?? Нармально я вырозился?? :)

   
 
 автор: cheops   (11.10.2004 в 10:27)   письмо автору
 
   для: Адоп Акробат   (11.10.2004 в 06:35)
 

Хм... с запросами явно что-то не чисто, вместо ограничения
limit $_REQUEST[start], $pnumber

явно должно быть
limit $_REQUEST[start]*$pnumber, $pnumber

а вместо
select * from links

должно быть
select count(*) from links

   
 
 автор: Адоп Акробат   (11.10.2004 в 18:05)   письмо автору
 
   для: cheops   (11.10.2004 в 10:27)
 

Хеопс я зделал вот так
if(empty($_REQUEST["start"])) $_REQUEST["start"] = 0;
$pnumber = 10;

$query = mysql_query("select * from links where id_catalog=$_REQUEST[id] order by vot desc limit ".$_REQUEST[start]*$pnumber.", $pnumber");

но чота не получаеца
если старт равняеца нулю то он показывает последние 6 ссылок ??

   
 
 автор: cheops   (11.10.2004 в 23:01)   письмо автору
 
   для: Адоп Акробат   (11.10.2004 в 18:05)
 

А если эхой вывести переменную $query в окно браузера - как выглядит запрос?
<?php
  
echo $query;
?>

   
 
 автор: Адоп Акробат   (12.10.2004 в 01:29)   письмо автору
 
   для: cheops   (11.10.2004 в 23:01)
 

Как? он пишет Resource id #10

   
 
 автор: cheops   (12.10.2004 в 11:40)   письмо автору
 
   для: Адоп Акробат   (12.10.2004 в 01:29)
 

Да, он так и должен писать, я имел ввиду выделить запрос в отдельную переменную и вывести её с подставленными занчениями:
<?php
$quer 
"select * from links where id_catalog=$_REQUEST[id] order by vot desc limit ".
$_REQUEST[start]*$pnumber.", $pnumber";
echo 
$quer;
$query mysql_query($quer); 
?>

   
 
 автор: Адоп Акробат   (12.10.2004 в 15:50)   письмо автору
 
   для: cheops   (12.10.2004 в 11:40)
 

А чо мне с эти мделать?

   
 
 автор: cheops   (12.10.2004 в 15:54)   письмо автору
 
   для: Адоп Акробат   (12.10.2004 в 15:50)
 

:))) Просто поставить вместо вызова функции mysql_query, чтобы в окно браузера был выведен SQL-запрос, тогда можно будет его протестировать в консоли клиента mysql, кроме того будет сразу видно будет правильно он формируется или нет.

   
 
 автор: Адоп Акробат   (12.10.2004 в 16:07)   письмо автору
 
   для: cheops   (12.10.2004 в 15:54)
 

Вот чо он вывел (помойму не то)
select * from links where id_catalog=2 order by vot desc limit 10, 10

   
 
 автор: cheops   (12.10.2004 в 16:10)   письмо автору
 
   для: Адоп Акробат   (12.10.2004 в 16:07)
 

А $_REQUEST["start"] точно нулю равен? Получается, что вроде как единице...

   
 
 автор: XPraptor   (12.10.2004 в 17:22)   письмо автору
 
   для: cheops   (12.10.2004 в 16:10)
 

А почему тут вот $query = mysql_query("select * from links where id_catalog=$_REQUEST[id] order by vot desc limit ".$_REQUEST[start]*$pnumber.", $pnumber");

в $_REQUEST[start] start без кавычек? Разве так прокатывает в запросе?

   
 
 автор: Адоп Акробат   (12.10.2004 в 18:17)   письмо автору
 
   для: cheops   (12.10.2004 в 16:10)
 

Нет старт был равен нулю. Я поставел чтобы старт равнялся нулю и чота он ваще начел маица :(
Открываю страницу с ссылками там добавляюца 3ссылки и на каждую ссылку я могу нажать (и на первую тоже) Пишет вот это
select * from links where id_catalog=2 order by vot desc limit 0, 10


Кагда я нажимаю на первую страницу (1) то добавляюца 2 ссылки ани три.
и пишет
select * from links where id_catalog=2 order by vot desc limit 10, 10


А когда нажимаю на вторую ссылку то он ничо не показывает и пишет
select * from links where id_catalog=2 order by vot desc limit 20, 10


А у меня в базе только 16 ссылок.


to XPraptor
не, нармальна

   
 
 автор: Адоп Акробат   (12.10.2004 в 18:29)   письмо автору
 
   для: Адоп Акробат   (11.10.2004 в 06:35)
 

Хеопс сматри я зделал вот так и работает но мне не нравица то что первая ссылка 0 потом 1... (0 1 2 3 4 ...)



if(empty($_REQUEST["start"])) $_REQUEST["start"] = 0;
$pnumber = 10;

$query = mysql_query("select * from links where id_catalog=$_REQUEST[id] order by vot desc limit ".$_REQUEST[start]*$pnumber.", $pnumber");
$row = mysql_fetch_object($query);

$total = mysql_query("select count(*) from links");



$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number = 0)  $number++;

echo "<center>";

for($i = 0; $i<=$number; $i++)
{
    if($number == $i)
    {
        if($_REQUEST["start"] == $i)
           echo "<font class='menu'>$i ";
        else
           echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>$i</a> ";
    }
    else
   {
        if($_REQUEST["start"] == $i)
           echo "<font class='menu'>$i ";
        else
           echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>$i</a> ";
    }
}



Как можно исправить что бы первая равнялась единицы ани нулю?

   
 
 автор: cheops   (12.10.2004 в 18:46)   письмо автору
 
   для: Адоп Акробат   (12.10.2004 в 18:29)
 

Ну... сылку
echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>$i</a> ";

заменить на
echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".($i + 1)." class='menu'>$i</a> ";

   
 
 автор: Адоп Акробат   (12.10.2004 в 20:24)   письмо автору
 
   для: cheops   (12.10.2004 в 18:46)
 

???
Чоты савсем нето?

   
 
 автор: cheops   (12.10.2004 в 20:45)   письмо автору
 
   для: cheops   (12.10.2004 в 18:46)
 

Извиняюсь :))), поторопился...
следует
echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>$i</a> ";

изменить на
echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>".($i+1)."</a> ";

   
 
 автор: Адоп Акробат   (13.10.2004 в 02:28)   письмо автору
 
   для: cheops   (12.10.2004 в 20:45)
 

Чота тоже не то показывает вот так (0 2 3) :)

   
 
 автор: elenaki   (13.10.2004 в 10:29)
 
   для: Адоп Акробат   (13.10.2004 в 02:28)
 

сделай еще одну переменную - j, которая будет равна i+1 и не мучайся

   
 
 автор: cheops   (13.10.2004 в 11:00)   письмо автору
 
   для: Адоп Акробат   (13.10.2004 в 02:28)
 

Хм... я почему он первый раз 2 прибавляет, а второй 1?

   
 
 автор: Адоп Акробат   (13.10.2004 в 14:20)   письмо автору
 
   для: cheops   (13.10.2004 в 11:00)
 

Потому что у меня i=0,I<=$number,I++

   
 
 автор: Адоп Акробат   (13.10.2004 в 19:37)   письмо автору
 
   для: Адоп Акробат   (13.10.2004 в 14:20)
 

Хеопс чота я незнаю чота ваще странно то делает чо нада то не делает
Я прекрепил этот фаил и с установкоя базы данных если не трудно :(

   
 
 автор: cheops   (13.10.2004 в 22:46)   письмо автору
 
   для: Адоп Акробат   (13.10.2004 в 19:37)
 

Ну всё-равно через 0 цикл проходит... а... вы в обоих местах поменяли ссылки?
for($i = 0; $i<=$number; $i++) 

    if($number == $i) 
    { 
        if($_REQUEST["start"] == $i) 
           echo "<font class='menu'>".($i+1)." "; 
        else 
           echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>".($i+1)."</a> "; 
    } 
    else 
   { 
        if($_REQUEST["start"] == $i) 
           echo "<font class='menu'>".($i+1)." "; 
        else 
           echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>".($i+1)."</a> "; 
    } 
}

   
 
 автор: Адоп Акробат   (14.10.2004 в 05:09)   письмо автору
 
   для: cheops   (13.10.2004 в 22:46)
 

Хеопс а вот в этом коде точто все правельно??
Сматрите чо он делает, кагда я нахажусь на первой странице то он показывает четыре ссылки (1 2 3 4) а должен три. Кагда я нажимаю на третью ссылку то он показыват три ссылки (1 2 3) а когда я нажимаю на четвертую ссылку то он ничо не показыват потому что столько ссылок нету :(
$number = (int)($total/$pnumber); 
if((float)($total/$pnumber) - $number != 0) $number++; 

echo "<center>"; 

for($i = 1; $i<=$number; $i++) 

    if($number == $i) 
    { 
        if($_REQUEST["start"] == $i) 
           echo "<font class='menu'>$i "; 
        else 
           echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>$i</a> "; 
    } 
    else 
   { 
        if($_REQUEST["start"] == $i) 
           echo "<font class='menu'>$i "; 
        else 
           echo "<a href=allinks.php?name=razdel&id=$_REQUEST[id]&start=".$i." class='menu'>$i</a> "; 
    } 




А кстате получилось теперь он не с нуля показывает а с единице

   
 
 автор: Адоп Акробат   (14.10.2004 в 17:04)   письмо автору
 
   для: Адоп Акробат   (14.10.2004 в 05:09)
 

Ап


Хеопс помоги пожалуста очень шужно :(

   
 
 автор: cheops   (14.10.2004 в 17:07)   письмо автору
 
   для: Адоп Акробат   (14.10.2004 в 17:04)
 

Если отсчёт теперь начинается с единицы, то условие цикла следует сменить с
<?php
  
for($i 1$i<=$number$i++)
?>

на
<?php
  
for($i 1$i<$number$i++)
?>

   
 
 автор: Адоп Акробат   (15.10.2004 в 17:05)   письмо автору
 
   для: cheops   (14.10.2004 в 17:07)
 

Чота совсем не получаеца :)

Ладна спасиба cheops

   
 
 автор: roshen   (21.10.2004 в 16:10)
 
   для: Адоп Акробат   (11.10.2004 в 06:35)
 

вот решение проблемы

вывод линков на странички с записями

<?
$count 
46 ;// кол-во записей в гостевой
$ipp=10// кол-во записей на странице
//////////////////////////////////////
 
if (isset($p)) {
//если заходим с ссылки без определенной p ( р - номер страницы)
// то ссылка будет обрабатываться , будто мы зашли с ссылки линк.php?p=1
// то же самое , если мы пытаемся попасть на страницу 10 линк.php?p=10
// а у нас то такой нету, так как их всего то 5, то переходим на первую.
  
if ((($p-1) >= $count $ipp ) or ($p<1))
     
$p 1;
  }
 else  
$p 1;
//////////////////////////////////////
echo "Страницы :" 
    
for($j=0$j<$count$j++)
       if(!(
$j $ipp ))
         if (
$j/$ipp==$p-1)
           echo (
$j/$ipp+1)." · ";
         else
               
printf ("<a href=\"%s?p=%s\"> %s </a> · "
               
,basename($PHP_SELF),($j/$ipp+1),($j/$ipp+1));
          if ( 
$p )
        echo 
"<a href=".basename($PHP_SELF)."?p=".($p-1).">ПРЕД</a> ·";
      if ( 
$p < ($count/$ipp) )
        echo 
" <a href=".basename($PHP_SELF)."?p=".($p+1).">СЛЕД</a> ·";
?>


рисуем сами отзывы из таблицы

$maxlim = $ipp;
$minlim = ($p-1)*$ipp;
$result = @mysql_query("SELECT * FROM моя_таблица LIMIT $minlim, $maxlim");
while($gb = @mysql_fetch_row($result)){
//рисуем сами отзывы из таблицы как хотим
}


[поправлено модератором]

   
 
 автор: Адоп Акробат   (21.10.2004 в 18:34)   письмо автору
 
   для: roshen   (21.10.2004 в 16:10)
 

Чота я разабраца не могу :(

   
Rambler's Top100
вверх

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