ein Problem mit meiner Navigation! An sich funktioniert ja alles, wenn ich allerdings in das Error-Log sehe, wird mir übel

Das füllt sich sehr rasant! Hier ein Auszug!
Ich denke, dass es mit der Navigation zusammenhängt. Vielleicht kann mir jemand helfen! (Hatte ein ähnliches Posting, jedoch ohne Rückmeldung)[20-Oct-2004 13:53:09] next_record called with no query pending.
[20-Oct-2004 13:53:09] Invalid SQL: SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG
WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'<br><br>
[20-Oct-2004 13:53:09] next_record called with no query pending.
[20-Oct-2004 13:53:09] Invalid SQL: SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG
WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'<br><br>
[20-Oct-2004 13:53:09] next_record called with no query pending.
[20-Oct-2004 13:53:09] Invalid SQL: SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG
WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'<br><br>
[20-Oct-2004 13:53:09] next_record called with no query pending.
[20-Oct-2004 13:53:09] Invalid SQL: SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG
WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'<br><br>
[20-Oct-2004 13:53:09] next_record called with no query pending.
[20-Oct-2004 13:53:09] Invalid SQL: SELECT
CAT.idcat AS idcat,
name
FROM
con_cat AS CAT,
con_cat_lang AS CATLANG
WHERE CAT.idcat =
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '1'
AND CATLANG.visible = '1'<br><br>
[20-Oct-2004 13:53:09] next_record called with no query pending.
[20-Oct-2004 13:53:09] PHP Warning: session_start() [<a href='http://www.php.net/function.session-sta ... n-start</a>]: Cannot send session cookie - headers already sent by (output started at /www/htdocs/v033477/cms/front_content.php(563) : eval()'d code:14) in /www/htdocs/v033477/lmo/init.php on line 10
[20-Oct-2004 13:53:09] PHP Warning: session_start() [<a href='http://www.php.net/function.session-sta ... n-start</a>]: Cannot send session cache limiter - headers already sent (output started at /www/htdocs/v033477/cms/front_content.php(563) : eval()'d code:14) in /www/htdocs/v033477/lmo/init.php on line 10
Habe 2 Navigationen im Einsatz
Hier meine 1.Navigation:
Input:
Output:/***********************************************
* INPUT
************************************************/
// selected category
$selected = "CMS_VALUE[3100]";
$selected2= "CMS_VALUE[3101]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr valign=\"top\">
<td class=\"text_medium\">Kategorie wählen, deren Unterkategorien<br> angezeigt werden sollen:</td>
<td class=\"text_medium\">
<select class=\"text_medium\" name=\"CMS_VAR[3100]\">";
if($selected!="0" && $selected!=""){
echo"<option value=\"0\">--- kein ---</option>";
}else{
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}
// fetch all categorys
$query = " SELECT
A.idcat,
A.level,
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 C.idlang='$lang'
AND B.idclient='$client'
AND C.visible=1 ORDER BY A.idtree";
// execute query
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
// indent spacer
$spaces = "|";
// how many levels
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
// add 2 spaces for every level
$spaces = $spaces . "--";
} // end for
$spaces .= ">";
if ($selected == $db->f("idcat")) {
// selected category
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
// category
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end if
} // end while
echo " </select>";
echo " </td>
</tr>
<tr valign=\"top\">
<td class=\"text_medium\">Zurückkategorie wählen:</td>
<td class=\"text_medium\">
<select class=\"text_medium\" name=\"CMS_VAR[3101]\">";
if($selected2!="0" && $selected2!=""){
echo"<option value=\"0\">--- kein ---</option>";
}else{
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}
// fetch all categorys
$query = " SELECT
A.idcat,
A.level,
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 C.idlang='$lang'
AND B.idclient='$client'
AND C.visible=1 ORDER BY A.idtree";
// execute query
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
// indent spacer
$spaces = "|";
// how many levels
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
// add 2 spaces for every level
$spaces = $spaces . "--";
} // end for
$spaces .= ">";
if ($selected2 == $db->f("idcat")) {
// selected category
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
// category
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end if
} // end while
echo " </select>";
echo " </td>
</tr>
</table>";
Jetzt die 2.Navigation<?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;
// Hole aus der Artikeldefinition die Ausgewählte Navigationsebene
$catStart = "CMS_VALUE[3100]";
$catPrev = "CMS_VALUE[3101]";
// * get catPrec Category and output CatName as [ BackTo ] nav item
if ($catStart != "") {
$sTmpStr = "";
// 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'
AND CATLANG.visible = '1'";
// 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 . '[<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">Zurück zu '.$db->f("name").'</a>]';
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
$sTmpStr = $sTmpStr . ' - [<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'">Zurück zu '.$db->f("name").'</a>]';
} // 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'
AND CATLANG.visible = '1'";
// 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 . '<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'" style="background-image:url(images/background/grauerReiter70x30.gif); padding-left:18px; padding-right:1px;">::'.$db->f("name").'::</a>'; */
$sTmpStr = $sTmpStr . ':: | <a class="naviklein" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a> | :: ';
}
else
{
// ... Ja, dann die Formatierung für die weiteren Einträge verwenden und
// den Eintrag der Ausgabevariabel hinzufügen
/* $sTmpStr = $sTmpStr . '<a class="klein" href="front_content.php?idcat='.$db->f("idcat").'" style="background-image:url (images/background/Reiter9030.jpg); padding-left:18px; padding-right:3px;">::'.$db->f("name").'::</a>'; */
$sTmpStr = $sTmpStr . '<a class="naviklein" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a> | :: ';
} // end if
} // end while
} // end foreach
// Ausgabevariabel schreiben, da nun alle Einträge behandelt wurden.
echo ' ' . $sTmpStr;
} // end if (is_array)
}
?>
Input:
Output:/**
* Navigation
*
* INPUT
*
* @autor Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
*/
// selected category
$selected = "CMS_VALUE[9000]";
echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
<tr valign=\"top\">
<td>Kategorie wählen:</td>
<td>
<select name=\"CMS_VAR[9000]\">";
if($selected!="0" && $selected!=""){
echo"<option value=\"0\">--- kein ---</option>";
}else{
echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}
// fetch all categorys
$query = "SELECT A.idcat, A.level, 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 C.idlang='$lang' AND B.idclient='$client' ".
"AND C.visible=1 ORDER BY A.idtree";
// execute query
$db->query($query);
// loop result and build the options
while ($db->next_record()) {
// indent spacer
$spaces = "|";
// how many levels
$levels = $db->f("level");
for ($i = 0; $i < $levels; $i ++) {
// add 2 spaces for every level
$spaces = $spaces . "--";
} // end for
$spaces .= ">";
if ($selected == $db->f("idcat")) {
// selected category
echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} else {
// category
echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
} // end if
} // end while
echo " </select>";
echo " </td>
</tr>
</table>";
<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname : Navigation 1.1
* Author : Jan Lengowski
* Copyright : Contenido - four for business
* Created : 15-05-2003
* Modified : 26-05-2003
************************************************/
if ( !is_object($db2) ) {
$db2 = new DB_Contenido;
}
$catStart = "CMS_VALUE[9000]";
/**
* Check if a category is child
* of another category
*
* @return boolean true/false
* @author Jan Lengowski <Jan.Lengowski@4fb.de>
* @copyright four for business AG 2003
*/
function catischildof_mod1($id, $idparent) {
global $cfg, $client, $lang;
$db = new DB_Contenido;
$parent = $id;
while ( $parent != 0 ) {
$sql = "SELECT
a.parentid
FROM
".$cfg["tab"]["cat"]." AS a,
".$cfg["tab"]["cat_lang"]." AS b
WHERE
a.idclient = '".$client."' AND
b.idlang = '".$lang."' AND
a.idcat = b.idcat AND
a.idcat = '".$parent."'";
$db->query($sql);
$db->next_record();
$parent = $db->f("parentid");
if ($parent == $idparent) {
return true;
}
}
return false;
}
if ( catischildof_mod1($idcat, CMS_VALUE[9000]) ) {
$sel_idcat = $idcat;
} else {
$sel_idcat = CMS_VALUE[9000];
}
/* Include Template Class */
include_once($cfg["path"]["contenido"] . 'classes/class.template.php');
/**
* Array storing alle the
* navigation data
*/
$navitems_mod1 = array();
/* Template Instance */
$tpl_mod1 = new Template;
/**
* Recursive function for creating
* the navigation array
* @param Int $idcat Category id
*/
function nav_mod1($idcat) {
global $navitems_mod1, $client, $lang, $cfg;
$db = new DB_Contenido;
$db2 = new DB_Contenido;
$sql = "SELECT parentid FROM ".$cfg["tab"]["cat"]." WHERE idcat = '$idcat'";
$db->query($sql);
$db->next_record();
$parentid = $db->f("parentid");
if ( $parentid == 0 ) {
if ( $idcat != CMS_VALUE[9000] ){
$navitems_mod1 = array();
$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
B.parentid = 'CMS_VALUE[9000]'
ORDER
BY A.idtree";
$db->query($sql);
while ($db->next_record()) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navitems_mod1[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
}
return true;
}
$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
B.parentid = '$parentid'
ORDER BY
A.idtree";
$db->query($sql);
while ($db->next_record()) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$tmp_nav[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
$tmp_nav[$idcat]["sub"] = $navitems_mod1;
$navitems_mod1 = $tmp_nav;
/* Function call */
nav_mod1($parentid);
} // end function
if ($catStart != 0 ) {
$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
B.parentid = '$sel_idcat'
ORDER BY
A.idtree";
$db->query($sql);
while ( $db->next_record() ) {
/* Check for external redirects... */
$sql = "SELECT
a.external_redirect AS ext
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["cat_art"]." AS b,
".$cfg["tab"]["cat"]." AS c
WHERE
b.idcat = '".$db->f("idcat")."' AND
b.is_start = '1' AND
c.idclient = '".$client."' AND
c.idcat = b.idcat AND
a.idart = b.idart AND
a.idlang = '".$lang."'";
$db2->query($sql);
$db2->next_record();
$target = ( $db2->f("ext") == 0 ) ? '_self' : '_blank';
$navitems_mod1[$db->f("idcat")] = array("idcat" => $db->f("idcat"),
"name" => $db->f("name"),
"target" => $target);
}
/* Create Navigation Array */
nav_mod1($sel_idcat);
/* Start Output buffer */
ob_start();
echo '<table cellspacing="0" cellpadding="0" border="0" valign="top">';
/* Eingefügt von TH: Überschrift für die Box */
echo '<tr>
<td width="15" height="21" style="background-image:url(images/background/box_left.gif);background-repeat:no-repeat;">
</td>
<td height="21" width="100" style="background-image:url(images/background/box_tile.gif)">';
if ($catStart != "") {
$catIds = conDeeperCategoriesArray($catStart);
$sql = "SELECT CAT.idcat AS idcat, name FROM ".
$cfg["tab"]["cat"]." AS CAT, ".
$cfg["tab"]["cat_lang"]." AS CATLANG
WHERE CAT.idcat = ".$catStart."
AND CAT.idcat = CATLANG.idcat
AND CATLANG.idlang = '$lang'
AND CATLANG.visible = '1'";
$db->query($sql);
$db->next_record();
$target = "_self";
echo '<a class="box" target="'.$target.'" href="front_content.php?idcat='.$db->f("idcat").'">'.$db->f("name").'</a></td>
<td width="15" height="21" align="right" style="background-image:url(images/background/box_right.gif);background-repeat:no-repeat;">
</td>
</tr>';
}
/* Ende der Änderung */
foreach ($navitems_mod1 as $key => $data) {
/* 1. Navigations Ebene */
$tpl_mod1->reset();
$tpl_mod1->set('d', 'NAME', $data['name']);
$tpl_mod1->set('d', 'TARGET', $data['target']);
$tpl_mod1->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl_mod1->next();
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$tpl_mod1->generate('templates/navfirst_on.html');
} else {
$tpl_mod1->generate('templates/navfirst_off.html');
}
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
/* 2. Navigations Ebene */
$tpl_mod1->reset();
$tpl_mod1->set('d', 'NAME', $data['name']);
$tpl_mod1->set('d', 'TARGET', $data['target']);
$tpl_mod1->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl_mod1->next();
if ($idcat == $data['idcat'] || is_array($data['sub'])) {
$tpl_mod1->generate('templates/navsecond_on.html');
} else {
$tpl_mod1->generate('templates/navsecond_off.html');
}
if (is_array($data['sub'])) {
foreach ($data['sub'] as $key => $data) {
/* 3. Navigations Ebene */
$tpl_mod1->reset();
$tpl_mod1->set('d', 'NAME', $data['name']);
$tpl_mod1->set('d', 'TARGET', $data['target']);
$tpl_mod1->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
$tpl_mod1->next();
if ($idcat == $data['idcat']) {
$tpl_mod1->generate('templates/navthird_on.html');
} else {
$tpl_mod1->generate('templates/navthird_off.html');
}
} // end foreach
} // end if
} // end foreach
} // end if
} // end foreach
echo '</table>';
/* Read out buffer */
$html_mod2 = ob_get_contents();
/* Clean buffer */
ob_end_clean();
/* Output buffer-contents */
echo $html_mod2;
}
?>
[\quote]
Ich denke, dass es an der 1.Navi liegt, da die 2. Navi nicht immer verwendet wird! Wäre super, wenn mir jemand weiterhelfen kann, da das Error-Log sehr schnell sehr groß wird!
Gruß