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

Форум MySQL

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

 

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

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

тема: постраничная навигация (опять!!!)(Attention to Mr Cheops)
 
 автор: Vadim777   (21.09.2005 в 13:19)   письмо автору
 
 

у меня такая проблема: я скачал скрипт Cheops но он немножко не так работает, может кто-то заметит где что ни так
когда я нажимаю на кнопку№2 - мне выдает вместо 2 страницы с новыми 10 позициями - какуюто фигню, где вместо новых позиций - сообщения денвера про индексы и такое. а "денвер" ругается на счет Notice: Undefined variable: i я указал это место ниже.
Плюс при этом выдаеться сообщение "Что не введены параметры поиска"

$pnumber = 10;
  < << 2 3 [4] 5 6 >> >
  $linknumber = 2;
   $page = $_GET['page'];
  if($page < 1) $page = 1;
  if(empty($page)) $page = 1;
  $begin = ($page - 1)*$pnumber;

   $select_sql = "SELECT *  FROM  tablename
                 ORDER BY customerid DESC
                 LIMIT $begin, $pnumber";
  $result = MYSQL_QUERY($select_sql);
  if(!$result) exit(mysql_error());

    $query = "SELECT COUNT(*) FROM tablename";
  $ctg = mysql_query($query);
  if(!$ctg) puterror
  $total = mysql_result($ctg,0);

  IF ($total == 0) {
    PRINT "<CENTER><Pколичество  автомобилей;</CENTER>";
  }
  ELSEIF ($total > 0)
  {
    PRINT "<CENTER><P>количество объявлений: $total<BR><BR>";

    WHILE ($arr = mysql_fetch_array($result))
    {
      $customerid = $arr['customerid'];
      $name = $arr['name'];
      $datum = $arr['datum'];
      $para = $arr['para'];
       $firma = $arr['firma'];
         echo $datum."<br>";
      echo $name."<br>";
       echo $para."<br>";
        echo $firma."<br>";
      $i++; // это не нравится "Денверу"    }
  }
  $number = (int)($total/$pnumber);
  if((float)($total/$pnumber) - $number != 0) $number++;
   if($page - $linknumber < 1) $str_begin = 1;
  else $str_begin = $page - $linknumber;
  
  if($page + $linknumber > $number) $str_end = $number;
  else $str_end = $page + $linknumber;
    echo "Страницы:";
  echo "&nbsp;<a title='Первая страница ;' class=menuinfo href=index.php?page=1>&lt;&lt;</a>&nbsp;";
  if($page > 1) echo "&nbsp;<a title=Первая страница  class=menuinfo href=index.php?page=".($page - 1).">&lt;</a>&nbsp;";
  for($i = $str_begin; $i<=$str_end; $i++)
  {
    if($page == $i)
      echo "&nbsp;$i&nbsp;";
    else
      echo "&nbsp;<a title='Открытьстраницу' class=menuinfo href=index.php?page=".$i.">$i</a>&nbsp;";
  }
  if($page < $number) echo "первая страница' class=menuinfo href=index.php?page=".($page + 1).">&gt;</a>&nbsp;";
  echo "&nbsp;<a title='первая страница' class=menuinfo href=index.php?page=$number>&gt;&gt;</a>&nbsp;";


?>

   
 
 автор: cheops   (22.09.2005 в 00:20)   письмо автору
 
   для: Vadim777   (21.09.2005 в 13:19)
 

Notice является своеобразным советом и выводится, когда выставлена максимальная чувствительность PHP к ошибкам - её следует понизить, как это сделано на всех хостингах, иначе они не дадут работать. Для этого, следует выставить соответствующее значение для директивы error_reporting http://www.softtime.ru/info/articlephp.php?id_article=23, в конфигурационном файле php.ini
error_reporting = E_ALL & ~E_NOTICE

Так же можно изменить уровень обработки ошибок локально, для этого в начало скрипта следует поместить функцию
<?php 
Error_Reporting
(E_ALL & ~E_NOTICE); 
?>

В качестве параметра, которой передать соответствующий уровень обработки ошибок.

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

   
 
 автор: Vadim777   (22.09.2005 в 11:58)   письмо автору
 
   для: cheops   (22.09.2005 в 00:20)
 

понял, но почему после вызова поиска, первая страница появляется с 10 позициями, а когда клацаешь №2 выдает, что не веденны параметры поиска?

   
 
 автор: cheops   (22.09.2005 в 14:54)   письмо автору
 
   для: Vadim777   (22.09.2005 в 11:58)
 

Хм... а что за параметры поиска? Что-то такой фразы не видно в первом листинге?

   
 
 автор: Vadim777   (22.09.2005 в 15:26)   письмо автору
 
   для: cheops   (22.09.2005 в 14:54)
 

логично!!! моя ошибка! вместо $tablename у меня стоит ".$_POST['searchtype']." т.е. человек выбирает рубрику/таблицу, т.е. выбираю рубрику из выпадающего окна, и у меня появляется первая страница, клацаю по №2 - появляется: "введите параметры поиска."
плюс в моем скрипте была необязательная позиция "para"
code]
if(!empty($_POST['para']))
$sql.=" WHERE para<= '".$_POST['para']."'";
[/code]
но я не знаю как ее разместить в скрипте с

$select_sql = "SELECT *  FROM  ".$_POST['searchtype']."
                 ORDER BY customerid DESC
                 LIMIT $begin, $pnumber";

  $result = MYSQL_QUERY($select_sql);
  if(!$result) exit(mysql_error());


  $query = "SELECT COUNT(*) FROM ".$_POST['searchtype']." ";

