mein Contenido will mich scheinbar zu verzweiflung bringen!!
ich kriege seit neustem mit dem module nav_mod 0.5a einen mysql fehler:
[20-Dec-2004 14:45:16] MySQL-Error: You have an error in your SQL syntax near 'AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = 1' at line 9 (1064)
der source code des schuldigen moduls scheint aber in ordnung zu sein:
Code: Alles auswählen
<?php
/***********************************************
* OUTPUT
************************************************/
include_once($cfg["path"]["contenido"].$cfg["path"]["includes"]."functions.con.php");
// ****************************************************************************************************
// SECURITY-CHECKS
// ****************************************************************************************************
// SQL-Injection Überprüfungen und Work-Arounds
// lokale Variabeln initialisieren um Injections zu unterbinden
$db2       = "";
$catStart  = "";
$catPrev   = "";
$sTmpStr   = "";
$db2_sql   = "";
$catIds    = "";
$key       = "";
$val       = "";
$sql       = "";
// ****************************************************************************************************
// erstelle eine zweite DB-Klasseninstanz, da wir hier
// mit zwei Abfragen udn Resultsets arbeiten müssen
$db2 = new DB_Contenido;
/*
$eckkla_auf   = ':: ';
$eckkla_zu    = '';
$eckkla_trenn = '<br>';
$strBEGIN = '';
$strEND   = '';
*/
// Hole aus der Artikeldefinition die Ausgewählte Einstellungen
$catStart    = "CMS_VALUE[3200]";
$catPrev     = "CMS_VALUE[3201]";
$eckkla_auf      = "CMS_VALUE[3202]";
$eckkla_zu       = "CMS_VALUE[3203]";
$eckkla_trenn    = "CMS_VALUE[3204]";
$strBEGIN    = "CMS_VALUE[3205]";
$strEND      = "CMS_VALUE[3206]";
$cfg_chkchildid = "CMS_VALUE[3207]";
$cfg_css_link   = "CMS_VALUE[3208]";
$cfg_css_linkhl = "CMS_VALUE[3209]";
// * get catPrec Category and output CatName as [ BackTo ]  nav item
if ($catStart != "" && $catStart != "--kein--" ) {
  $sTmpStr = "";
   if ( $catPrev != "--kein--" ) {
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql = "   SELECT
                       CAT.idcat AS idcat,
                       name
                    FROM
                       ".$cfg["tab"]["cat"]." AS CAT,
                       ".$cfg["tab"]["cat_lang"]." AS CATLANG
             
                     WHERE   CAT.idcat = ".$catPrev."
                           AND CAT.idcat = CATLANG.idcat
                           AND CATLANG.idlang = ".$lang." ";
         echo $sql;          
        // Datenbankabfrage durchführen
        $db->query($sql);
        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {
      // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
           if ( strlen($sTmpStr) == 0 ) {
               // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
               // und den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="tbl_menu_quer" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
           }
           else
           {
               // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
               // den Eintrag der Ausgabevariabel hinzufügen
               $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="tbl_menu_quer" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;         
           }  // end if
        } // end while
   }
                       
   $db2_sql = "   SELECT
            *
         FROM ". $cfg["tab"]["cat"] ." AS A
      
         WHERE
         
           A.parentid = ". $catStart . "
                                                ORDER BY A.preid
                                                 ";
   // Abfrage ausführen
   $db2->query($db2_sql);
     // Ermittlung aller Kategorie IDs der ausgesuchten
     // Navigationsebene und speicherug in einem Array
   while ( $db2->next_record() ) {
             // $catIds[] = $db2->f("idcat");
      $test_1[$db2->f("preid")] = $db2->f("idcat");
   }
   
/*
PREID => IDCAT  ( $test_1 )
Array (
   [0]    => 50
   [26]    => 27
   [27]    => 28
   [28]    => 29
   [29]    => 30
   [30]    => 31
   [31]    => 32
   [32]    => 33
   [33]    => 38
   [34]    => 35
   [35]    => 36
   [36]    => 37
   [38]    => 34
   [50]    => 26
)
------------------------------------
*/
// ---------------------------------------------
// sort ids
$ar_anz = count($test_1);
$lpre = 0;
$test_3 = "";
$ires = "";
for ( $sli = 1 ; $sli <= $ar_anz ; $sli++ )
{
   $ires        = $test_1[$lpre];   
   $test_3[]    = $test_1[$lpre];   
   $lpre        = $ires;
}
// print_r($test_3); echo '<br><br>';
$catIds = $test_3;
// ---------------------------------------------
  // Überprüfung ob $catIds wirklich ein Array ist
  if ( is_array($catIds) ) {
    // die einzelnen IDs durchgegen
    foreach($catIds as $key=>$val) {
       
        // Datenbankabfrage ( SQL QUERY ) aufbauen
        $sql =    "   SELECT
                       CAT.idcat AS idcat,
                       name
                    FROM
                       ".$cfg["tab"]["cat"]." AS CAT,
                       ".$cfg["tab"]["cat_lang"]." AS CATLANG
             
                     WHERE   CAT.idcat = ".$val."
                           AND CAT.idcat = CATLANG.idcat
                           AND CATLANG.idlang = ".$lang." ";
echo $sql;
        // Datenbankabfrage durchführen
        $db->query($sql);
        // die einzelnen Recordsets der Datenbankabfrage durchgehen
        while ( $db->next_record() ) {
       
   if ( $cfg_chkchildid && sn_check_if_child ( $idcat, $catStart ))
   {
           // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
              if ( strlen($sTmpStr) == 0 ) {
                     // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
                     // und den Eintrag der Ausgabevariabel hinzufügen
                     $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="tbl_menu_quer" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
              }
              else
              {
                     // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
                     // den Eintrag der Ausgabevariabel hinzufügen
                     $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="tbl_menu_quer" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;         
              }  // end if
   }
   else
   {
           // überprüfung, ob schon ein Eintrag in der Ausgabevariabel ist
              if ( strlen($sTmpStr) == 0 ) {
                     // ... Nein, dann die Formatierung für den ersten Eintrag verwenden
                     // und den Eintrag der Ausgabevariabel hinzufügen
                     $sTmpStr = $sTmpStr . $strBEGIN .  $eckkla_auf . '<a class="tbl_menu_quer" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;
              }
              else
              {
                     // ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
                     // den Eintrag der Ausgabevariabel hinzufügen
                     $sTmpStr = $sTmpStr . $eckkla_trenn . $eckkla_auf . '<a class="tbl_menu_quer" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a>' . $eckkla_zu;         
              }  // end if
   }
   
        } // end while
   
    }  // end foreach
    // END Zeichen $strEND anfügen
    $sTmpStr = $sTmpStr . $strEND;
    // Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
    echo $sTmpStr;
  } // end if (is_array)
}
if ( $sn_navmod != "multiuse" ) {
$sn_navmod = "multiuse";
function sn_check_if_child ( $l_idcat, $l_paridcat )
{
   $bResult = false;
   $l_int   = $l_idcat;
   while ( $l_int != 0 && $l_int != $l_paridcat )
   {
      $l_int = get_parentid_from_idcat ( $l_int );
      if ( $l_int == $l_paridcat )
      {
         $bResult = true;
      } // end if
   } // end while
   
   return $bResult;
} // check_if_child
function get_parentid_from_idcat ( $l_idcat )
{
   $ldb = new DB_Contenido;
   $lsql= "SELECT *
      FROM    ".$cfg["tab"]["cat"]." AS CAT,
                    ".$cfg["tab"]["cat_lang"]." AS CATLANG
             
                WHERE   CAT.idcat = ".$l_idcat."
                        AND CAT.idcat = CATLANG.idcat
                        AND CATLANG.idlang = ".$lang." ";
echo $sql;
   $ldb->query($lsql);
   while ( $ldb->next_record() )
   {
      $l_parid = $ldb->f("parentid");
   }
   return $l_parid;
} // end function get_parentid_from_idcat
} // end MULTIUSE Funktions
?>