Html, php, Mysql, Frage zum code

N

Nussi

Mitglied
Thread Starter
Dabei seit
05.01.2004
Beiträge
20
Reaktionspunkte
0
hi ich hab da ein problem mit einem php-script:

PHP:
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

das soll die ausgabe einer sql anfrage ausgeben.
kann mir wer erklären was das ganze jetzt genau macht?
blick hier irgendwie net durch
und der html code verwirrt mich dann noch mehr...

lg Martin
 
Zuletzt bearbeitet von einem Moderator:
ich hab Dich mal zur Web-Programmierung verschoben. Wenn Du Deinen Beitrag editierst, siehtst Du wie ich den PHP-Code recht einfach lesbarer gemacht habe.

Was macht das Script?

Nun echo schreibt einfach Anweisungen in den Ausgabestrom, der hier zum Web-Browser geht. Daher ist auch HTML darin. Es wird dyn. eine Webseite erstellt.

Dabei hast Du hier nur den Teil des Skriptes veröffentlicht, wichtige Dinge ( wie das Verbinden mit der DB fehlen hier).

Aber was tut das Skript nun?

Die letzte und die erste Zeile definieren einfach eine HTML-Tabelle, dadurch das die HTML-Tags dafür in die Webseite geschrieben werden:


aus

PHP:
echo "<table>";
echo "</table>";

wird für den Web-Browser schlicht:

PHP:
<table>
</table>


er erstellt also eine Tabelle.
Die while-Schleife wird solange durchlaufen wie eine Datenbankabfrage Ergebnisse liefert. Leider wissen wir nichts vond er Abfrage, sie ist hier im Fragment nicht enthalten.
 
Zuletzt bearbeitet:
PHP:
<?php
/* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql_connect()
   or die("Keine Verbindung möglich: " . mysql_error());
echo "Verbindung zum Datenbankserver erfolgreich";

$server= "localhost";
$table= "automarken";

$db= @mysql_connect($server,"root","") or die ("Keine Verbindung zur Datenbank!");
$table= @mysql_select_db($table) or die ("Fehler in der Verbindung zur Datenbank!");


/* ausführen einer SQL Anfrage */
$query = "SELECT * FROM Porsche WHERE PS>300";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());

/* Ausgabe der Ergebnisse in HTML */
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

/* Freigeben des Resultsets */
mysql_free_result($result);

/* schliessen der Verbinung */
mysql_close($link);
?>

das is der ganze und ich versteh die while und foreach funktion nicht genau
 
Das für sich alleine Macht nicht viel.

Aber wenn die Variable $result vorher mit den Daten einer SQL-Abfrage gefüllt wurde erzeugt der Code ein HTML-Tabelle von ungefär diesem Format:

Wert1 von Datensatz1 | Wert2 von Datensatz2 | usw.
Wert1 von Datensatz2 | Wert2 von Datensatz2 | usw.
usw.

Hoffe das beantwortet deine Frage.

Gruß,
Johannes
 
ich bin oben noch beim beschreiben gewesen ;)
mache dann aber hier mal weiter...


Deine SQL-Abfrage sucht einfach aus einer Datenbank alle Porsche mit mehr als 300 PS heraus ( eine klassische Männerfrage :) ).

Dann wird per HTML eine Tabelle eröffnet

Solange wie es Ergebniszeiel aus Deiner Datenbank gibt ( niemand weiß ja vorher wieviele das sein werden), werden diese ausgelesen. Genau das macht while hier. Dabei wird Jedes Ergebnis in eine Tabellenreihe (<tr>) geschrieben ; wieder per echo.

Das Ergebnis der SQL-Abfrage ($line) ist keine Zeile, sondern ein Array, das für jede Spalte Deiner Tabelle ein Element enthält. Eine Zeile könnte man einfach auf den Bildschirm schreiben. Das sähe dann so aus:


PHP:
<table>
  <tr>
    <td>1. Porsche</td>
  </tr>
  <tr>
    <td>2. Porsche</td>
  </tr>
...
  <tr>
    <td>n. Porsche</td>
  </tr>
</table>


nun ist dem Programmierer aber wohl nicht bekannt wie die Tabelle aussieht und er durchläuft per foreach einfach das Ergebnis um für jede Eigenschaft jedes Porsche eine Tabellenzelle zu haben:

PHP:
  <tr>
    <td>1. Porsche, Spalte 1 (Modell )</td>
    <td>1. Porsche, Spalte 2 (PS / KW)</td>
    <td>1. Porsche, Spalte 3 (Getriebe)</td>
    <td>1. Porsche, Spalte 4 (Preis in Euro)</td>
.....
  </tr>
...
</table>
 
Zuletzt bearbeitet:
ok dass hat mir schon sehr geholfen danke, is schon um einiges klarer
 
Nussi schrieb:
das is der ganze und ich versteh die while und foreach funktion nicht genau

Das listet die Details zu jedem Porsche mit mehr als 300 PS der sich in deiner Datenbank befindet auf.

Die while-Schleife sorgt dafür, dass alle Datensätze (sprich alle Porsche mit mehr als 300 PS) nacheinander zur Bearbeitung herangezogen werden, die foreach-Schleife liest dann aus jedem von der while-Schleife übergebenen jedes Feld (in diesem Fall wahrscheinlich sowas wie Baujahr, Höchstgeschwindigkeit usw.) aus.
 
Nussi schrieb:
das soll die ausgabe einer sql anfrage ausgeben.
kann mir wer erklären was das ganze jetzt genau macht?
blick hier irgendwie net durch
und der html code verwirrt mich dann noch mehr...

lg Martin

*räusper* solche fragen stellt man normalerweise nicht in foren...

wenn du dich mit php und mysql beschäftigst, musst du doch wissen,
was dein script tut, gell ;)
 
Zuletzt bearbeitet:
@moses: oder man lernt es vielleich gerade !?
 
Na fängt genauso an wie ich - erst mal Code von dieversen Seiten holen und Versuchen an eigene Bedürfnisse anzupassen - einige Variablen sind ja selbsterklärend - und dann dadurch langsam herantasten und lernen.
 
sorry, wenns unfreundlich rüberkam, aber code zu kopieren, entspricht nicht
meiner vorstellung vom programmieren lernen...irgendwie hat man ja auch
nicht wirklich ein erfolgserlebnis....

...aber mit der meinung stehe ich wohl alleine da, muss eben jeder für sich entscheiden :)
 
Um die Grundlagen zu lernen ist es am Besten du kaufst dir ein Buch. Danach kanns du dir immer noch Codes von anderen Webseits anschauen, um herauszufinden wie die Programmierer dies oder das gelöst hat.

Hier findest du auch noch ein gutes PHP Tutorial.
 
Zurück
Oben Unten