wolle950: Daten von MySQL Datenbank in HTML Tabelle ausgeben

Hallo liebes Foren-Team!

Ich bin schon seit längerem an diesem Bsp. dran und möchte nun noch, dass die Daten der Datenbank in eine HTML Tabelle formatiert wird.

Habe schon mehrere Versuche gemacht, scheitere aber immer wieder daran.

Verbindung zur Datenbank

  
  
<?php  
  
if (isset($_POST['suche_enter']))  
{  
	  
	$servername = 'localhost'; /* Servername */  
	$user = 'root'; //Name  
	$password = '';  
	$verbindung = mysql_connect($servername,  
	$user,$password)  
or die (mysql_error());  
  
mysql_select_db('adrian', $verbindung) or die ("Die Datenbank existiert nicht.");  
$suchbegriff = trim(htmlentities(stripslashes(mysql_real_escape_string($_POST['suchfeld']))));  
  
$sql = "  
	select * from datatarans_tracking  
		WHERE Packet_ID LIKE '$suchbegriff'  
			";  
		  
	$query = mysql_query($sql)  
	OR die("Error: $sql<br>".mysql_error());  
	  
echo "<ul>";  
	  
while ($row = mysql_fetch_assoc($query))  
   {  
  $Packet_ID = $row['Packet_ID'];  
  $Aktueller_Standort = $row['Aktueller_Standort'];  
  $Datum = $row ['Datum'];  
  $Uhrzeit = $row ['Uhrzeit'];  
  
  echo "<li>$Packet_ID - <b>$Aktueller_Standort</b> $Datum $Uhrzeit </li>";  
  
   }  
  echo "</ul>";  
}  
  
?>  
  
  

Tabelle:

  
  
					<thead>  
						<tr>  
							<th>Packet_ID </th>  
                            <th>Aktueller_Standort</th>  
							<th>Datum</th>  
							<th>Uhrzeit</th>  
  
   <?php  
  
while($row = mysql_fetch_array($query)) { ?>  
  
  
  <tr>  
    <td><?php echo $row['Packet_ID']; ?></td>  
    <td><?php echo $row['Aktueller_Standort']; ?></td>  
    <td><?php echo $row['Datum']; ?></td>  
    <td><?php echo $row['Uhrzeit']; ?></td>  
   </tr>  
  
  
<?php } ?>  
  
  
						</tr>  
                       </thead>  
  

Moment tan schreibt er die Daten nicht in die Tabelle.

Meine Frage an euch:

