Seite 1 von 1

SQL - Navigation - Problem

Verfasst: Di 7. Jul 2009, 16:04
von VeWe
Hallo,
ich möchte ein Navigations-Modul etwas anpassen und zwar so dass die Startkategorie der Navigation mit anzeigt wird.
Dafür habe ich die folgende SQL-Anweisung etwas verändert doch leider funktioniert es nun nicht mehr.
Der bb - markierte Teil ist von mir hinzugefügt ... die Tags können natürlich im Code nicht dargestellt werden:

Code: Alles auswählen

$sql = "SELECT
                    A.idcat,
                    C.name
                FROM
                    ".$cfg["tab"]["cat_tree"]." AS A,
                    ".$cfg["tab"]["cat"]." AS B,
                    ".$cfg["tab"]["cat_lang"]." AS C
                WHERE
                    A.idcat     = B.idcat   AND
                    B.idcat     = C.idcat   AND
                    B.idclient  = $client AND
                    C.idlang    = $lang   AND
                    C.visible   = 1       AND
                    A.level <= $navmaxlvl AND
                    [b]([/b]B.parentid  = $idcat [b]OR B.idcat = $idcat)[/b]
                ORDER BY
                    A.idtree";
                $db->query($sql);
                while ($db->next_record()) {...
Die Anweisung an sich funktioniert wenn man sie direkt im PHPMyAdmin ausführt. Sie funktioniert auch wenn man das OR durch ein AND ersetzt, dann allerdings nicht mit dem gewünschten Resultat.

Ist dies ein Bug oder habe ich einfach nur eine Fehler in der Anweisung ?

schon mal vielen Dank für die Hilfe

Re: SQL - Navigation - Problem

Verfasst: Di 7. Jul 2009, 17:13
von Halchteranerin
Inwiefern funktionieren die nicht? Steht etwas im Errorlog? Ich habe nämlich ein anderes Modul mit wahrscheinlich demselbem Problem, bei dem ich auch noch nicht dahinter gekommen bin, woran es liegt. Die Stelle in der SQL-Anweisung, in der ich etwas mit $idcat vergleiche, enthält beim Ausführen keine idcat, so dass es natürlich zu einer fehlerhaften SQL-Anweisung kommt. Ist es der gleiche Fehler?

Re: SQL - Navigation - Problem

Verfasst: Di 7. Jul 2009, 18:06
von Oldperl
Hallo VeWe,

also der von dir gepostete Quelltext funktioniert so definitiv nicht

Code: Alles auswählen

A.level <= $navmaxlvl AND
                    [b]([/b]B.parentid  = $idcat [b]OR B.idcat = $idcat)[/b]
                ORDER BY
Was bitte machen da

Code: Alles auswählen

[b]
oder [/b]
drinne.

Könntest du mal bitte beide Varianten ohne BB-Code posten?

EDIT:
upss, BB-Code hast du ja geschrieben, ähm, aber trotzdem verstehe ich nicht ganz was du mit der Abfrage erreichen willst.

Gruß aus Franken

Ortwin

Re: SQL - Navigation - Problem

Verfasst: Mi 8. Jul 2009, 08:13
von VeWe
@ Halchteranerin

Es kommt leider keine Meldung im Errorlog, die Seite läd nur ewig und bleibt dann komplett weiß ohne irgendwelchen Quellcode.

@ Oldperl

Also mit der Abfrage will ich erreichen, dass nicht nur die Kindkategorien der ausgewählten Startkategorie abgefragt werden sondern auch die Startkategorie selbst. Das funktioniert ja auch wie gewünscht, wenn ich es im PHPMyAdmin direkt eingebe aber leider nicht im Modul.

Hier nochmal die verschiedenen Versionen des Codes

Original:

Code: Alles auswählen

$sql = "SELECT
                    A.idcat,
                    C.name
                FROM
                    ".$cfg["tab"]["cat_tree"]." AS A,
                    ".$cfg["tab"]["cat"]." AS B,
                    ".$cfg["tab"]["cat_lang"]." AS C
                WHERE
                    A.idcat     = B.idcat   AND
                    B.idcat     = C.idcat   AND
                    B.idclient  = $client AND
                    C.idlang    = $lang   AND
                    C.visible   = 1       AND
                    A.level <= $navmaxlvl AND
                    B.parentid  = $idcat
                ORDER BY
                    A.idtree";

        $db->query($sql);
        while ($db->next_record()) { ...
Vom mir angepasst:

Code: Alles auswählen

            $sql = "SELECT
                    A.idcat,
                    C.name
                FROM
                    ".$cfg["tab"]["cat_tree"]." AS A,
                    ".$cfg["tab"]["cat"]." AS B,
                    ".$cfg["tab"]["cat_lang"]." AS C
                WHERE
                    A.idcat     = B.idcat   AND
                    B.idcat     = C.idcat   AND
                    B.idclient  = $client AND
                    C.idlang    = $lang   AND
                    C.visible   = 1       AND
                    A.level <= $navmaxlvl AND
                    (B.parentid  = $idcat OR B.idcat = $idcat)
                ORDER BY
                    A.idtree";                

        $db->query($sql);
        while ($db->next_record()) { ...
Und die Abfrage ausgeführt im PHPMyAdmin ... die Variablen durch die eintsprechenden Werte ersetzt:
Bild


Gruß
VeWe