Datenbank gibt immer einen Datensatz zu wenig zurück :-(
Compu
- php
0 norbert =:-)0 Compu0 norbert =:-)0 Compu
Hi,
komischerweise gibt mir die DB immer ein Produkt zu wenig zurück. Ich glaube das Problem ist darin begründet, dass ich zweimal auf die DB zugreifen muss, um die Kategorie für eine Übeschrift zu erhalten.
Dabei geht wohl eine Zeile flöten. Kann es sein, dass ich der interne Zeiger dadurch um eins verschiebt?
Wenn ja, wie korrigiert man das?
if (isset($_GET['opt']))
{
$sql = "SELECT *
FROM produktkuerzel pk, produktkategorie pkat
WHERE (pk.d_kategorie = ".$_GET['opt'].")
AND (pkat.id=pk.d_kategorie)";
$result = @mysql_query($sql,$dbConnection);
$anz = @mysql_num_rows($result);
echo "<table border="0">";
echo "<tr><td>";
$kategorie=$language."_kat";
$result = @mysql_query($sql,$dbConnection);
$row=mysql_fetch_array($result);
echo "<h2>".$row[$kategorie]."</h2>";
echo $t_ergebnisse." 1-".$anz."<br><br>\n";
echo "<ul>";
while($row = @mysql_fetch_array($result))
{
echo "<li><a href="catalog.php?produktname=".$row['d_produktname']."">".$row['d_produktnamehtml']."</li></a><br>";
}
echo "</ul>";
echo "</td></tr>";
echo "</table>";
}
DANKE,
Compu
Hallo Compu!
Ich weiß zwar nicht, was Du da tust - aber bei jedem mysql_fetch_array wird eine neue Datensatzzeile eingelesen. Nachdem Du diese Funktion zwei mal verwendest, fehlt dir wahrscheinlich in der <ul>-Liste der erste Datensatz:
$row=mysql_fetch_array($result); /* Erster wird ausgegeben */
echo "<h2>".$row[$kategorie]."</h2>";
...
echo "<ul>";
while($row = @mysql_fetch_array($result)) /* und jetzt die anderen */
{
echo "..."»» }
echo "</ul>";
Ich glaube, Du solltest den Code nochmal überarbeiten ;-)
mfg
norbert =:-)
Hi Norbert,
Ich weiß zwar nicht, was Du da tust - aber bei jedem mysql_fetch_array wird eine neue Datensatzzeile eingelesen. Nachdem Du diese Funktion zwei mal verwendest, fehlt dir wahrscheinlich in der <ul>-Liste der erste Datensatz:
Ja, ich weiß.
Kann man den Zeiger nicht um einen zurücksetzen?
Compu
Hallo Compu!
1.) Warum fragst du dann, wenn du es weißt?
2.) Nein - aber man kann es anders Programmieren:
if (isset($_GET['opt']))
{
$sql = "SELECT *
FROM produktkuerzel pk, produktkategorie pkat
WHERE (pk.d_kategorie = ".$_GET['opt'].")
AND (pkat.id=pk.d_kategorie)";
$result = @mysql_query($sql,$dbConnection);
$anz = @mysql_num_rows($result);
echo "<table border="0">";
echo "<tr><td>";
$kategorie=$language."_kat";
$row=mysql_fetch_array($result);
echo "<h2>".$row[$kategorie]."</h2>";
echo $t_ergebnisse." 1-".$anz."<br><br>\n";
echo "<ul>";
echo "<li><a href="catalog.php?produktname=".$row['d_produktname']."">".$row['d_produktnamehtml']."</li></a><br>";
while($row = @mysql_fetch_array($result))
{
echo "<li><a href="catalog.php?produktname=".$row['d_produktname']."">".$row['d_produktnamehtml']."</li></a><br>";
}
echo "</ul>";
echo "</td></tr>";
echo "</table>";
}
mfg
norbert =:-)
Hi Norbert,
Das war eine einfache Lösung !!!!
Da wäre ich nie drauf gekommen. Peinlich.
Hatte schon alle möglichen mysql Befehle ausprobiert.
DANKE!!!!!
Gruss
Compu
PS: Mit "Ja, ich weiß" meinte ich, dass ich weiß, dass der Code nochmal überarbeitet werden muss. :-)
Hallo Compu!
Der Vollständigkeit halber möchte ich noch anmerken, dass du die ganze Ausgabe noch in ein "if" packen musst - könnte ja sein, dass es gar keinen Datensatz gibt:
if (mysql_num_rows($result) > 0)
{
$row=mysql_fetch_array($result);
echo "<h2>".$row[$kategorie]."</h2>";
echo $t_ergebnisse." 1-".$anz."<br><br>\n";
echo "<ul>";
echo "<li><a href="catalog.php?produktname=".$row['d_produktname']."">".$row['d_produktnamehtml']."</li></a><br>";
while($row = @mysql_fetch_array($result))
{
echo "<li><a href="catalog.php?produktname=".$row['d_produktname']."">".$row['d_produktnamehtml']."</li></a><br>";
}
echo "</ul>";
}
mfg
norbert =:-)
Moin,
Hallo Compu!
Der Vollständigkeit halber möchte ich noch anmerken, dass du die ganze Ausgabe noch in ein "if" packen musst - könnte ja sein, dass es gar keinen Datensatz gibt:
Wo wir schon bei Vollständigkeit sind: Ihr habt doch hoffentlich nichts gegen ein bisschen Eleganz?
if (mysql_num_rows($result) > 0)
{
$row=mysql_fetch_array($result);
echo "<h2>".$row[$kategorie]."</h2>";
echo $t_ergebnisse." 1-".$anz."<br><br>\n";
echo "<ul>";
do {
echo "<li><a href="catalog.php?produktname=".$row['d_produktname']."">".$row['d_produktnamehtml']."</li></a><br>";
} while($row = @mysql_fetch_array($result));
echo "</ul>";
}
Hallo Henryk!
Perfekt - mehr kann ich da nicht sagen - aber man sollte Compu doch auch noch ein wenig überlassen ;-)
mfg
norbert =:-)