Was muss ich ändern damit er die Daten in die Tabelle schreibt.

  1. Tach!

    $suchbegriff = trim(htmlentities(stripslashes(mysql_real_escape_string($_POST['suchfeld']))));

    Einfach mal alles draufhauen, was es so an Funktionen gibt, ist nicht sinnvoll. Besonders nicht, wenn die eine Funktion (stripslashes) teilweise das wieder aufhebt, was die andere (mysql_real_escape_string) gerade erst getan hat, und wenn man sich HTML-spezifische Kodierungen in die Datenbank schreibt (htmlentities), wo sie nichts verloren haben.

    $query = mysql_query($sql)
    OR die("Error: $sql<br>".mysql_error());

    Schreibst du das Script für Admins oder für Anwender? Letztere brauchen keine detaillierten Informationen zu Datenbankproblemen. Und eine halb fertige abgebrochene Seite wollen sie meistens auch nicht sehen.

    echo "<li>$Packet_ID - <b>$Aktueller_Standort</b> $Datum $Uhrzeit </li>";

    Hier fehlt die HTML-gerechte Behandlung.

    <td><?php echo $row['Packet_ID']; ?></td>
        <td><?php echo $row['Aktueller_Standort']; ?></td>
        <td><?php echo $row['Datum']; ?></td>
        <td><?php echo $row['Uhrzeit']; ?></td>

    Und hier auch. Am besten du liest mal den Artikel zum Kontextwechsel.

    Moment tan schreibt er die Daten nicht in die Tabelle.

    Was genau macht "er" denn? Untersuch das mit Hilfe von Kontrollausgaben (var_dump() ist ein gutes Werkzeug dafür).

    Was muss ich ändern damit er die Daten in die Tabelle schreibt.

    Zuerst untersuchen, was falsch läuft, dann kann man über Maßnahmen nachdenken.

    dedlfix.

    1. Hallo,

      Einfach mal alles draufhauen,......

      Danke für den Hinweis

      echo "<li>$Packet_ID - <b>$Aktueller_Standort</b> $Datum $Uhrzeit </li>";

      Hier fehlt die HTML-gerechte Behandlung.

      Und hier auch. Am besten du liest mal den Artikel zum Kontextwechsel.

      Danke für deine Link.
      Heiß das, dass ich alles was mit HTL zu tun hat in ' ' schreiben muss??

      Was genau macht "er" denn? Untersuch das mit Hilfe von Kontrollausgaben (var_dump() ist ein gutes Werkzeug dafür).

      Er schreibt die Daten einfach am beginn der Webseite hin, nicht wie von mir gewünscht in die Tabelle.

      Danke für deine schnelle Hilfe

      Wolle

      1. Tach!

        Heiß das, dass ich alles was mit HTL zu tun hat in ' ' schreiben muss??

        Es heißt, dass du dir immer genau überlegen muss, in welchen Kontext du gerade Daten geben möchtest, welche Sonderzeichen dieser kennt, und wie solche Zeichen umzuformen sind, wenn sie in den Daten vorkommen (können).

        Für HTML sind das <, > und & sowie " und manchmal auch '. Die Funktion htmlspecialchars() kümmert sich darum. htmlentites() auch, aber das macht viel zu viel unnötiges Zeug.

        Was genau macht "er" denn? Untersuch das mit Hilfe von Kontrollausgaben (var_dump() ist ein gutes Werkzeug dafür).
        Er schreibt die Daten einfach am beginn der Webseite hin, nicht wie von mir gewünscht in die Tabelle.

        Für einen Programmierer gibt es kein unspezifisches "er". Es gibt nur Code, der irgendwelche Ergebnisse produziert. Dort musst du hinschauen und debuggen, nicht (nur) in die Ausgabe.

        Dein erster Teil holt bereits alle Datensätze aus der Datenbankabfrage und schreibt sie in die ul-li-Liste. Dein Tabellen-Teil kann nun nichts mehr holen, weil der Fetch-Zeiger in der Ergebnismenge auf das Ende zeigt. Wenn du sie nochmal auslesen willst, musst der Fetch-Zeiger wieder auf den Anfang gestellt werden. Oder aber, du schreibst die Daten beim ersten und einzigen Auslesen in ein Array und läufst da so oft durch, wie du es am Ende brauchst. ("Fetch-Zeiger" ist kein Fachbegriff, dient hier nur eine Veranschaulichung. PHP merkt sich intern beim Fetchen, wo es gerade liest, damit der nächste Fetch-Aufruf dort fortsetzen kann. Es gibt eine mysql-Funktion mit seek im Namen, damit kann man diesen Zeiger positionieren.)

        dedlfix.

        1. Hallo,

          Dein erster Teil holt bereits alle Datensätze aus der Datenbankabfrage und schreibt sie in die ul-li-Liste. Dein Tabellen-Teil kann nun nichts mehr holen, weil der Fetch-Zeiger in der Ergebnismenge auf das Ende zeigt. Wenn du sie nochmal auslesen willst, musst der Fetch-Zeiger wieder auf den Anfang gestellt werden.

            
          					<thead>  
          						<tr>  
          							<th>Packet_ID </th>  
                                      <th>Aktueller_Standort</th>  
          							<th>Datum</th>  
          							<th>Uhrzeit</th>  
                                  </tr>  
                                 </thead>  
            
            <? $query = mysql_query($sql);  
          		  
          while ($row = mysql_fetch_assoc($query))  
             {  
           echo "<tr>";  
           echo "<td>"; $Packet_ID = $row['Packet_ID']; "</td>";  
           echo "<td>"; $Aktueller_Standort = $row['Aktueller_Standort']; "</td>";  
           echo "<td>"; $Datum = $row ['Datum']; "</td>";  
           echo "<td>"; $Uhrzeit = $row ['Uhrzeit']; "</td>";  
            
            echo "</tr>";  
             }  
            
            
            
            
              ?>  
          					<tbody id="tableBody">  
          						  
          					</tbody>  
          				</table>  
          
          

          Hab den code jetzt abgeändert.

          Beim Ausführen wird nicht wie gewünscht die Daten in die Tabelle geschrieben, sondern ""$Packet_ID = $row['Packet_ID'];""

          Laut Dreamweaver habe ich keinen Fehler im Code.

          Danke

          Wolle

          1. Da ich leider kein Profi im Bereich PHP bin, weiß ih mitlerweile nicht mehr weiter.

            Google durchsuche ich schon seit 2 Tagen auf eine Hilfreiche Lösung.

            Vielen Dank für deine Bemühungen

            Wolle

          2. Tach!

            echo "<td>"; $Packet_ID = $row['Packet_ID']; "</td>";

            Eine Ausgabe ("<td>"), eine Zuweisung und ein einfach so da stehender String ("</td>").

            Anweisungen werden mit Semikolon getrennt, mehrere Ausdrücke für ein echo mit Komma. Die Variablenzuweisung in der Ausgabe ist aber nicht sonderlich sinnvoll.

            Beim Ausführen wird nicht wie gewünscht die Daten in die Tabelle geschrieben, sondern ""$Packet_ID = $row['Packet_ID'];""

            Das macht aber nicht der gezeigte Code.

            dedlfix.

            1. Hallo

              Das macht aber nicht der gezeigte Code.

              Mit dem was ich als erstes gepostet habe schon.

              Wie lautet es dan richtig???

              Lg

              Wolle

              1. Tach!

                Wie lautet es dan richtig???

                Man schreibt ein echo und dann kommagetrennt, das was man ausgeben möchte. Wenn dir diese Grundlagen noch nicht geläufig sind, solltest du das mal mit einfachen Variablen üben. Außerdem hilft ein auf E_ALL gestelltes error_reporting (mit display_errors auf on - siehe phpinfo()-Ausgabe) mit Hinweismeldungen bei Zugriffen auf nicht vorhandene Dinge, sowie var_dump() und print_r(), um sich die Inhalte von Arrayas ausgeben zu lassen.

                Ich sehe meine Aufgabe nicht darin, dir fertigen Code zu präsentieren, sondern dir die Werkzeuge und Methoden zu erklären, die du zum erfolgreichen Programmieren immer wieder benötigen wirst.

                dedlfix.