Kategorien richtig ordnen

emptynick

Erfahrenes Mitglied
Hallo,

malwieder ein Problem meinerseits *gg*.

Und zwar will ich in einem Select Feld sämtliche Kategorien mit Sub Kategorien angezeigt kriegen.

Die Tabelle sieht im Beispiel so aus:

Name|Main
Programmieren//Währe jetzt eine Oberkategorie da keine Main-ID zugewiesen ist.
PHP|1//Währe jetzt Unterkategorie von Programmieren wenn Oberkategorie Programmieren die ID 1 hat

Mein Script dazu sieht wie folgt aus:

PHP:
$cats = mysql_query("SELECT * FROM kategorien WHERE main=''");
while($row = mysql_fetch_array($cats)){
echo '<option value="'.$row[name].'">'.$row[name].'</option>';
$subcats = mysql_query("SELECT * FROM kategorien WHERE main='$row[id]'");
while($row2 = mysql_fetch_array($subcats)){
echo '<option value="-->'.$row2[name].'">'.$row2[name].'</option>';
}
}

Die Unterkategorie sollen mit startendem "-->" Anfangen.
Also in etwa:

Programmieren
-->PHP

Leider gibt mir das Script alle Kategorien (Ober sowie Sub) ohne das "-->" aus!

Hoffe mir kann jemand dabei helfen!


Mit freundlichen Grüßen

emptynick
 
Hey,
ich vermute das es an dem > im value von dem unterem option tag liegt.
Versuch mal statt:
PHP:
echo '<option value="-->'.$row2[name].'">'.$row2[name].'</option>';

das so zu machen:
PHP:
echo '<option value="--&gt;'.$row2[name].'">'.$row2[name].'</option>';
dann müsste das eig-lich funktionieren.
 
Liegt daran das deine Tabelle nicht richtig aufgebaut ist.Am besten du machst das mit Prefix werten.

Tabellen aufbau Spalten:
Id |Name| Prefix

Die Tabellen werte könnten dan so aussehen
1|PHP|1
2|Haus|2
3|Baum|2


Zu Erklärung ID ist Primary key mit autoincremt ,Name ist der kategoriename,Prefix bestimmt ob es eine Hauptkategorie ist oder nee Unterkategorie.

In den Oben angeführten Bsp, ist das dann Haus und PHP eine Hauptkategorie
Baum dagen ist eine Unterkategorie von Haus

So kanste nun auch das kann leicht abfragen per Sql
PHP:
// Alle Hauptkategorien abfragen
SELECT Name FROM tabelle WHERE ID=Prefix;
// Alle Sub kategorien von Haus abfragen
SELECT Name FROM tabelle WHERE Prefix='2' and ID<>'2';

Mfg Splasch
 
Zuletzt bearbeitet:
Danke,

daran lag es zwar nicht,
ich hatte einfach nur einen schlimmen Fehler reingemacht...
Was soll das "-->" denn schon in der Value wenn es eigentlich zwischen die beiden Tags gehört ;)

MfG
 
Zurück