Автор Тема: Постраничный вывод!  (Прочитано 13803 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн wheelszeus

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Постраничный вывод!
« : 24 Января 2005, 11:30:30 »
Здравствуйте уважаемые. На форуме не раз рассматривалась тема постраничного вывода, но я все таки задам свой вопрос... почти во всех постах на эту тему запросы в базу были простые типа - SELECT * FROM catalog ...
Если я делаю простой запрос, то у меня все работает, а если запрос с условием, то нихрена не работает - выводит например первые 10 записей и показывает все страницы, но если нажимаю напимер на 5-ую страницу, то ничего нет - пусто. Подскажите почему.
Вот такой скрипт:
$lines_per_page = 5; //кол-во записей на страницу

include "dblib.php";
//ñíà÷àëà óçíàåì êîëè÷åñòâî ÂÑÅÕ çàïèñåé

$type_sdelki = "Аренда";
$show = "yes";
$ref = "";


     if ($country == type_c)
        {
         if ($type_home == type_h)
             {
              $sql = "SELECT * FROM catalog WHERE type_sdelki = \\"$type_sdelki\\" AND hide_show = \\"$show\\"
        ";
             }
         else
             {
              $sql = "SELECT * FROM catalog WHERE type_sdelki = \\"$type_sdelki\\" AND hide_show = \\"$show\\" AND type_home = \\"$type_home\\"
        ";
             }
        }
     else
         {
          if ($type_home == type_h)
              {
               $sql = "SELECT * FROM catalog WHERE type_sdelki = \\"$type_sdelki\\" AND hide_show = \\"$show\\" AND country = \\"$country\\"
        ";
              }
          else
              {
               $sql = "SELECT * FROM catalog WHERE type_sdelki = \\"$type_sdelki\\" AND hide_show = \\"$show\\" AND type_home = \\"$type_home\\" AND country = \\"$country\\"
        ";
              }
         }

$result = mysql_query($sql);
$all_lines = mysql_num_rows($result);
 if (!isset($page) or empty($page) or $page<=0) $page=1;
 else $page=(int)$page;
 $page_for_query = $page-1;
 $lpos = $page_for_query * $lines_per_page;

$sql_go = $sql . "ORDER BY add_date DESC LIMIT $lpos, $lines_per_page";

 $result = @mysql_query($sql_go) or die("$sql_go failed1!
".mysql_error());
while ($row = mysql_fetch_array($result)) {
        $id = $row[\'id\'];
        $ref = $row[\'ref\'];
        $country= $row[\'country\'];
        $type_sdelki = $row[\'type_sdelki\'];
        $type_home = $row[\'type_home\'];
        $title = $row[\'title\'];
        $city = $row[\'city\'];
        $desc_small = $row[\'desc_small\'];
        $price = $row[\'price\'];
        $type_home = $row[\'type_home\'];
        $img1 = $row[\'img1\'];

        $display_block .= "

       







\\"\\"
$country | $city | $type_home

Цена: $price

$desc_small


\\"\\"

        ";

}
echo $display_block;
$count_pages = ceil($all_lines / $lines_per_page);
if ($count_pages>1) {
 for ($i=1; $i<=$count_pages; $i++) {
   if($page==$i and $i!=1) {echo " | $i";}
   elseif ($page==$i and $i==1) {echo "1";}
   elseif($i==1 and $page!=$i) {echo "$i";}

   elseif($i!=1 and $page!=$i) {echo " | $i";}
 }
}
?>
Извините за длинный код.
В чем тут ошибка? Почему когда я нажимаю на 2-ую страницу - открывается пустой лист? Иеще вопросик... как сюда прикрутить кнопки НАЗАД и ВПЕРЕД?
Заранее спасибо.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #1 : 24 Января 2005, 12:15:21 »
Цитировать
wheelszeus:
В чем тут ошибка?

Ищи сам. PHP FAQ: Ничего не работает! Что делать???

Раз тема сто раз обсуждалась - так пойди и возьми готовый код.
никакой разницы, какой запрос - сложный или простой - нету, конечно же

Оффлайн wheelszeus

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #2 : 24 Января 2005, 12:21:08 »
В том и дело, что я уже все перепробывал. Я думаю что когда я перехожу на вторую страницу, переменные $country и $type_home теряются. Т.е. теряется их значение и запрос идет с пустыми значениями, и поэтому ничего не выводится. Вот с этим как бороться?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #3 : 24 Января 2005, 12:31:59 »
Вот видишь.
Можешь же ведь задать вопрос по-человечески, если захочешь.
дело, оказывается, не в запросе, а в переменных.
естественно - теряются. А ты как хотел?
То есть, ты прямо рассчитывал, что они откуда-то сами возьмутся?
Скажи-ка, мил человек, а ты фак на танке-то читал?

И ещё.
Цитировать
wheelszeus:
переменные $country и $type_home теряются. Т.е. теряется их значение

с чего ты взял,что теряется только значение, а не вся переменная целиком?

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Постраничный вывод!
« Ответ #4 : 24 Января 2005, 12:52:56 »
Не стал разбиратся в твоем коде.
И предпологаю, что за тебя никто не будет писать скрипт постраничного вывода.

Цитировать
wheelszeus:
 На форуме не раз рассматривалась тема постраничного вывода, но я все таки задам свой вопрос... почти во всех постах на эту тему запросы в базу были простые типа - SELECT * FROM catalog ...


SELECT * FROM some_table LIMIT($page, количество выводиых записей на страницу) - это основа. Без этого у тебя ничего и никогда не зара,отает. Вжно это понять. А потом уже составлять свой алгоритм программы который будет обрабатывать это все.

Далее приведу свой алгоритм построения:
Что нам нужно ?
1. Общее количество записей.
2. Лимит(выводимых данных).
3. Из этого можно извлечь  общее количество страниц.
ceil(общее количество записей/лимит);

4. Дальше идет ряд условий при которых выводишь текст типа "НАЗАД" с ссылкой где нужно убавить параметр страницы(int) на 1 единицу] а на счет Вперед ты наверное уже и сам догодлся.)

5. И конечно же последний пункт - это цикл где тебе придется перебрать общее количество страниц.
[off]Безработный[/off]

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Постраничный вывод!
« Ответ #5 : 24 Января 2005, 12:57:08 »
RomikChef
Ого! сколько всего произошло за время написания моего поста :)

wheelszeus
Ндеюсь, тебе пойдет на пользу.
[off]Безработный[/off]

Оффлайн wheelszeus

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #6 : 24 Января 2005, 13:01:59 »
На форум пришел, потому что не могу написать сам. А алгоритм знаю, тока ничего не получается, вот и прошу помощи.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #7 : 24 Января 2005, 13:04:40 »
wheelszeus
раз не можешь написать сам - отвечай на вопросы, которые тебе задают.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #8 : 24 Января 2005, 13:10:45 »
Если ты не можешь сделать - значит, ты чего-то не понимаешь.
Для того, чтобы тебе ответить - надо сначала понять - что именно ты не понимаешь.
чтобы понять - надотебе задать вопросы. И ещё надо, чтобы ты на них ответил.

Оффлайн wheelszeus

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #9 : 24 Января 2005, 13:27:37 »
Хорошо. может я плохо плохо задаю вопросы... попробую еще раз.
Есть запрос, далее я все сделал как написал for_i_0. Все вывелось нормально, но видимо переменная куда то исчезает. Куда и почему я не зна. Вот это и прошу объяснить мне. Именно это я не понимаю.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #10 : 24 Января 2005, 13:35:23 »
окей.
повторим для тех, кто не видел
Дубль два.

Вот видишь.
Можешь же ведь задать вопрос по-человечески, если захочешь.
дело, оказывается, не в запросе, а в переменных.
естественно - теряются. А ты как хотел?
То есть, ты прямо рассчитывал, что они откуда-то сами возьмутся?
Скажи-ка, мил человек, а ты фак на танке-то читал?

И ещё.
Цитировать
wheelszeus:
переменные $country и $type_home теряются. Т.е. теряется их значение

с чего ты взял,что теряется только значение, а не вся переменная целиком?

Здесь имеется три вопроса.
Не затруднит ли тебя на них ответить?

Оффлайн wheelszeus

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #11 : 24 Января 2005, 14:22:43 »
1. Почему теряются я понял, но тогда как их передать дальше? Через сессии или еще как то?
2. Сами переменные не возьмуться ниоткуда, но я все равно не понимаю откуда их взять.
3. Фак читал, но ничего нового не нашел.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Постраничный вывод!
« Ответ #12 : 24 Января 2005, 14:37:26 »
Цитировать
wheelszeus:
1. Почему теряются я понял, но тогда как их передать дальше? Через сессии или еще как то?
2. Сами переменные не возьмуться ниоткуда, но я все равно не понимаю откуда их взять.


Какие сессии ? Перед тем как юзать сессии необходима понять для каких целей они предназначены. далее  

Их нужно передавать в твоем случае в адресной строке. И называется этот метод передачи GET. далее

Цитировать
wheelszeus:
3. Фак читал, но ничего нового не нашел.


Сомневаюсь. Это я не с воздуха беру. А сужу по твоим вопросам.
[off]Безработный[/off]

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #13 : 24 Января 2005, 14:38:45 »
Цитировать
wheelszeus:
 Сами переменные не возьмуться ниоткуда, но я все равно не понимаю откуда их взять.

оттуда же, откуда они брались на первой странице
это очевидно

Оффлайн wheelszeus

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 32
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Постраничный вывод!
« Ответ #14 : 25 Января 2005, 12:18:49 »
еще раз, вот что я делаю:
коннект к базе и выбор базы
sql запрос
узнаю колво записей
потом делаю запрос с LIMIT
потом идет ряд условий и т.д.
все работает, но вторая страница не показывает ничего
вот тут проблема! просто скажите как передавать переменные, что б они не терялись и все

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28