У меня есть основные категории и подкатегории.
на cat.php? id = 1 страница; (id = 1 — главная категория)
Я хочу показать также содержание подкатегорий.
Моя таблица категорий:
id - sub - title
(если sub = 0, это означает, что это основная категория. если не ее подкатегория)
Мой текущий запрос таков;
<?php
$id = $_GET['id'];
$data = mysql_query("select * from content where category=".$id." order by id desc");
while($r=mysql_fetch_array($data))
{
echo "$r[id] - $r[title]";
}
?>
Показывает только содержимое основной категории, но не содержимое подкатегорий. (в cat.php? id = 1)
*
Я думаю, что мне нужно снова подключить таблицу категорий, чтобы получить идентификатор подкатегории. ???
Конечно, мне нужен новый запрос. мне нужно получить sub=".$id."
и список здесь на той же странице.
Я застрял.
Таким образом, вам также необходимо получить идентификаторы подкатегорий, вы можете встроить второй запрос в этот запрос (или разделить его на два отдельных, но это добавит еще один запрос к серверу).
Вы бы поместили что-нибудь по этим направлениям:
$data = mysql_query("select * from content where category IN (SELECT id FROM categories WHERE id='$id' OR sub='$id') order by id desc");
Использование WHERE … IN позволяет выбрать несколько значений из списка, например (3,5,2)
Так что это будет выглядеть примерно так при выполнении подзапроса:
select * from content where category IN (1,3,2,5,13) order by id desc
ПРЕДУПРЕЖДЕНИЕ:
Вам необходимо санировать ваш $ _GET [‘id’], чтобы не происходило SQL-инъекций, в настоящее время это позволит SQL-инъекциям.
Кроме того, функции mysql_ устарели, и вам нужно начать использовать подготовленные операторы PDO, я недостаточно знаком с ними, но они будут выполнять дезинфекцию пользовательского ввода для вас.
Других решений пока нет …