Отображение содержимого категории с содержанием подкатегорий

У меня есть основные категории и подкатегории.

на 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." и список здесь на той же странице.

Я застрял.

1

Решение

Таким образом, вам также необходимо получить идентификаторы подкатегорий, вы можете встроить второй запрос в этот запрос (или разделить его на два отдельных, но это добавит еще один запрос к серверу).

Вы бы поместили что-нибудь по этим направлениям:

$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, я недостаточно знаком с ними, но они будут выполнять дезинфекцию пользовательского ввода для вас.

1

Другие решения

Других решений пока нет …