Datenbankeintragsabfrage > query.php

Bawla

Mitglied
Hallo ich muss gestehen dass ich noch php-Anfänger bin - aber sehr motiviert :)

Ich erstelle gerade eine query.php -Datei die die Datenbankeinträge aus myAdmin auslesen soll. Als Schwierigkeitsgrad habe ich eine Tabelle eingebaut - allerdings funktioniert das nicht. Ich hab probiert und probiert aber ich finde den Fehler nicht.
Vielleicht kann mir ein Profi "auf einen Blick" den Fehler verraten? :-)

Vielen Dank für mögliche Antworten schon mal im voraus.

PS: Die Fehlerursache liegt wohl bei der Tabelle - html in php einfügen; da bin ich noch nicht so fit.

PHP:
<?php
$server = "localhost"; $user = "root"; $pass = "";
$database = "appelmann"; $table = "bestellung";
$verbindung = @mysql_connect($server, $user, $pass);

mysql_select_db($database, $verbindung)
or die ("Fehler beim Zugriff auf die Datenbank $database!");

$sql = "SELECT * FROM $table";
$query = mysql_query($sql);
while ($Zeile = mysql_fetch_array($query))
?>
<table border=1>
<?
{echo "<tr><td>".$Zeile["Index"]."</tr></td>"."<tr><td>"$Zeile["Name"]."</tr></td>"."<tr><td>"$Zeile["Strasse"]."</tr></td>"."<tr><td>"$Zeile["Ort"]."</tr></td>"."<tr><td>"$Zeile["Menge"]."</tr></td>"."<tr><td>"$Zeile["Sorte"]."</tr></td>"};
?>
</table>
<?
mysql_close($verbindung);
?>
 
Zu einem solltest du gleich am Anfang damit aufhören Fehlermeldungen, die von bestimmten Funktionen ausgegeben werden, durch den @-Operator zu unterdrücken.
 
Dachte eher dass der Fehler in dieser Zeile liegen müsste:

PHP:
{echo "<tr><td>".$Zeile["Index"]."</tr></td>"."<tr><td>"$Zeile["Name"]."</tr></td>"."<tr><td>"$Zeile["Strasse"]."</tr></td>"."<tr><td>"$Zeile["Ort"]."</tr></td>"."<tr><td>"$Zeile["Menge"]."</tr></td>"."<tr><td>"$Zeile["Sorte"]."</tr></td>"};
 
Schau nochmal genau nach wie man Tabellen erstellt...

Eine Tabelle hat diese Struktur:
HTML:
<table>
  <tr>
    <td></td>
    <td></td>
    <td></td>
  </tr>
</table>

Die hat deine nicht. Du schließt die tr tags vor den td. ,)

Generell solltest du deinen Code ein wenig anderst aufbauen, daran wird es liegen das er es nicht richtig macht:
PHP:
echo "<table border=1>";
while ($Zeile = mysql_fetch_array($query)) {
    echo "<tr><td>".$Zeile["Index"]."</td></tr>";
    echo "<tr><td>".$Zeile["Name"]."</td></tr>";
    echo "<tr><td>".$Zeile["Strasse"]."</td></tr>";
    echo "<tr><td>".$Zeile["Ort"]."</td></tr>";
    echo "<tr><td>".$Zeile["Menge"]."</td></tr>";
    echo "<tr><td>".$Zeile["Sorte"]."</td></tr>";
}
echo "</table>";
mysql_close($verbindung);
?>

Innerhalb des Codes haben eine menge . zum Zeichenketten verknüpfen gefehlt und ein abschließendes ; am ende.
Generell lässt sich eine so lange zeilenausgabe schlecht lesen und man sollte es wohl eher so machen, dann findet man später die zeilen auch leichter wieder.
 
Zuletzt bearbeitet:
...hab mich wohl zu früh gefreut: ich habe jetzt zwei Varianten - eine mit while- und eine mit for-Schleife und beide funktionieren nicht. Wäre zu großem Dank verpflichtet wenn jemand meine Denkfehler finden würde.

Welche Version wäre besser von beiden - wenn Sie funktionieren würden :)

PHP:
<?php
$server = "localhost"; $user = "root"; $pass = "";
$database = "appelmann"; $table = "bestellung";
$verbindung = @mysql_connect($server, $user, $pass);

mysql_select_db($database, $verbindung)
or die ("Fehler beim Zugriff auf die Datenbank $database!");

$sql = "SELECT * FROM $table";
$query = mysql_db_query($sql);
$num = mysql_num_rows($query);

echo "<table border>=1";
while ($Zeile = mysql_fetch_array($query))

