[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод категории с подкатегориями
razoramus
Привет народ) Имеется навигация примерного вида ->

Видео
-видеоподкат1
-видеоподкат2
-видеоподкат3

Игры
-игрыподкат1
-игрыподкат2
--игрыподкат3

Галерея
-галереяподкат1
-галереяподкат2
-галереяподкат3

Видео, Игры, Галерея -> используются просто как шапки без ссылки. Ихние подкатегории - ссылки. Теперь надо навигацию автоматезировать. Создаю 2 таблички в БД (cat, subcat), соответсвенно в кат лежать категории, а субкат - подкатегории со связующей ячейкой.

Теперь встаёт вопрос - Как вывести это всё дело так, чтобы вид был как в списке навигации, показанный выше?

По началу я подумал отложить таблицу cat и использовать только subcat, то есть таким образом..

function queryCat($cat,$h4)
{
$querycat = mysql_query ("
SELECT `cat`,`title`,`url`
FROM `subcat`
WHERE `cat`="
.$cat."
ORDER BY `title`
"
)
or die(mysql_error());

if(mysql_num_rows($querycat) > 0)
{
echo '
<h4>'
.$h4.'</h4>
<ul>
'
;

while($rowcat = mysql_fetch_assoc($querycat))
{
echo '
<li>
<a href="/index.php?'
.$cat.'='.$rowcat['url'].'">'.$rowcat['title'].'</a>
</li>
'
;
}

echo '</ul>';
}

else
{
echo 'Утеряна связь с базой данных.';
}

}


Пример заполненных ячеек ->

ячейка cat - video (ячейка для указания к какой категории относится запись)
ячейка title - Сериал (название)
ячейка url - serial (чпу)

И вывод выглядит так ->

<?php queryCat('video','Видео'); ?>

В результате выдаёт ошибку ->
Unknown column 'video' in 'where clause'

Явно где то ошибка, только вот найти никак не могу.

Хотелось бы как то по автоматезированней. К примеру если я захочу создать ещё раздел и потом в нём какие-нибудь категории. Было бы славно :)

ps: если в тексте есть орфографические ошибки, то прошу прощения, писал сонный)



Спустя 11 часов, 19 минут, 50 секунд (6.06.2012 - 16:49) razoramus написал(а):
Эгегеееееей

Спустя 10 минут, 45 секунд (6.06.2012 - 16:59) vital написал(а):
табличка my_table
id|parent_id|text
0|null|корень
1|0|подкатегория

SELECT *  FROM my_table a left join my_table b on a.id = b.parent_id

Спустя 8 минут, 7 секунд (6.06.2012 - 17:08) razoramus написал(а):
Со вторым способом разобрался, там ковычки пропустил.
WHERE `cat`='".$cat."'


vital Можно по подробнее, что к чему?

Спустя 43 минуты, 42 секунды (6.06.2012 - 17:51) vital написал(а):
Цитата (razoramus @ 6.06.2012 - 16:08)
Со вторым способом разобрался, там ковычки пропустил.
WHERE `cat`='".$cat."'


vital Можно по подробнее, что к чему?

Все должно быть очевидно. Создай такую табличку как я описал и выполни запрос.

Спустя 2 часа, 31 минута, 31 секунда (6.06.2012 - 20:23) razoramus написал(а):
vital
Я тебя не понял, как она будет влиять на то, как мне нужно сделать? Покажи на моём примере и с коментами желательно.

Спустя 34 минуты, 21 секунда (6.06.2012 - 20:57) vital написал(а):
Цитата (razoramus @ 6.06.2012 - 19:23)
vital
Я тебя не понял, как она будет влиять на то, как мне нужно сделать? Покажи на моём примере и с коментами желательно.

Никак.
Я написал то - как правильно сделать то, что ты хочешь.

А то как сделал ты - это метод через задницу за который отрывают руки.

Спустя 21 минута, 53 секунды (6.06.2012 - 21:19) Gabriel написал(а):
хорошо, сегодня буду добрым )
тебе создали табличку и дали запрос который отбрасывает нужду в создании 2й таблицы и зацыкленного запроса.

