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.
my $count = (@vars/4);
Also hier die Anzahl der Datnesätze durch 4.
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.
{
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?
{
$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.
$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.
Struppi.