echo "<th> Index </th><th> Name </th><th> Strasse </th><th> Ort </th> <th> Menge </th> <th> Sorte </th>";
echo "<tr><td>"."Index: ".$Zeile["Index"]."</td></tr>";
echo "<tr><td>"."Name: ".$Zeile["Name"]."</td></tr>";
echo "<tr><td>"."Strasse: ".$Zeile["Strasse"]."</td></tr>";
echo "<tr><td>"."Ort: ".$Zeile["Ort"]."</td></tr>";
echo "<tr><td>"."Menge: ".$Zeile["Menge"]."</td></tr>";
echo "<tr><td>"."Sorte: ".$Zeile["Sorte"]."</td></tr>";
}
echo "</table>";
mysql_close($verbindung);
?>

PHP:
<html>
<body>
<?php
$server = "localhost"; $user = "root"; $pass = "";
$database = "appelmann"; $table = "bestellung";
$verbindung = @mysql_connect($server, $user, $pass);

mysql_select_db($database, $verbindung)
or die ("Fehler beim Zugriff auf die Datenbank $database!");

$sql = "SELECT * FROM $table";
$query = mysql_db_query($sql);
$num = mysql_num_rows($query);

echo "<table border>=1";
echo "<tr> <td>Index</td> <td>Name</td>";
echo "<td>Strasse</td> <td>Ort</td>";
echo "<td>Menge</td> <td>Sorte</td> </tr>";

   for ($i=0; $i<$num; $i++)
   {
      $Index = mysql_result($query, $i, "index");
      $Name = mysql_result($query, $i, "name");
      $Strasse = mysql_result($query, $i, "strasse");
      $Ort = mysql_result($query, $i, "ort");
      $Menge = mysql_result($query, $i, "menge");
      $Sorte = mysql_result($query, $i, "sorte");

      // Tabellenzeile mit -zellen
      echo "<tr> <td>$Index</td> <td>$Name</td> <td>$Strasse</td>";
      echo "<td>$Ort</td> <td>$Menge</td> <td>$Sorte</td> </tr>";
}
echo "</table>";
mysql_close($verbindung);
?>  
</body>
</html>
 
PHP:
$query = mysql_db_query($sql);

Ist falsch. Die Funktion die du hier brauchst ist [phpf]mysql_query[/phpf].

[phpf]mysql_db_query[/phpf] benutzt man am ehesten, wenn man parallel mit mehreren Datenbanken arbeitet.
Weiterhin erwartet mysql_db_query() zwei Parameter, nämlich die Datenbank und das Query.
 
habs jetzt nochmal verbessert und so hoffe ich alle Anfängerfehler und Tippfehler beseitigt.

die while Schleife liest jetzt die MyAdmin Tabelle aus aber nicht so wie ichs mir vorgestellt habe - kann es überhaupt mit diesem Code funktionieren? Habe im Internet zu Datenbankabfrage nur for-Schleifen mit ($i=0; $i<$num; $i++) gesehen.

Beste Grüße
Bawla

PHP:
<?php
$server = "localhost"; $user = "root"; $pass = ""$database = "appelmann"; $table = "bestellung";
$verbindung = @mysql_connect($server, $user, $pass);

mysql_select_db($database, $verbindung)
or die ("Fehler beim Zugriff auf die Datenbank $database!");

$sql = "SELECT * FROM $table";
$query = mysql_query($sql);

echo "<table border=1>";
while ($Zeile = mysql_fetch_array($query))  {
 
echo "<th> Index </th><th> Name </th><th> Strasse </th><th> Ort </th> <th> Menge </th> <th> Sorte </th>";

echo "<tr><td>".$Zeile["Index"]."</td></tr>";
echo "<tr><td>".$Zeile["Name"]."</td></tr>";
echo "<tr><td>".$Zeile["Strasse"]."</td></tr>";
echo "<tr><td>".$Zeile["Ort"]."</td></tr>";
echo "<tr><td>".$Zeile["Menge"]."</td></tr>";
echo "<tr><td>".$Zeile["Sorte"]."</td></tr>";



}
echo "</table>";
mysql_close($verbindung);
?>

Als Anhang hab ich diese Tabelle mal beigefügt
 

Anhänge

  • html_Tabelle_query.jpg
    html_Tabelle_query.jpg
    55,9 KB · Aufrufe: 136
Das liegt aber nicht an PHP sondern an deiner HTML Formatierung der Tabelle.

PHP:
#[...]

echo "<tr>";
echo "<td>".$Zeile["Index"]."</td>";
echo "<td>".$Zeile["Name"]."</td>";
echo "<td>".$Zeile["Strasse"]."</td>";
echo "<td>".$Zeile["Ort"]."</td>";
echo "<td>".$Zeile["Menge"]."</td>";
echo "<td>".$Zeile["Sorte"]."</td>";
echo "</tr>";
#[...]
 
Hallo,

... und die Zeile mit den Überschriften vor die WHILE-Schleife setzen etwa so:

PHP:
echo "<tr><th> Index </th><th> Name </th><th> Strasse </th><th> Ort </th> <th> Menge </th> <th> Sorte </th></tr>"; 
while (....) {

}

Markus
 
Zurück