Спустя 25 минут, 54 секунды (6.06.2012 - 21:45) razoramus написал(а):
vital
Цитата (razoramus @ 6.06.2012 - 17:23)
Никак.
Я написал то - как правильно сделать то, что ты хочешь.

А то как сделал ты - это метод через задницу за который отрывают руки.

Дак ты научи! Я написал так, как знаю я. Вот ты мне и покажи как сделать правильно!

Спустя 3 минуты, 40 секунд (6.06.2012 - 21:49) razoramus написал(а):
Цитата (Gabriel @ 6.06.2012 - 18:19)
хорошо, сегодня буду добрым )
тебе создали табличку и дали запрос который отбрасывает нужду в создании 2й таблицы и зацыкленного запроса.

Да нихрена я не понял! вы мне напишите пример с последовательным описанием. От того что вы пишите непонятно что(для меня), от этого в голове ничего не прибавится.

Спустя 11 минут, 14 секунд (6.06.2012 - 22:00) Gabriel написал(а):
razoramus
хорошо дам объяснение в скиринах
user posted image

Спустя 59 минут, 36 секунд (6.06.2012 - 22:59) razoramus написал(а):
Gabriel Вроде немного догнал..

то есть сейчас я создаю колонку с надписью `parent` и в этой же таблице добавляю строки с названием разделов (Видео, Музыка т.д.) со значением `0`, и для категорий значение `1`. На листочке расписал примерно как это будет работать. А почему именно LEFT JOIN а не INNER JOIN, зачем лишние поля с нулевым значением? Вот набросал из ваших примов запрос.

<?php
$query = mysql_query = ("
SELECT `a.title` as `title2`, `b.title` as `title2`
FROM `categories` as `a` INNER JOIN `categories` as b on `a.id` = `b.parent`
"
) or die(misql_error());
?>

Спустя 1 час, 22 минуты, 6 секунд (7.06.2012 - 00:22) vital написал(а):
Цитата
Дак ты научи

20$ час.
ЧТо за требования? Я тебе ничего не обязан.

Пришел такой школьник и считает что на форуме всем больше делать нехер кроме как его учить. В задницу послан.


 ! 

М
Тебя предупреждали, ты не понял. Бан на неделю. Если не поймешь, то будет на год бан.
sergeiss

Спустя 5 минут, 54 секунды (7.06.2012 - 00:27) razoramus написал(а):
vital
Цитата (razoramus @ 6.06.2012 - 19:59)
Пришел такой школьник и считает что на форуме всем больше делать нехер кроме как его учить. В задницу послан.

Школьником я был 7 лет назад.
Цитата (razoramus @ 6.06.2012 - 19:59)
ЧТо за требования? Я тебе ничего не обязан.

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

Спустя 3 минуты, 33 секунды (7.06.2012 - 00:31) razoramus написал(а):
vital И с какова `Х` ты меня посылаешь? Ты мне никто, не хочещь помагать - не заставляю, найдутся люди(точнее уже нашлись), кторые помогут.

Спустя 3 минуты, 52 секунды (7.06.2012 - 00:35) vital написал(а):
Цитата
Ты сначала в профиль загляни и посмотри сколько мне лет

Строго пофигу сколько тебе лет, если развитие дальше не пошло. Только школьники считают что их все должны учить.
Цитата

Я по человечески попросил помоч

Цитата
Покажи на моём примере

Цитата
Вот ты мне и покажи как сделать правильно!

Цитата
Да нихрена я не понял! вы мне напишите пример с последовательным описанием

Я вижу одни восклицательные знаки = приказы, и ни одной просьбы не говоря уже о слове "пожалуйста".
ПРи этом - у тебя не было даже попытки осознать то, что я написал.

Цитата
Gabriel Ясно и понятно на скринах показал как создать и что из этого примерное получиться.

Скажи ему спасибо.

Спустя 50 секунд (7.06.2012 - 00:36) vital написал(а):
Цитата (razoramus @ 6.06.2012 - 23:31)
vital И с какова `Х` ты меня посылаешь? Ты мне никто, не хочещь помагать - не заставляю, найдутся люди(точнее уже нашлись), кторые помогут.

с того же, с к-го ты с меня что-то требуешь.

