Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Probleme mit Kategorieen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Probleme mit Kategorieen


 
websdream
09-02-2007, 09:32 
 
Hallo!
Ich möchte einen Kategorienbaum mit n Unterkategorien anlegen. Meine Tabelle TKategorie hat die folgenden Felder:
KategorieID Name Beschreibung ParentID Aktiv

Das einstellen klappt auch Problemlos, z.B.:
KategorieID Name Beschreibung ParentID Aktiv
3 # test12 # 3 # 1
4 # test12a # 3 # 1
5 # test12aa # 4 # 1

Jetzt möchte ich das Ganze in einem Dropdown-Feld ausgeben, auch kein Problem, ABER ich möchte, dass die Darstellung so ist:

test12 (Hauptkategorie)
+ test12a (UK von test12)
++ test12aa (UK von test12a)
usw.

hier der code:

echo "<select name=ParentID>";
#HKs ausgeben....
$sql = "SELECT * FROM `tkategorie` WHERE Aktiv='1' ORDER BY Name";
$result = mysql_query($sql) OR die(mysql_error());
echo "<option value='Hauptkategorie'>Hauptkategorie</option>";
echo "<option value='Hauptkategorie'>***</option>";
echo "<option value='Hauptkategorie'>Unterkategorie von...</option>";
while($row = mysql_fetch_assoc($result))
{
$ParentKategorieID=$row['KategorieID'];
$Name=$row['Name'];
echo "<option value='$ParentKategorieID'>+ $Name</option>";
}
echo "</select>";


Momentan wird es so ausgegeben:
+ test12
+ test12a
+ test12aa

Wie kann ich das lösen??

Danke und Gruss

 
XGremliN
09-02-2007, 09:40 
 
Wenn du alle Einträge mit einem + davor ausgibst ist das ja auch klar.

 
websdream
09-02-2007, 09:42 
 
genau, steht ja im code.... :D wie geht es besser

 
Damian1984
09-02-2007, 09:45 
 
$string = '';
while(){
echo $string.$ausgabe;
$string .= '+';
}

 
asp2php
09-02-2007, 09:47 
 
Original geschrieben von websdream
genau, steht ja im code.... :D wie geht es besser
Rekursiv auslesen und der Tiefe entprechend die + einbauen, z.B. mit einem static variable als Entscheidungshilfe. So wie du es zur Zeit machst musst du parentid prüfen und entscheiden.

 
websdream
09-02-2007, 09:48 
 
danke!!! :rocks:

 
websdream
09-02-2007, 09:55 
 
uuuupss, doch noch nicht - zu früh gefreut...

jetzt $string = '';
while(){
echo $string.$ausgabe;
$string .= '+';
}


wird natürlich vor jede ausgabe ein + gesetzt
also ergibt sich meine baumstruktur so

test1
+test1a
++test1b
+++test1c
++++test1d

und NICHT so:
test1
+test1a
+test1b
++test1c
+++test1d
+++test1e

und jetzt? da steig ich nicht durch....

 
TobiaZ
09-02-2007, 10:01 
 
na komm,

wenn du das ein plus mehr nur setzen sollst wenn sich der parent ändert, dann geht das doch mit ner if() ganz gut, oder?

 
Kropff
09-02-2007, 10:03 
 
ggf. mal nach nested sets googlen

peter

 
websdream
09-02-2007, 10:28 
 
:confused:


if($KategorieID == $ParentID)
{
echo "<option value='$KategorieID'>$Name</option>";
$string .= '';
}
else
{
echo "<option value='$KategorieID'>$string $Name</option>";
$string .= '+';
}


ausgabe:
test
+test1
++test1a
+++test1b
test2
+++++test2a

wie kann ich das abfangen?? :dontknow:

vielen dank

 
Kropff
09-02-2007, 10:31 
 
lies dir mal das tutorial (http://www.php-resource.de/tutorials/read/21/1/) durch. da wird dein problem genau beschrieben und auch eine lösung geliefert

peter

 
asp2php
09-02-2007, 10:46 
 
oder schau mal hierein http://www.php-resource.de/forum/showthread.php?s=&threadid=44274

 
websdream
12-02-2007, 16:37 
 
nach wirklich langer sucherei bin ich auf Nested Sets DB Tree gestossen:

http://www.phpclasses.org/browse/package/2547.html

ist genau das was ich suche & sehr gut zu modifizieren bzw. zu integrieren.

danke für die hilfe.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:15 Uhr.