19. februar 2006 - 21:52
Der er
18 kommentarer og 1 løsning
linkdatabase med kategorier
Jeg er igang med at lave en linkdatabase. Men nu er det sådan at jeg gerne vil have linkene ind i kategorier, men hvordan laver man det bedst/nemmest. Skal jeg bruge en sql tabel til kategorierne, eller et array eller noget helt trejde, det skal være nemt at kunne tilføje flere kategorier, samt underkategorier. Nogle som har nogle ideer??? Jeg behøves ikke en færdig kode bare noget at gå efter!
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
19. februar 2006 - 21:56
#1
Jeg ville lave det sådan her: kategori-tabel: id = int autoincrement primary navn = varchar (indeholder navnet på kategorien) link-tabel: id = int autoincrement primary navn = varchar (linkets navn, f.eks. Eksperten) url = varchar 255 (og måske man skulle bruge text) kategori = int (skal matche kategori-id fra kategori-tabellen)
19. februar 2006 - 21:59
#2
nu ville jeg gerne have underkategorier også, så der skal være noget som forbinder en underkategori men en overkategori.
19. februar 2006 - 23:22
#3
så kan du evt. udvide kategori-tabellen til at indeholde et ekstra felt: overkategori = int (id'et på den kategori, som denne kategori ligger under) hvis du har fat i en topkategori kan du evt. lade feltet være 0 eller NULL eller noget andet.. så længe dit script forstår at det er en top-kategori..
19. februar 2006 - 23:59
#4
ok men hvad gør jeg så hvis jeg vil lave et udtræk som viser alle de kategorier som er oprettet, så de bliver listet rigtigt eks: (hvis jeg benytter den måde greew foreslog) Test1 Test1_1 Test1_2 Test2 Test1_2 OSV.
20. februar 2006 - 08:41
#6
jakobdo: det var præcis sådan noget, jeg havde forestillet mig :)
20. februar 2006 - 08:48
#7
Det er også et spørgsmål som er blevet stillet mange gange her på eksperten.
20. februar 2006 - 08:55
#8
takker lige havd jeg manglede, tak for det. smid et svar.
20. februar 2006 - 09:04
#9
Svar!
20. februar 2006 - 09:10
#10
Takker for point!
20. februar 2006 - 09:54
#11
jakobdo -> nu har jeg benytte mig at dit script, men kan du fortælle mig hvorfor at det kun er den første hovedmenu som ikke bliver rykket ind eks. Test1_0 -Hovedmenu Test1_1 -Undermenu Test1_2 -Undermenu Test2_0 -Hovedmenu Så alle hovedmenuer undtagen den først bliver rykket ind så det ser ud som om de er en undermenu, selvom de er en hovedmenu.
20. februar 2006 - 09:55
#12
ok den fjernede nogle mellemrum da jeg postede, men håber du forstår :)
20. februar 2006 - 10:30
#13
Prøv at vis mig den kode du bruger!
20. februar 2006 - 10:32
#14
<?php include_once('config.php'); extract($_REQUEST); function SubSearch(&$array, &$dest_Arr, $owner) { while (list($key) = each($array)) { if ($array[$key]['overkategori'] == $owner) { $tempArr = $array[$key]; SubSearch($array, $tempArr, $array[$key]['id']); $dest_Arr['submenu'][] = $tempArr; unset($array[$key]); } } reset($array); } function printMenu($mArray,$level) { foreach($mArray as $row) { echo printSpaces($level) . "<a href=\"#\" onClick=\"document.edit.overkategori.value='".$row['id']."';\">" . $row['navn'] . "</a><br>\r\n"; if($row['submenu']) { printMenu($row['submenu'],++$level); } } } function printSpaces($num) { $output = ""; for($i = 0; $i < $num; $i++) { $output .= " "; } return $output; } function getMenues() { $output = "<option value=\"0\">Hovedmenu</option>"; $query = mysql_query("SELECT id, navn FROM kategori ORDER BY id"); if(mysql_num_rows($query)>0) { while($row = mysql_fetch_object($query)) { $output .= "<option value=\"".$row->id."\">".$row->navn."</option>"; } } return $output; } $menuArray = array(); $query = mysql_query("SELECT id, navn, overkategori FROM kategori ORDER BY overkategori, id"); if(mysql_num_rows($query) > 0) { while($row = mysql_fetch_assoc($query)) { $menuArray[] = $row; } } else { $menuArray = array("Ingen menupunkter, opret nogle"); } while (list($key) = each($menuArray)) { if ($menuArray[$key]['overkategori'] == 0) { $tempArr = $menuArray[$key]; SubSearch($menuArray, $tempArr, $menuArray[$key]['id']); unset($menuArray[$key]); $MyMenu[] = $tempArr; } reset($menuArray); } $db_felter = array('navn','overkategori'); if($submit) { foreach ($db_felter as $name) { if (get_magic_quotes_gpc()) { $$name = stripslashes($$name); } if ($sets) $sets .= ', '; $sets .= "$name = '".addslashes($$name)."'"; } $insert = 'INSERT INTO kategori SET '.$sets; mysql_query($insert); echo 'Databasen er opdateret.'; } else { printMenu($MyMenu,0); ?> <form name="edit" action="kategori.php" method="POST"> <input type="hidden" name="id" value="<?= $id; ?>"> <table border="0"> <tr> <td>Titel:</td> <td><input type="text" name="navn" value="<?= $navn; ?>"></td> </tr> <tr> <td>Over kategori:</td> <td><select name="overkategori"> <?= getMenues(); ?> </select></td> </tr> <tr> <td colspan="2"><input type="submit" name="submit" value="Gem"></td> </tr> </table> </form> <?php } ?>
20. februar 2006 - 10:37
#15
Prøv at lave en echo "<pre>": print_r($MyMenu); echo "</pre>"; exit(); istedet for printMenu(); Så kan vi lige se hvad dit array indeholder...
20. februar 2006 - 10:42
#16
Array ( [0] => Array ( [id] => 1 [navn] => test [overkategori] => 0 [submenu] => Array ( [0] => Array ( [id] => 2 [navn] => test1 [overkategori] => 1 ) ) ) [1] => Array ( [id] => 5 [navn] => ny kat [overkategori] => 0 ) [2] => Array ( [id] => 7 [navn] => ny kat igen [overkategori] => 0 [submenu] => Array ( [0] => Array ( [id] => 8 [navn] => bøhh [overkategori] => 7 ) ) ) )
20. februar 2006 - 10:58
#17
Det ser rigtigt ud... Der må være noget galt i min kode! :o( Prøv at lav noget debug omkring printSpaces. Måske den skal starte på 1 eller lign. Gider ikke lige teste igennem nu. :o)
20. februar 2006 - 11:01
#18
ok men tak for hjælpen
20. februar 2006 - 11:07
#19
Det var ihf så lidt!
Vi tilbyder markedets bedste kurser inden for webudvikling