Спустя 16 минут, 52 секунды (7.06.2012 - 00:53) razoramus написал(а):
Gabriel Слушай, а если я создам две таблицы, к примеру в одной разделы, а во второй категории и так же через джоин объединю их. Просто так проще ориентироваться. В этом нет ничего прлохого, в том смысле что на скорость работы с базой это не повлияет?

Спустя 17 минут, 38 секунд (7.06.2012 - 01:10) razoramus написал(а):
vital
Цитата (vital @ 6.06.2012 - 21:35)
Только школьники считают что их все должны учить.

Если до тебя ещё не дошло, то объясню что это был всего лишь сарказм, под которым подразумивалось другое, а именно чтобы ты подробнее рассказал то, о чём написал, то есть "свой запрос".
Цитата (vital @ 6.06.2012 - 21:35)
Gabriel Ясно и понятно на скринах показал как создать и что из этого примерное получиться.


Цитата (vital @ 6.06.2012 - 21:35)
Скажи ему спасибо.

Уже сказал
Цитата (vital @ 6.06.2012 - 21:35)
Вот ты мне и покажи как сделать правильно!

прочитай последовательность общения и не вырывай из контекста, т.к. читается другим смыслом.
Цитата (vital @ 6.06.2012 - 21:35)
Да нихрена я не понял! вы мне напишите пример с последовательным описанием

Цитата (vital @ 6.06.2012 - 21:35)
Я вижу одни восклицательные знаки = приказы, и ни одной просьбы не говоря уже о слове "пожалуйста".
ПРи этом - у тебя не было даже попытки осознать то, что я написал.

Я общаюсь так как общаются обычные люди и знаки вежливости употребляю по мере необходимости, когда вижу что это будет к месту. А так как ты отвечаешь(помагаешь) мне в теме, тем самым мимо проходя зашёл и киданул запрос, который мне ничего не намекнул, я таким же жестом и тебе ответил. Понимаю ты бы написал этот запрос и прокоментировал что куда идёт, тогда да, было бы уместно сказать - "Извини, я не совсем допонял, не мог бы ты подсказать что это, а что с этим делать и как правильно запрос составить." Сколько тем не читал, в половине вечно раздувают из мухи слона. Это вы привыкли общаться между собой, такие, которые уже более-менее знают хорошо php, и когда заходит какой-нибудь проходжий и просит помочь не в совсем привычной для вас обстановке, то вы начинаете ему толковать что да ты мол школьник иди подучись у тебя руки из жопы растут да ты говнокодер. Вы не сравнивайте начинающих со своими знаниями.

Спустя 4 минуты, 36 секунд (7.06.2012 - 01:15) Gabriel написал(а):
1) у тебя есть тумбочка с 2мя ящиками в одном носки в другом майки
2) у тебя есть тумбочка с одним ящиком в котором с права носки а с лева майки
Внимание вопрос:
Из какой тумбочки получится достать быстрее?
Вот с 2мя таблицами будет тоже самое(скорее всего).

ЗЫ. ану харе срач разводить.

Спустя 7 минут, 37 секунд (7.06.2012 - 01:22) razoramus написал(а):
Gabriel
Да я вот тоже думаю что лучше то одна, просто всё всемте и всё вперемешку, глаза разбегаются. Пока подумаю, вроди как разделов немного, около 7, да и категорий в общем то около 60, не так уж и много.

Ещё раз Благодарю за помощь. Скрины очень помогли. + в карму поставил)

Цитата (razoramus @ 6.06.2012 - 22:10)
ЗЫ. ану харе срач разводить.

laugh.gif

Спустя 27 минут, 58 секунд (7.06.2012 - 01:50) Gabriel написал(а):
3 колонки чему тут разбегаться? вот когда их 20+ то да.
Это сейчас их мало, а через месяц будешь думать чего же сайт так медленно грузит.
Так что думай.

Спустя 45 минут, 12 секунд (7.06.2012 - 02:36) razoramus написал(а):
Gabriel
Я пока разделил на 2 таблицы и создал запрос..

