Datenbaank/PHP Tabellen zeichnen
YaMuQ
- datenbank
0 Matthias Apsel0 Tom0 Jörg Reinholz0 dedlfix
Hallo Leute habe ein Problem mit mein php script dieser soll eig eine Tabelle öfters abbilden tut dieses jedoch nicht nach längerer Suche und stundenlanger versuchens habe ich beschlossen mein Problem mit euch zu teilen in der hoffnung das einer von euch mir mein Fehler zeigen kann
<?php
include "/storescripts/connect_script.php";
$dynamicList="";
$sql = mysql_query("SELECT*FROM products LIMIT 6");
$productCount = mysql_num_rows($sql);
if ($productCount>0){
while($row = mysql_fetch_array($sql)){
$details=$row["details"];
$id=$row["id"];
$product_name=$row["product_name"];
$price=$row["price"];
$dynamicList .='<table width="730" height="149" border="0">
<tr>
<td width="145"><a href="produkte.php?id='.$id.'"><img style="border:#666 1px solid" src="inventory_images/'.$id.'.jpg" width="147" height="134" alt="'.$product_name.'"/></a></td>
<td width="575"><p>'.$product_name.'</p>
<table width="526" height="95" border="0">
<tr>
<td width="291" height="91"><p>'.$price.'€</p>
<p>Auf Lager</p>
<br>
<br>
<p a href="produkte.php?id='.$id.'">Produkt ansehen</p></td>
<td width="225">'.$details.'</td>
</tr>
</table></td>
</tr>
</table>';
}
}else{
$dynamicList="Keine Produkte gelistet";
}
mysql_close();
?>
Om nah hoo pez nyeetz, YaMuQ!
<?php …
Code lässt sich mit den Buttons über diesem Textfeld als solcher auszeichnen.
<?php
include "/storescripts/connect_script.php";
$dynamicList="";
$sql = mysql_query("SELECT*FROM products LIMIT 6");
$productCount = mysql_num_rows($sql);
if ($productCount>0){
while($row = mysql_fetch_array($sql)){
$details=$row["details"];
$id=$row["id"];
$product_name=$row["product_name"];
$price=$row["price"];
$dynamicList .='<table width="730" height="149" border="0">
<tr>
<td width="145"><a href="produkte.php?id='.$id.'"><img style="border:#666 1px solid" src="inventory_images/'.$id.'.jpg" width="147" height="134" alt="'.$product_name.'"/></a></td>
<td width="575"><p>'.$product_name.'</p>
<table width="526" height="95" border="0">
<tr>
<td width="291" height="91"><p>'.$price.'€</p>
<p>Auf Lager</p>
<br>
<br>
<p a href="produkte.php?id='.$id.'">Produkt ansehen</p></td>
<td width="225">'.$details.'</td>
</tr>
</table></td>
</tr>
</table>';
}
}else{
$dynamicList="Keine Produkte gelistet";
}
mysql_close();
?>
Hallo Leute habe ein Problem mit mein php script dieser soll eig eine Tabelle öfters abbilden tut dieses jedoch nicht nach längerer Suche und stundenlanger versuchens habe ich beschlossen mein Problem mit euch zu teilen in der hoffnung das einer von euch mir mein Fehler zeigen kann
Satzzeichen sind ungeheuer hilfreich. Ebenso wie eine umfangreiche Fehlerbeschreibung.
Ich kann dir nur ein paar allgemeine Hinweise geben:
$details=$row["details"];
$id=$row["id"];
$product_name=$row["product_name"];
$price=$row["price"];
Das Umkopieren ist nicht notwendig.
> ~~~html
<table width="730" height="149" border="0">
Nicht alle Viewports sind 730px breit. Zudem scheint mir die Tabellenstruktur unnötig komplex.
Matthias
Hello,
Hallo Leute habe ein Problem mit mein php script dieser soll eig eine Tabelle öfters abbilden tut dieses jedoch nicht nach längerer Suche und stundenlanger versuchens habe ich beschlossen mein Problem mit euch zu teilen in der hoffnung das einer von euch mir mein Fehler zeigen kann
$sql = mysql_query("SELECT*FROM products LIMIT 6");
Betreibst Du auch Fehlerbehandlung?
Steht denn in $sql ein gültiger Ressourcebezeichner (Ergebnis)?
$dynamicList .= '...';
...
}else{
$dynamicList="Keine Produkte gelistet";
...
?>
Willst Du wirklich für jeden Datensatz eine eigene Tabelle ausgeben?
Wird $dynamicList auch irgendwo ausgegeben?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
in der hoffnung das einer von euch mir mein Fehler zeigen kann
1. Schreibe nicht asbach-uralten Code irgendwo ab. Hier ist es schon die Nutzung veralteter Module ein Fehler. Nutze anno 2014 mysqli oder PDO. (und php.net statt selbst ernannter PHP-Lehrbuchautoren als Quelle)
$sql = mysql_query("SELECT*FROM products LIMIT 6");
2. Wenn, dann schreibe das veraltete(!) und(!) fachlich falsche(!) wenigstens richtig ab.
$sql = mysql_query("SELECT * FROM products LIMIT 6");
wäre von der Syntax her richtig, ist aber fachlich immer noch falsch, weil Du etwas wie
$sql="
SELECT `id`, `product_name`, `price`
FROM `products`
LIMIT 6
";
$result = mysql_query("SELECT*FROM products LIMIT 6");
if ($result) {
$productCount = mysql_num_rows($result);
if ($productCount>0){
while($row = mysql_fetch_array($result)) {
$details=$row["details"];
# was auch immer noch
}
}
} else {
# Minimalste Fehlerbehandlung:
print "Fehler: " . [link:http://us1.php.net/manual/en/function.mysql-error.php@title=mysql_error]();
}
haben willst.
Was Mathias und Tom geschrieben gehaben ist ebenso richtig und gilt ebenso.
Jörg Reinholz
Tach!
Ein paar Korrekturen und Anmerkungen.
$sql = mysql_query("SELECT * FROM products LIMIT 6");
wäre von der Syntax her richtig, ist aber fachlich immer noch falsch, weil Du etwas wie
$sql="
SELECTid
,product\_name
,price
FROMproducts
LIMIT 6
";
$result = mysql_query("SELECT*FROM products LIMIT 6");
Das sollte eigentlich ein
$result = mysql_query($sql);
werden.
$productCount = mysql_num_rows($result);
if ($productCount>0){
while($row = mysql_fetch_array($result)) {
$details=$row["details"];
# was auch immer noch
}
}
In dem Fall ist mysql_num_rows() und das if überflüssig, weil while alleine schon gar nicht loslaufen kann, wenn keine Ergebnismenge vorliegt, denn dann kommt gleich beim ersten Aufruf von mysql_fetch_array() ein false zurück.
Anders wäre es, wenn der Fall der leeren Menge anders behandelt werden soll, denn dann könnte der in den else-Zweig. Allerdings kann man das meist auch anhand der leeren Datenmenge feststellen, die man in der whileschleife zu erzeugen gedenkt - also zum Beispiel wenn man da ein (davor initialisiertes) Array mit den Datensätzen füllt.
Weiterhin wäre mysql_fetch_assoc() unter Umständen besser, nämlich dann, wenn man die Werte nicht doppelt braucht, also einmal mit numerischem Key, und dann nochmal mit dem Spalten-/Aliasnamen. Alternativ kann man mysql_fetch_array() mit MYSQL_ASSOC als zweitem Parameter aufrufen.
Und was noch viel besser wäre: Für offensichtlich neue Projekte zukunftssichere Techniken empfehlen, nicht Beispiele mit Funktionen geben, die schon abgekündigt sind (auch wenn sie uns noch eine ganze Weile erhalten bleiben). Also mysqli oder PDO statt der mysql_*()-Funktionen verwenden.
dedlfix.
$result = mysql_query("SELECT*FROM products LIMIT 6");
Das sollte eigentlich ein
$result = mysql_query($sql);
Ja. Danke für die Korrektur. Das kommt davon, wenn man zwischen Tür und Angel antwortet.
Jörg Reinholz