потому что после LIMIT $begin, $pnumber"; вроде запрещенно ставить конструкции с where.
???? Заранее благодарен как за оказанную ,так и будущую помощь!

   
 
 автор: Loki   (22.09.2005 в 17:23)   письмо автору
 
   для: Vadim777   (22.09.2005 в 15:26)
 


<?
if(!empty($_POST['para']))
$tmp=" WHERE para<= '".$_POST['para']."'";

$select_sql "SELECT *  FROM  ".$_POST['searchtype'].
                 
$tmp ORDER BY customerid DESC 
                 LIMIT 
$begin$pnumber"
?>

   
 
 автор: Vadim777   (22.09.2005 в 18:05)   письмо автору
 
   для: Loki   (22.09.2005 в 17:23)
 

Спасибо за помощь!
Я вставил в скрипт, но странно: выводится результат без поправки на

WHERE para<= '".$_POST['para']."'

т.е. что есть данные в графе, что нет - выдаются все данные из таблицы. Может это обусловленно SELECT * FROM, может, гдето указать, что if para применима, тогда нет SELECT * а когда пара не используется, тогда SELECT * т.е. все данные из таблицы.???
И как быть с переходом на вторую страницу

   
 
 автор: Loki   (22.09.2005 в 19:37)   письмо автору
 
   для: Vadim777   (22.09.2005 в 18:05)
 

Проверьте, передается ли у вас para. И надо придумать как ее передавать на вторую страницу: сделать это можно лубым из способов (post, get, session, cookie). Наверное, самое удобное - get или session

   
 
 автор: Vadim777   (23.09.2005 в 12:05)   письмо автору
 
   для: Loki   (22.09.2005 в 19:37)
 

Я наверно неправильно объяснил, у меня вообще выдаеться результат. Без поправки на "para", возможно это связанно с тем, что в скрипте есть Select * from, по идее * выдает весь результат, что имеется в таблице( если я прав?) у меня проблема в том, что выводится первая страница с 10 результатами, а при клацании второй появляется надпись, что не введены параметры запроса. Я закомментировал это место скрипта, где требуется выбрать рубрику, и при клацании на вторую страницу появляется надпись:


You have an error in your SQL syntax near 'ORDER BY customerid DESC LIMIT 10, 10' at line 2

   
 
 автор: cheops   (23.09.2005 в 15:01)   письмо автору
 
   для: Vadim777   (23.09.2005 в 12:05)
 

Вам нужно $_POST['searchtype'] передавать вместе с ссылкой на другую страницу. А в начале страницы проверять передан ли параметр $_POST['searchtype'], если нет, то использовать параметр $_GET['searchtype'].
<?php
  
if(isset($_POST['searchtype'])) $_POST['searchtype'] = $_GET['searchtype'];
?>

   
 
 автор: Vadim777   (23.09.2005 в 15:31)   письмо автору
 
   для: cheops   (23.09.2005 в 15:01)
 

я видимо, что то напутал. Потому что как нет второй страницы, так и нет. Я ввел последний код в начала скрипта, разницы нет.

   
 
 автор: cheops   (23.09.2005 в 15:45)   письмо автору
 
   для: Vadim777   (23.09.2005 в 15:31)
 

А в вот эти ссылки добавили параметр searchtype = $_POST['searchtype']?
  echo "&nbsp;<a title='Первая страница ;' class=menuinfo href=index.php?page=1>&lt;&lt;</a>&nbsp;"; 
  if($page > 1) echo "&nbsp;<a title=Первая страница  class=menuinfo href=index.php?page=".($page - 1).">&lt;</a>&nbsp;"; 
  for($i = $str_begin; $i<=$str_end; $i++) 
  { 
    if($page == $i) 
      echo "&nbsp;$i&nbsp;"; 
    else 
      echo "&nbsp;<a title='Открытьстраницу' class=menuinfo href=index.php?page=".$i.">$i</a>&nbsp;"; 
  } 
  if($page < $number) echo "первая страница' class=menuinfo href=index.php?page=".($page + 1).">&gt;</a>&nbsp;"; 
  echo "&nbsp;<a title='первая страница' class=menuinfo href=index.php?page=$number>&gt;&gt;</a>&nbsp;";

   
 
 автор: Vadim777   (23.09.2005 в 16:33)   письмо автору
 
   для: cheops   (23.09.2005 в 15:45)
 

я слишком темный, (пока:)), все, что я сделал, это подставил названия своей страницу result.php, вместо index.php.
Разжуйте плиз!

   
 
 автор: Loki   (23.09.2005 в 16:53)   письмо автору
 
   для: Vadim777   (23.09.2005 в 16:33)
 

вторая страница ничего не знает о данных переданных первой странице, поэтому эти данные надо передать и второй странице тоже. Сделать это можно через строку адреса, как и рекомендует cheops:
имя файла.php?имя переменной=значение переменной
и ко всем ссылкам ведущим на вторую страницу надо подставить эту конструкцию.

   
 
 автор: Vadim777   (23.09.2005 в 18:13)   письмо автору
 
   для: Loki   (23.09.2005 в 16:53)
 

понял, у меня сейчас выдает:
You have an error in your SQL syntax near 'ORDER BY customerid DESC LIMIT 0, 10' at line 2

$select_sql = "SELECT *  FROM  ".$_POST['searchtype']."
                 $tmp ORDER BY customerid DESC
                 LIMIT $begin, $pnumber";

   
 
 автор: Vadim777   (26.09.2005 в 12:10)   письмо автору
 
   для: Vadim777   (23.09.2005 в 18:13)
 


if(isset($_POST['searchtype'])) $_POST['searchtype'] = $_GET['searchtype'];

Если это место закомментировать - выводится хотябы первая страница???

   
Rambler's Top100
вверх

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