function queryCat()
{
$querycat = mysql_query ("
SELECT
`c`.`title` AS `c_title`,
`c`.`url` AS `c_url`,
`s`.`title` AS `s_title`,
`s`.`url` AS `s_url`
FROM `categories` AS `c`
INNER JOIN `section` AS `s`
ON `c`.`parent` = `s`.`id`
"
)
or die(mysql_error());

if(mysql_num_rows($querycat) > 0)
{
while($rowcat = mysql_fetch_assoc($querycat))
{
echo '
<h4>'
.$rowcat['s_title'].'</h4>
<ul>
<li>
<a href="/index.php?'
.$rowcat['s_url'].'='.$rowcat['c_url'].'">'.$rowcat['c_title'].'</a>
</li>
</ul>
'
;
}
}


else
{
echo 'Утеряна связь с базой данных.';
}

}



Вроди как запрос и вывод сработал, НО, выводит он мне таким образом..

Видео
сезон1
Видео
Сезон2
Музыка
ost1
Музыка
ost2

Надо как то вывод переделать чтобы оставались только заголовок и под ним его категории..

Видео
сезон1
Сезон2
Музыка
ost1
ost2

Что нужно пределать в выводе? Подскажи пожалуйста.

Спустя 23 минуты, 4 секунды (7.06.2012 - 02:59) Gabriel написал(а):
уже сплю, мозг требует охлаждения :D
но похоже что ответ кроется в етой линии, ибо не внимательно смотрел скрин.
если ты посмотриш его еще раз то увидиш 4ре линии (в тоем их будет 2)
<h4>'.$rowcat['s_title'].'</h4>

вот ето закрой в иф, подкатегорию запихни в елс, а над условием для иф подумай (утром желательно) ибо оно банально простое.

Спустя 18 минут, 50 секунд (7.06.2012 - 03:17) razoramus написал(а):
Нее, надо щас добить его

Спустя 3 минуты, 55 секунд (7.06.2012 - 03:21) razoramus написал(а):
То есть в самом цикле поставить условие?

while($rowcat = mysql_fetch_assoc($querycat))
{
if()
{
echo '<h4>'.$rowcat['s_title'].'</h4>';
}
else
{
echo '
<ul>
<li>
<a href="/index.php?'
.$rowcat['s_url'].'='.$rowcat['c_url'].'">'.$rowcat['c_title'].'</a>
</li>
</ul>
'
;
}
}


типо так?

Спустя 18 минут, 39 секунд (7.06.2012 - 03:40) razoramus написал(а):
vital
Цитата (vital @ 6.06.2012 - 21:35)
с того же, с к-го ты с меня что-то требуешь.

Где это я с тебя требую написать мне готовый код? Именно ТРЕБУЮ. Я тебя ни в чём не обязывал и сказал, что если нет желания помочь, то проходи мимо и не флуди в теме.

Спустя 9 часов, 52 минуты, 47 секунд (7.06.2012 - 13:33) inpost написал(а):
razoramus
Он тебе ближайшую недельку не ответит... biggrin.gif

Спустя 11 часов, 30 минут, 16 секунд (8.06.2012 - 01:03) waldicom написал(а):
оффтоп он
razoramus, а вот ссылка в твоей подписи на free-lance.ru - это зачем?
оффтоп офф

Спустя 18 часов, 46 минут, 54 секунды (8.06.2012 - 19:50) razoramus написал(а):
waldicom Да просто так

Спустя 1 день, 14 часов, 56 минут, 1 секунда (10.06.2012 - 10:46) razoramus написал(а):
Что то я так и не разобрался. Подскажите кто-нибудь пожалуйста как сделать? А то выводиться не так как надо.

Спустя 10 часов, 51 минута, 44 секунды (10.06.2012 - 21:38) razoramus написал(а):
Походу не дождусь sad.gif

Спустя 16 минут, 37 секунд (10.06.2012 - 21:54) inpost написал(а):
`id`,`cat`,`subcat`
А вывести:
ORDER BY `cat` - теперь мы сформировали всё по категории. Далее:

$temp = '';
while() { // наш цикл
if($row['cat'] != $temp) { // если мы перешли к следующей категории!
echo $row['cat'];
$temp = $row['cat'];
}
echo $row['subcat'];
}
Быстрый ответ:

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