Die Datenbanktstruktur sieht wie folgt aus:
+-------+--------+-------+--------+
| ID | name | layer | parent |
+-------+--------+-------+--------+
| 1 | Home | 0 | 1 |
| 2 | test1 | 1 | 1 |
. . . .
. . . .
. . . .
| 38086 | test2 | 1 | 1 |
| 38087 | blabla | 2 | 1 |
+-------+--------+-------+--------+das script wie folgt:
sub checkchild {
my $tree;
my @vars = sql(qq{
SELECT * FROM ebay_categories
WHERE parent = '$_[0]' AND ID != parent});Für mich sieht es so aus, als ob di hier alle Datensätzemit der parent ID $_[0] abfragst.
Ganz genau! außer dem der selbst parent ist...
my $count = (@vars/4);
Also hier die Anzahl der Datnesätze durch 4.
Das bringt die &sql funktion so mit, die liefert ein array der ergebnismenge, also pro datensatz 4 einträge im array, /4 = anzahl der datensätze
if ($count > 0)
$count ist immer größer null, solange in @vars ein Wert steht, es ist wohl sinnvoller direkt auf @vars oder $vars[0] zuz prüfen.
ok, kann man machen, geb ich dir recht
{
for (my $c = 0; $c < $count; $c++)
{
my $layer = "";
while ($vars[2+$c*4] >= 0)und hier hört'es auf. Plötzlich ist $vars[..] kein Datensatz sondern ein Wert ungleich null, was ergibt denn oben deine sql Abfrage? Nicht die Datensätze?
Vergiss die while schleife, die malt nur entsprechend dem Layer, bzw. der Eintragstiefe leerzeichen und ein » in den skalar $layer
{
$layer.=" ";
$vars[2+$c*4]--;
if ($vars[2+$c*4] == 0)Mir scheint es, du willst irgendwelche einfachen Zusmamenhänge in deiner DB ergründen, diese machst du aber extrem Umständlich und Zeitintensiv (Du überträgst wahrscheinlich die komplette DB mit allen 38.000 Einträgen von deinem DB server)
{
$layer.="»";
}
}
$tree.="$layer<a href="#">$vars[1+$c*4]</a><br>\n";Warum du einen Link benutzt ohne eine URL ist natürlich auch nocht ein Rätsel.
weil ich den link hier nich veröffentlichen wollte hab ich ihn durch # ersetzt
$tree.=checkchild($vars[0+$c*4]);
}
}
return($tree);
}print checkchild('1');
vielleicht sieht ja nun jemand, was ich 'falsch' mache...
so ganz verstehe ich nicht was du wirklich machen willst, da es nicht ersichtlich ist, was in @vars steht. Unter Umständen ist das ganze viel einfacher über eine sinnvolle SQL Abfrage zu lösen.
jetzt besser?
Struppi.
Markus