Probleme mit ukatlist.v1

Gesperrt
ggg244
Beiträge: 9
Registriert: Do 23. Nov 2006, 12:23
Kontaktdaten:

Probleme mit ukatlist.v1

Beitrag von ggg244 »

Ich habe erfolgreich die UKATLIST geändert damit die Ausgabe vertikal gezeigt wird. Nun aber erhalte ich ständig diese Fehlermeldungen:
[07-Dec-2006 13:47:37] /front_content.php?client=1&lang=1&idcat=64 next_record called with no query pending in Module ID 52.
Hier der Auszug des Codes:

Eingabe:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :	    w3concepts.ukatlist.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-08-2004
* Modified    :     06-08-2004
************************************************/


$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\"><td>Kategorie wählen:</td><td><select name=\"CMS_VAR[0]\">";

if($selected!="0" && $selected!=""){
    echo"<option value=\"0\">--- kein ---</option>";
} else {
    echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}

$sql = "
    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
    ";

$db->query($sql);

while ($db->next_record()) {
    $spaces = "|";
    $levels = $db->f("level");
    for ($i = 0; $i < $levels; $i ++) {
        $spaces = $spaces . "--";
    }
    $spaces .= ">";

    if ($selected == $db->f("idcat")) {
        echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
    } else {
        echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
    }
}

echo "</select></td></tr>";
echo "</table>";
Ausgabe:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts.ukatlist.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-09-2004
* Modified    :     06-09-2004
************************************************/

// konfiguration
$categorie = "CMS_VALUE[0]";

$db = new DB_Contenido;
$db2 = new DB_Contenido;

// liest die unterkategorien aus der datenbank
$sql = "
	SELECT a.idcat, b.name FROM {$cfg['tab']['cat']} AS a
	LEFT JOIN {$cfg['tab']['cat_lang']} AS b ON a.idcat = b.idcat
	WHERE
		b.idlang = $lang
		AND a.parentid = $categorie
	ORDER BY a.idcat
	";

$db->query($sql);
    
while ($db->next_record()) {
	$categorie = $db->f("idcat");
	$db2->query($sql2);
	$db2->next_record();

	$unterkategorie[$db->f("name")] = array($db2->f("anzahl"),$sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")));
}

// ausgabe an den schirm
echo "<p>";
foreach ($unterkategorie as $bezeichner => $details) {
	echo "<a href=\"{$details[1]}\">{$bezeichner} </a><br/>";
}
echo "</p>";
?>
Beim letzten mal konnte man mir nicht helfen, dennoch hoffe ich auf Hilfe zu dieser einfachen Frage.

ggg244 :(
ggg244
Beiträge: 9
Registriert: Do 23. Nov 2006, 12:23
Kontaktdaten:

Beitrag von ggg244 »

Code: Alles auswählen

$db2->next_record();
gelöscht, und jetzt wird keine Fehler mehr ausgegeben. Leider habe ich vorher herum probiert, und jetzt wird keine CatArt mehr angezeigt:
Kann mir da einer helfen!?
kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer »

next_record() dient zur prüfung, ob ein nächster record verfügbar ist. gleichzeitig bewegt diese funktion den zeiger auf den nächsten record. du hast allerdings in deiner while-schlaufe einen zweiten query, den du absetzt. danach führtst du ein next_record auf. das ist auch noch kein problem. allerdings darfst du die resultate nur dann fetchen, wenn next_record auch tatsächlich true zurück gibt.

Code: Alles auswählen

   $db2->query($sql2);
   if ($db2->next_record()) {
      $unterkategorie[$db->f("name")] = array($db2->f("anzahl"),$sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")));
   }
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)
ggg244
Beiträge: 9
Registriert: Do 23. Nov 2006, 12:23
Kontaktdaten:

Beitrag von ggg244 »

kummer hat geschrieben:next_record() dient zur prüfung, ob ein nächster record verfügbar ist. gleichzeitig bewegt diese funktion den zeiger auf den nächsten record. du hast allerdings in deiner while-schlaufe einen zweiten query, den du absetzt. danach führtst du ein next_record auf. das ist auch noch kein problem. allerdings darfst du die resultate nur dann fetchen, wenn next_record auch tatsächlich true zurück gibt.

Code: Alles auswählen

   $db2->query($sql2);
   if ($db2->next_record()) {
      $unterkategorie[$db->f("name")] = array($db2->f("anzahl"),$sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")));
   }
Vielen Dank, ich werde es beherzigen - die Lösung kommt dann von selbst.

Auf Wiedersehn,
ggg244
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 »

Also deine Änderungen werden so nicht laufen, da du zwar die SQL-Abfrage $sql2 entfernt hast, später dann aber noch versuchst, darauf zuzugreifen.

Evtl. klappt folgendes (ungetestet):

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts.ukatlist.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-09-2004
* Modified    :     06-09-2004
************************************************/

// konfiguration
$categorie = "CMS_VALUE[0]";

$db = new DB_Contenido;
$db2 = new DB_Contenido;

// liest die unterkategorien aus der datenbank
$sql = "
   SELECT a.idcat, b.name FROM {$cfg['tab']['cat']} AS a
   LEFT JOIN {$cfg['tab']['cat_lang']} AS b ON a.idcat = b.idcat
   WHERE
      b.idlang = $lang
      AND a.parentid = $categorie
   ORDER BY a.idcat
   ";

$db->query($sql);
   
while ($db->next_record()) {
   $unterkategorie[$db->f("name")] = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat"));
}

// ausgabe an den schirm
echo "<p>";
foreach ($unterkategorie as $bezeichner => $link) {
   echo "<a href=\"{$link}\">{$bezeichner}</a><br/>";
}
echo "</p>";
?>
ggg244
Beiträge: 9
Registriert: Do 23. Nov 2006, 12:23
Kontaktdaten:

Beitrag von ggg244 »

Dodger77 hat geschrieben:Also deine Änderungen werden so nicht laufen, da du zwar die SQL-Abfrage $sql2 entfernt hast, später dann aber noch versuchst, darauf zuzugreifen.

Evtl. klappt folgendes (ungetestet):

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts.ukatlist.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-09-2004
* Modified    :     06-09-2004
************************************************/

// konfiguration
$categorie = "CMS_VALUE[0]";

$db = new DB_Contenido;
$db2 = new DB_Contenido;

// liest die unterkategorien aus der datenbank
$sql = "
   SELECT a.idcat, b.name FROM {$cfg['tab']['cat']} AS a
   LEFT JOIN {$cfg['tab']['cat_lang']} AS b ON a.idcat = b.idcat
   WHERE
      b.idlang = $lang
      AND a.parentid = $categorie
   ORDER BY a.idcat
   ";

$db->query($sql);
   
while ($db->next_record()) {
   $unterkategorie[$db->f("name")] = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat"));
}

// ausgabe an den schirm
echo "<p>";
foreach ($unterkategorie as $bezeichner => $link) {
   echo "<a href="{$link}">{$bezeichner}</a><br/>";
}
echo "</p>";
?>

@ kummer
@ Dodger77

Vielen Dank, es funktioniert. :) Dennoch werde ich wohl PHP lernen müssen - für die Zukunft. :roll:

ggg244
Gesperrt