WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP: sortera i meny (https://www.wn.se/forum/showthread.php?t=31408)

vidir 2008-08-25 14:52

Sitter och pillar med en meny kategorier och databas, men har kört fast :P

har t.ex i tabellen

category | cat_id | cat_father_id

när jag skapar kategori så får jag värdet "0" i cat_father_id, och när jag skapar underkategori till en annan så får cat_father_id dens cat_id..

så långt bra,,,, men vore tacksam för kodexempelhjälp för att lista fram det snyggt på sidan dvs.

kategori(1)
* underkat(1a) = altså har kategori(1) cat_id´s som cat_father_id
* underkat(1b)
* underkat(1c)

kategori(2)
* underkat(2a)
* underkat(2b)

kategori(3)
* underkat(3a)
** underkat(3aa)
** underkat(3ab)

PS! hoppas att det är tydligt :D // tack på förhand

najk 2008-08-25 17:40

Ganska standard låter det som, börja med att hämta alla med cat_father_id=0 sedan för varje träff hämtar du alla med cat_father_id = cat_id i resultaten.

Kanske inte så snygg kod, men den här har jag på ett par sidor.
Kod:

echo getCategories(0); #skriv ut menyn
function getCategories($parent_id) {
        $result = "";
        $sqlStr = "SELECT description, cat_id FROM menu WHERE cat_father_id = '$parent_id' ORDER BY priority, description ASC;";
        $items_query = mysql_query($sqlStr);
 *while($itemInfo = mysql_fetch_row ($items_query)) {
 * *$query = "SELECT cat_id FROM menu WHERE cat_father_id = '".$itemInfo[1]."' LIMIT 1;";
 * *$query_result_handle = mysql_query ($query) or print "Could not make query $query";
 * *$has_me_as_parent[$parentId] = mysql_num_rows ($query_result_handle);
 * *
 * *if ($parentId == 0) { $result .= "\t\t\t<ul>\n"; }
 * *$result .= "\t\t\t\t<li>";
 * *$result .= "<a href=\"/blabla/".$itemInfo[1]."\">$itemInfo[0]</a>";
 * *if ($has_me_as_parent[$parentId] == 1) { $result .= "\t\t\t\t\t<ul>\n"; }
 * *if ($has_me_as_parent[$parentId] == 1) { $result .= getCategories($itemInfo[1]); }
 * *if ($has_me_as_parent[$parentId] == 1) { $result .= "</ul>"; }
 * *
 * *$result .= "\t\t\t\t</li>\n";

 * *if ($parentId == 0) { $result .= "\t\t\t</ul>\n"; }
 *}
        return $result;
}


vidir 2008-08-25 21:07

hej najk!

det ser bra ut,,

det kommer:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource

på raden med:
Kod:

while($itemInfo = mysql_fetch_row ($items_query)) {
vad kan det vara?

//tusen tack....

emilv 2008-08-25 21:12

vidir, det beror på att något gått fel med din fråga skriv ut lite felsökningsinfo:

Kod:

mysql_query($sql) or die('Error: '.mysql_error()."\n<br>\n".$sql);

vidir 2008-08-25 21:40

det är lite överkurs för mig kanske?

vidir 2008-08-25 21:47

Men tack allihoop,, det ser ut som det löste sig :-)

PS!
Najk, har du någon snygg css till denna?

najk 2008-08-26 07:20

Nja, kolla på http://www.seoconsultants.com/css/menus/horizontal/ för en grundläggande, så är det bara att byta ut lite färger etc..


Alla tider är GMT +2. Klockan är nu 10:58.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson