[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Фильтр подкатегории на основе выбора категории
stepan_fed
здравствуйте, уважаемые

я совсем еще новачок в php, пробую сделать первый проект, пока вроде все получается, но столкнулся с след. задачей, по которой прошу у вас подсказки.

И так, есть форма добавления объявления, в которой есть Поле "Рубрика" и "Подрубрика".

В поле "Рубрика" я вывел информацию для выбора.
А вот с полем Подрубрика у меня проблема, так как незнаю как реализовать вывод подрубрик которые относятся только к выбраной рубрике.


У меня есть 2 таблицы, в одной из них есть список рубрик, а в другой список подрубрик с id главной рубрики.

Чуствую что задача очень простая, но не могу никак решить.

Если кто-то сможет, прошу описать как решить подобную задачу?

спасибо!



Спустя 5 минут, 23 секунды (17.07.2012 - 15:25) nikolasline написал(а):
Почитайте про LEFT JOIN в MYSQL

Спустя 2 минуты, 1 секунда (17.07.2012 - 15:27) nikolasline написал(а):
Могу написать SQL запрос если предоставите названия таблиц и полей.

Спустя 9 минут, 32 секунды (17.07.2012 - 15:37) stepan_fed написал(а):
Цитата (nikolasline @ 17.07.2012 - 12:27)
Могу написать SQL запрос если предоставите названия таблиц и полей.

таблица с рубриками: categories
есть 2 колонки:id и title

таблица с подрубриками:sub_cat
3 колонки:
id, sub_cat, main_cat
в колонке sub_cat - названия всех подрубрик
в колонке main_cat - id рубрики из таблицы categories

буду очень благодарен за помощь!


Спустя 6 минут, 24 секунды (17.07.2012 - 15:43) nikolasline написал(а):
SELECT sub_cat.* FROM categories INNER JOIN sub_cat on categories.id = sub_cat.main_cat WHERE categories.id='1'
1 - id категории

Спустя 15 минут, 32 секунды (17.07.2012 - 15:59) stepan_fed написал(а):
Цитата (nikolasline @ 17.07.2012 - 12:43)
SELECT sub_cat.* FROM categories LEFT JOIN sub_cat on categories.id = sub_cat.main_cat WHERE categories.id='1'

1 - id категории

спасибо большое!

вывод подрубрики где id = 1 получается.

но вот когда я выбираю другую рубрику, ничего не меняется.

У меня на страничке есть форма, в которой много полей, первые из них: Рубрика и Подрубрика.

Так я вывожу рубрики в лист:
<label>Рубрика* <select name="cat">
<?php
$result = mysql_query("SELECT * FROM categories", $db);
$myrow = mysql_fetch_array ($result);
do
{
printf ("<option>%s</option>", $myrow['title']);
}
while ($myrow = mysql_fetch_array ($result));

?>
</select></label>

после этого идет поле с выбором рубрики:
<label>Подрубрика* <select name="sub_cat">
<?php
$result1 = mysql_query("SELECT sub_cat.* FROM categories LEFT JOIN sub_cat on categories.id = sub_cat.main_cat WHERE categories.id='2'", $db);
$myrow1 = mysql_fetch_array ($result1);
do
{
printf ("<option>%s</option>", $myrow1['sub_cat']);
}
while ($myrow1 = mysql_fetch_array ($result1));
?>
</select></label>


как вы думаете в чем проблема.
мне кажется что проблема в том что я не так вывожу рубрики!

Спустя 25 минут, 58 секунд (17.07.2012 - 16:25) nikolasline написал(а):
Ето лучше заменить

<?php
$result1 = mysql_query("SELECT sub_cat.* FROM categories LEFT JOIN sub_cat on categories.id = sub_cat.main_cat WHERE categories.id='2'", $db);
$myrow1 = mysql_fetch_array ($result1);
do
{
printf ("<option>%s</option>", $myrow1['sub_cat']);
}
while ($myrow1 = mysql_fetch_array ($result1));
?>



на:

<?php
$result1 = mysql_query("SELECT sub_cat.* FROM categories INNER JOIN sub_cat on categories.id = sub_cat.main_cat WHERE categories.id='2'", $db);
while ($myrow1 = mysql_fetch_array ($result1))
{
printf ("<option>%s</option>", $myrow1['sub_cat']);
}

?>


Спустя 10 минут, 6 секунд (17.07.2012 - 16:35) nikolasline написал(а):
Вот весь код:

<form>
<
label>Рубрика* <select name="cat" onchange="location.href='index.php?sub_category='+this.value">
<?php
$result = mysql_query("SELECT * FROM categories", $db);
while($myrow = mysql_fetch_array ($result))
{
echo "<option value='{$myrow['id']}'>{$myrow['title']}<option>";
}
?>
</select>
</
label>
<
label>Подрубрика*
<
select name="sub_cat">
<?php
$result1 = mysql_query("SELECT sub_cat.* FROM categories INNER JOIN sub_cat on categories.id = sub_cat.main_cat WHERE categories.id='{$_REQUEST['sub_category']}'", $db);
while ($myrow1 = mysql_fetch_array ($result1))
{
printf ("<option>%s</option>", $myrow1['sub_cat']);
}
?>
</select></label>
</
form>

Спустя 41 минута, 58 секунд (17.07.2012 - 17:17) stepan_fed написал(а):
код заработал!

но есть такой момент:

- когда выбираю первую рубрику, не вискакивают подрубрики.
- когда открываю список с рубриками и вибираю одну из них, выбираются подрубрики, но сразу после этого рубрика становится та что по дефолту, тоесть первая, при этом подрубрики остаются от выбраной рубрики!

спасибо!


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.