Kategorienamen nur wenn Unterkategorie vorhanden

Gesperrt
silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Kategorienamen nur wenn Unterkategorie vorhanden

Beitrag von silicone » Mi 13. Sep 2006, 13:14

Hallo liebe Leute,

um den aktuellen Kategorienamen anzuzeigen benutze ich folgenden Schnipsel von emergence (Danke hierfür):

Code: Alles auswählen

<?php
$sql = "SELECT
            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
            C.idlang='$lang' AND
            B.idclient='$client' AND
            B.idcat ='$idcat'";
$db->query($sql);
$db->next_record();

echo '<h1>'.$db->f('name').'</h1>';

?>
Das dient mir als Überschrift für die geteilte Hauptnavi von OSI.

Funktioniert auch bestens. Aber jetzt wäre es schön, wenn der Kategoriename nur auftaucht, wenn es in dieser Kategorie noch Unterkats gibt.
Kann mir jemand dabei helfen?

Das besagte Projekt ist hier zu sehen. (Noch im Anfangsstadium)

Gruß
Thomas

php0815
Beiträge: 373
Registriert: Mi 26. Okt 2005, 12:12
Wohnort: Schwarzwald
Kontaktdaten:

Beitrag von php0815 » Mi 13. Sep 2006, 13:26

Wenn von der idcat eine parentid vorhanden ist ist auch eine Unterkategorie da.
Zu finden in der Tabelle xxx_cat.
In der Ruhe liegt die Kraft den wer suchet der findet
Wer Rechtschreibfehler findet kann sie behalten, Codefehler können gemeldet werden.

silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Beitrag von silicone » Mi 13. Sep 2006, 14:20

Danke für den Tip. Leider bin ich , was Programmierung angeht, immer noch Greenhorn. Habe es mit folgendem Code versucht:

Code: Alles auswählen

<?php
$sql = "SELECT
            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
            C.idlang='$lang' AND
            B.idclient='$client' AND
            B.idcat ='$idcat' AND
            B.parentid != 0";
$db->query($sql);
$db->next_record();

echo '<h1>'.$db->f('name').'</h1>';

?>
Das liefert aber nicht das gewünschte Ergebnis.
Bei dieser Abfrage liefert das Script für B.parentid als Ergebnis 1, sofern ich nicht in Unterkategorien bin...

simu
Beiträge: 48
Registriert: Di 4. Okt 2005, 08:44
Wohnort: Schweiz
Kontaktdaten:

Beitrag von simu » Do 14. Sep 2006, 08:32

Versuchs mal damit... habs nicht getestet aber sollte funktionieren.

Code: Alles auswählen

<?php
$sql = "SELECT
            C.name
        FROM
            ".$cfg["tab"]["cat_tree"]." AS A,
            ".$cfg["tab"]["cat"]." AS B,
            ".$cfg["tab"]["cat_lang"]." AS C,
            ".$cfg["tab"]["cat"]." AS D1,
            ".$cfg["tab"]["cat_lang"]." AS D2
        WHERE
            A.idcat=B.idcat AND
            B.idcat=C.idcat AND
            C.idlang='$lang' AND
            B.idclient='$client' AND
            B.idcat ='$idcat' AND
            B.parentid != 0 AND
            D1.parentid = A.idcat AND
            D2.idcat = D1.idcat AND
            D2.public =1
         LIMIT 1";
$db->query($sql);
if( $db->next_record() )
  echo '<h1>'.$db->f('name').'</h1>';

?>

silicone
Beiträge: 299
Registriert: Di 15. Mär 2005, 10:33
Kontaktdaten:

Beitrag von silicone » Do 14. Sep 2006, 11:23

Hallo Simu,

danke für deine Hilfe!
Auf den ersten Blick funktioniert deine Abfrage super. Leider hab ich dann gemerkt, dass keine Überschrift mehr angezeigt wird, wenn ich mich eine Ebene weiter bewege. Dann habe ich nur die Verzeichnisauflistung ohne Überschrift.
Ich habe mir mit folgendem Code geholfen:

Code: Alles auswählen

<?php
$sql = "SELECT
            name,parentid
        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
            C.idlang='$lang' AND
            B.idclient='$client' AND
            B.idcat ='$idcat' AND
            B.parentid != 0";
$db->query($sql);
$db->next_record();
$pid = $db->f('parentid');
if ($pid != 1) {
echo '<h1>'.$db->f('name').'</h1>';
} else {
$sql = "SELECT
            C.name,
            B.parentid
        FROM
            ".$cfg["tab"]["cat_tree"]." AS A,
            ".$cfg["tab"]["cat"]." AS B,
            ".$cfg["tab"]["cat_lang"]." AS C,
            ".$cfg["tab"]["cat"]." AS D1,
            ".$cfg["tab"]["cat_lang"]." AS D2
        WHERE
            A.idcat=B.idcat AND
            B.idcat=C.idcat AND
            C.idlang='$lang' AND
            B.idclient='$client' AND
            B.idcat ='$idcat' AND
            B.parentid != 0 AND
            D1.parentid = A.idcat AND
            D2.idcat = D1.idcat AND
            D2.public =1
         LIMIT 1";
$db->query($sql);
if( $db->next_record() )
  echo '<h1>'.$db->f('name').'</h1>';
  }
?>
Das funktioniert soweit, scheint aber aus Programierersicht völliger mumpiz zu sein. Was meinst du?

Gruß
Thomas

Gesperrt