Уважаемые знатоки форума, Все, после нескольких бессонных ночей за кодами мозг отказывается варить. Помогите пожалуйста. Имеются две таблицы -- Таблица категорий cats с id и title (категории всего две) Таблица заметок posts с id, cat_id и title Нужно было составить запрос к базе так, чтобы на странице заметки выводились названия 5 заметок из той же категории (если заметка принадлежит к категории 1, то 5 названий из категории 1, а если заметка из категории 2, то 5 названий из категории 2). Имеется также мой вариант запроса: Код (Text): $result2 = mysql_query("SELECT * FROM posts WHERE cat_id='$cat' ORDER BY date DESC, id DESC LIMIT 5",$db); Но он не работает так, как нужно - выводит 5 названий из обеих категорий. Как можно составить запрос, чтобы вышел нужный результат? Заранее СПАСИБО за понимание и помощь!
Честное пионерское, не работает. Пробовал LEFT JOIN, вообще ничего не выводит. Проблема остается открытой(
чувак, чувак. спакуха. у тебя категория прописана в таблице с постами. нафига тебе джоины? Добавлено спустя 38 секунд: наверное в темноте писькой можно нащупать, ага?
Так я знаю, что прописана, просто выводятся названия заметок по обеим категориям. Может все же в запросе что-то не то? Никаких ошибок не видите? А нужно-то названия по какой-то одной, к которой относится та, что на странице уже.
по каким блин обеим, если у вас там ОДНО значение? Добавлено спустя 35 секунд: дык вы выводите запрос на экран перед посылкой в бд. много нового узнаете. Добавлено спустя 20 секунд: а потом его копируете и в пма вставляете и еще больше узнаете!
Рад, что вам весело, спорить не собираюсь, суть проблемы описал еще в первом сообщении здесь. Если у вас все, прошу сюда больше не писать. Кто знает и умеет, тот помогает, а не умничает зря.
ебать Ты знаешь что такое пма? ты понял, что я тебе сказал сделать? Если нет - задай вопрос. Обижаться в детском саду надо было.
Я не просил меня грузить непонятными сокращениями. Хочешь помочь, объясняй толково, без плоских шуток и школьных смайлов. Гугл на пма выдает технические аббревиатуры. Форумы не для одних просветленных, нужно и это понимать.
Я вставил код, phpmyadmin выдал мне такое: Ошибка SQL-запрос: $result2 = mysql_query( "SELECT * FROM posts WHERE cat_id='$cat' ORDER BY date DESC, id DESC LIMIT 5", $db ); Ответ MySQL: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$result2 = mysql_query("SELECT * FROM posts WHERE cat_id='$cat' ORDER BY date DE' at line 1 Выходит, все же что-то не так в запросе?
Игорь, я загрузил запрос SELECT from 'posts' WHERE cat_id=1 и SELECT from 'posts' WHERE cat_id=2, phpmyadmin показал заметки сначала по первой категории, потом по второй. Кстати зачем это нужно было сделать? Что должен был показать pma?
newstarter, пиши так: Код (Text): $sql = 'SELECT * FROM posts WHERE cat_id='.$cat.' LIMIT 5'; // Запрос на вывод 5ти значений из таблицы posts, где cat_id = $cat $result2 = mysql_query($sql, $db);
Roman_che, Спасибо, но не поверите. Выводит заметки по обеим категориям, и все тут. В таблице в поле cat_id стоят два разных значения, а выводит и из первой, и из второй. Что же это такое, где ошибка? Может в самом верхнем коде создается конфликтующий запрос? Так у меня в самом верху для вывода самой заметки на страницу. Замысел такой был: заметка, а под ней - список из 5 названий из той же категории: Код (Text): <?php include ("blocks/bd.php"); if (isset ($_GET['id'])) {$id = $_GET['id'];} if (isset($_GET['cat_id'])) {$cat = $_GET['cat_id']; } if (!isset ($cat)) {$cat = 1;} if (!preg_match("|^[\d]+$|", $cat)) { exit ("<p>Неверный формат запроса! Проверьте URL!"); } $result = mysql_query("SELECT * FROM posts WHERE id='$id'",$db); $myrow = mysql_fetch_array($result); ?>
То, что я прав, и грабли где-то в коде, а запрос работает именно так, как я писал - выводит гарантированно только одну категорию и никак иначе. Добавлено спустя 1 минуту 19 секунд: я ж те грю, глянь запрос-то. завардампи текущий массив и т.п.
Код (Text): <?php include ("blocks/bd.php"); if (isset ($_GET['id'])) {$id = $_GET['id'];} if (isset($_GET['cat_id']) && intval($_GET['cat_id'])) {$cat = intval($_GET['cat_id']); } else{$cat = 1;} $sql = 'SELECT * FROM posts WHERE id='.$id; // получаем значение из таблицы POSTS if(!@extract(mysql_fetch_array(mysql_query($sql)))) { // нет нужной строчки в таблице posts exit('<p>Ничего не найдено...</p>'); } // теперь нужный id у нас в переменной соответсвующей названию поля // проверяем правильность echo '__________________________'; echo "id = ".$id.''; echo "cat_id = ".$cat_id ; // искомая величина echo "title = ".$title ; echo '__________________________'; $sql = 'SELECT * FROM posts WHERE cat_id='.$cat_id.' LIMIT 5'; // Запрос на вывод 5ти значений из таблицы posts, где cat_id = $cat $result2 = mysql_query($sql, $db); echo 'Искомые строчки:'; while ($row = mysql_fetch_array($result2)){ extract($row); echo 'id = '.$id; echo 'cat_id = '.$cat_id; echo 'title = '.$title; } ?> что выводит?
меняем на Код (PHP): $query = "SELECT * FROM posts WHERE cat_id='$cat' ORDER BY date DESC, id DESC LIMIT 5"; echo "<br>ВОТ ЗАПРОС [[$query]]<br>"; $result2 = mysql_query($query,$db); var_dump($result2);