За последние 24 часа нас посетили 17575 программистов и 1716 роботов. Сейчас ищут 1832 программиста ...

Вывод из базы заметок из нужной категории

Тема в разделе "PHP и базы данных", создана пользователем newstarter, 31 авг 2013.

  1. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Roman_che, запрос ничего не выводит, даже title страницы не выводится из базы. И заметки нет, которая была.

    Добавлено спустя 5 минут 12 секунд:
    Игорь, вывелось следующее:

    Что это показывает?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    показывает, что категория у тебя в запросе-то отсутствуед!

    и поля бери в обратные кавычки
     
  3. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Игорь, добавил категорию в запрос:

    Насчет обратных кавычек не понял. Покажи, какой это символ и куда его в запрос
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    на Ё
    Код (PHP):
    1. $query = "SELECT * FROM `posts` WHERE `cat_id`='$cat' ORDER BY `date` DESC, `id` DESC LIMIT 5";
    2. echo "<br>ВОТ ЗАПРОС [[$query]]<br>";
    3. $result2 = mysql_query($query,$db);
    4. var_dump($result2); 
     
  5. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Пишет:

    Что это значит? В cat_id показался номер первой категории.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну работает как надо или опять две?
     
  7. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Так просто выводится надпись эта на экран. А для чего был этот запрос, который ты мне последним посоветовал?
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чувак, я заменил твой код этим. остальной твой код надо ж тоже использовать =)))))))))))

    Добавлено спустя 34 секунды:
    давай, просыпайся. надо читать код и думать, что он делает и как его применять до того, как запускать
     
  9. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Игорь, я вставил под твоим кодом прежний - получился вывод названий заметок за первую категорию. Эти же названия выводятся и под заметками из второй категории, т.е. везде теперь по умолчанию стоит первая категория.
    А нужно-то, чтобы названия под заметкой выводились из одной с этой заметкой категории (если первая, то из первой, если вторая, то из второй).
    Дело не в том, чтобы думать, что делает твой код, дело в том, что я не знаю этих функций) И мне непонятно для чего ты мне его подсказал))
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну ты в запросе запрашивай нужную. =) если у тебя в переменной нужная то и выведет нужные. видимо не то запрашиваешь.
     
  11. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Круто. Продвинулись. Спасибо, Игорь! Удачи тебе. (Ирония, если что)
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ну страдай один, если ты такой петросян. капец.
     
  13. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Да, ладно, умный ты наш, ты и не собирался помогать))) разыгрываешь из себя здесь Будду, даже противно. Когда я что-то знаю и могу этим помочь, то просто говорю как есть, а не ломаюсь, как школьница. Не отвечай здесь больше и не отнимай моего времени.
     
  14. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    newstarter, тебе всё давно сообщили.
    В твоём скрипте проблема, что иногда создаётся не верный SQL запрос.
    Чтобы узнать, какой именно запрос создаётся, тебе и посоветовали выводить в браузер.
    Ты привёл свой вариант в первом посте
    Код (Text):
    1. $result2 = mysql_query("SELECT * FROM posts WHERE cat_id='$cat' ORDER BY date DESC, id DESC LIMIT 5",$db);
    Он в целом верный. Тебе igordata посоветовал посмотреть получающийся запрос так
    Код (Text):
    1. $query = "SELECT * FROM `posts` WHERE `cat_id`='$cat' ORDER BY `date` DESC, `id` DESC LIMIT 5";
    2. echo "<br>ВОТ ЗАПРОС [[$query]]<br>";
    чтобы ты проверил, что в условии WHERE `cat_id`=...
    точно оказывается значение переменной $cat. У тебя там оказалась 1, значит, всё ок.
    Можешь закомментировать вывод в браузер (вторую строку из примера) и заменить свой запрос на
    Код (Text):
    1. $result2 = mysql_query("SELECT * FROM `posts` WHERE `cat_id`='$cat' ORDER BY `date` DESC, `id` DESC LIMIT 5",$db);
    Проблема в том, что переменная $cat иногда бывает с пустой строкой, потому в SQL запросе получается такое условие
    WHERE `cat_id`='' , из-за которого выводятся обе категории.
    Возможно, в get параметрах приходит пустая строка. В таком случае твой код
    Код (PHP):
    1. if (isset($_GET['cat_id'])) {$cat = $_GET['cat_id']; }
    2. if (!isset ($cat)) {$cat = 1;}
    заменить на
    Код (PHP):
    1. $cat = 1;
    2. if (isset($_GET['cat_id'])) {
    3.  $cat = (int)$_GET['cat_id'];
    4.  if ($cat <= 0) $cat = 1;
    5. }
    или подобный, чтобы в переменной $cat всегда было значение.
     
  15. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    YSandro, большое вам СПАСИБО. Если бы мне сразу объяснили, для чего советуют тот или иной запрос, а не включали тайну, было бы легче понять. Вот как вы здесь объяснили. Все логично и понятно.

    Только вот с этой частью не получается. У меня ведь категории две, изначально идея была, чтобы под заметкой из определенной категории выводились названия других заметок ТОЙ ЖЕ категории. Т.е. если из второй, то относящиеся ко 2-й. Теперь же везде выводятся только к первой. Код получается неуниверсальный, выводит только одну категорию. С этой частью что-то можно еще сделать?

    p.s. Еще раз Спасибо!
     
  16. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Значит, не приходит get параметр cat_id. Если бы он приходил, то оказывался бы в массиве $_GET по ключу'cat_id' (то есть в $_GET['cat_id']) и переменной $cat присваивалось бы какое-нибудь значение в строке
    Код (Text):
    1. $cat = (int)$_GET['cat_id'];
     
  17. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Судя по всему, по умолчанию присваивается первая категория.
     
  18. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Верно, по умолчанию первая в строке
    Код (Text):
    1. $cat = 1;
    Далее мы узнаём, есть ли в массиве $_GET что-нибудь под ключом 'cat_id'
    Код (Text):
    1. if (isset($_GET['cat_id'])) {
    2. ...
    Но, раз там ничего нет, то остаётся единица.
     
  19. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Сюрреализм какой-то! В таблице posts в cat_id есть как 1, так и 2, текст запрашиваемых по id заметок выводится полностью из обеих категорий без проблем. Как же в массив может попадать только значение одной категории? 0_0
     
  20. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ну сделай вывод массива в браузер, посмотри, что приходит
    Код (Text):
    1. var_dump($_GET);
    , есть ли cat_id, какое имеет значение.
     
  21. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    Выдает очередное заклинание -
     
  22. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ну вот, в массиве есть данные только по ключу 'id', по 'cat_id' ничего нет.
     
  23. newstarter

    newstarter Активный пользователь

    С нами с:
    3 сен 2012
    Сообщения:
    51
    Симпатии:
    0
    А какие могут быть наиболее вероятные причины? Ведь все в коде вроде правильно указано и таблица есть.
     
  24. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    В массив $_GET попадают параметры, переданные с адресом из браузера, например, адрес_сайта.ру/page.php?id=6, или созданные и переданные от сервера (через правила в файле .htaccess). Второй вариант нас пока не интересует, это просто информация на всякий случай. Остаётся очевидная причина, почему в массиве $_GET нет данных по ключу 'cat_id': потому, что браузер не передаёт параметр cat_id. Если бы передавал, это выглядело бы как-то так: адрес_сайта.ру/page.php?id=6&cat_id=3