Seite 1 von 1

geänderte Sitemapabfrage funktioniert nicht

Verfasst: Mo 11. Apr 2005, 11:22
von farina
Hallo,

ich habe die DB-Abfrage im Modul Sitemap geändert, weil ich nicht möchte, dass die oberste Kategorie (Hauptnavigation und Nebennavigation) angezeigt wird.

Das ist meine Abfrage:

Code: Alles auswählen

    $sql  = "SELECT * 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.parentid =$newcat AND level <= $amountLevel AND C.visible=1 AND level >= 1". 
              "ORDER by A.idtree"; 
AND level >= 1 ist ergänzt.
Leider wird nun aber nichts mehr im frontend angezeigt.
Habe ich da einen Denkfehler drin?

Gruß farina

Verfasst: Mo 11. Apr 2005, 12:03
von HerrB
Gibt es eine Fehlermeldung im errorlog? Woher kommt $amountLevel? Zu welcher Tabelle gehört level?

Gruß
HerrB

Verfasst: Mo 11. Apr 2005, 12:24
von farina
Die definierten Variablen sind :

$amountLevel = "CMS_VALUE[1]";
$newcat = "CMS_VALUE[0]";
$color = array("lev1","lev2","lev3","lev4");


Ich habe nun level >= 1 durch AND A.level >= 1 ausgetauscht und folgende Fehlermeldung:

Code: Alles auswählen

[11-Apr-2005 12:17:46] MySQL error 1064: Fehler in der Syntax bei 'WHERE idcat=0' in Zeile 1.
SELECT level FROM  WHERE idcat=0
[11-Apr-2005 12:17:46] next_record called with no query pending.
level gehört zur Tabelle con_cat_tree

Verfasst: Mo 11. Apr 2005, 13:45
von HerrB
SELECT level FROM WHERE idcat=0
Das ist noch eine andere Abfrage; das ist nicht die, die Du angegeben hast...

Gruß
HerrB

Verfasst: Mo 11. Apr 2005, 14:23
von farina
stimmt, muss so sein.

Die Fehlermeldung erscheint auch, wenn ich die zusätzliche Abfrage herausnehme, muss also auch schon vorher dagewesen sein. Die Sitemap wird aber im Frontend angezeigt und funktioniert.


Hier ist der Output des Moduls ohne css-Angaben

Code: Alles auswählen

<?php 
  /*********************************************** 
  * CONTENIDO MODUL - OUTPUT 
  * 
  *  Modulname   :     Sitemap v1.2 
  * Author(s)      :    Nik Wyss 
  * Copyright   :     None 
  * Created     :     14-01-2003 
  * Modified    :     14-01-2003 
  * Modified    :     20-01-2004 by Peter Beauvain 
  *                   - Adapt to Contenido V4.4 
  *                   - Output only shows visible items 
  ************************************************/ 
  
  $amountLevel = "CMS_VALUE[1]"; 
  $newcat = "CMS_VALUE[0]"; 
  $color = array("lev1","lev2","lev3","lev4"); 
 
  
  function sitemap($newcat=0) 
  { 
    global $lang, $client, $amountLevel, $color, $cfg, $startLevel; 
    $db  = new DB_Contenido; 
    $sql  = "SELECT * 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.parentid =$newcat AND level <= $amountLevel AND C.visible=1 ". 
              "ORDER by A.idtree"; 
    $db->query($sql); 
    $result = "<span>"; 
    while ($db->next_record()) 
    {  
      $lvl = $db->f("level"); 
      if ($lvl==0) 
      { 
        $result.=""; 
      } 
      $colorID=$lvl-$startLevel; 
      if ($colorID > count($color)-1) 
      { 
        $colorID=count($color)-1; 
      } 
      $result   .=  "<span><a width='130px' class='".$color[$colorID]."' style='display: block;  ' href='front_content.php?idcat=".$db->f("idcat"). 
                  "&lang=$lang&client=$client' class='lmLink'>". 
                  $db->f("name")."</a>".sitemap($db->f("idcat"))."</span>"; 
    } 
    $result.= "<span>"; 
    return($result); 
  } 
  
  $sql = "SELECT level FROM $cfgTab_cat_tree WHERE idcat=$newcat"; 
  $db->query($sql); 
  $db->next_record(); 
  $startLevel = $db->f("level"); 
  $amountLevel +=  $startLevel; 
  if ($newcat==0){$amountLevel--;} 
  echo sitemap($newcat); 
?>      
</span></div></td></tr></table>
Das müßte die Abfrage sein
$sql = "SELECT level FROM $cfgTab_cat_tree WHERE idcat=$newcat";

$newscat wird aus dem Input geliefert . Hier wird angegeben welche Kategorien aufgelistet werden. Gebe ich hier etwas anderes an, so bekomme ich z.B. nur die Hauptnavigation.
Ich möchte aber geren alles haben, ohne dass die oberste Ebene, also Haupnavigation und Servicenavigation als Link erscheinen.

Gruß farina

PS: Danke für die superschnelle Antwort

Verfasst: Mo 11. Apr 2005, 14:52
von HerrB
PS: Danke für die superschnelle Antwort
Immer... :wink:

Ersetze $cfgTab_cat_tree in

Code: Alles auswählen

$sql = "SELECT level FROM $cfgTab_cat_tree WHERE idcat=$newcat";
durch $cfg["tab"]["cat_tree"], e.g.

Code: Alles auswählen

$sql = "SELECT level FROM $cfg["tab"]["cat_tree"] WHERE idcat=$newcat";

Das ist zumindest das eine Problem.

Gruß
HerrB

Verfasst: Di 12. Apr 2005, 10:20
von farina
leider bekomme ich dann eine Fehlermeldung

Code: Alles auswählen

Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /www/xxx/xxx/front_content.php(567) : eval()'d code on line 745
Im Input werden diese alten Variablen neu definiert

Code: Alles auswählen

// Variablendeklarationen 
// Das Modul ist für eine ältere Contenido-VErsion - offensichtlich hießen Variablen damals anders... 

$cfgTab_cat_tree = $cfg['tab']['cat_tree']; 
$cfgTab_cat = $cfg['tab']['cat']; 
$cfgTab_cat_lang = $cfg['tab']['cat_lang']; 
Daran kann es also nnicht liegen

Gruß farina