Html, php, Mysql, Frage zum code

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Nussi, 08.12.2005.

  1. Nussi

    Nussi Thread Starter MacUser Mitglied

    MacUser seit:
    05.01.2004
    Beiträge:
    20
    Zustimmungen:
    0
    hi ich hab da ein problem mit einem php-script:

    PHP:
    echo "<table>\n";
    while (
    $line mysql_fetch_array($resultMYSQL_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 von einem Moderator bearbeitet: 08.12.2005
  2. wegus

    wegus MacUser Mitglied

    MacUser seit:
    13.09.2004
    Beiträge:
    14.714
    Zustimmungen:
    1.348
    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: 08.12.2005
  3. Nussi

    Nussi Thread Starter MacUser Mitglied

    MacUser seit:
    05.01.2004
    Beiträge:
    20
    Zustimmungen:
    0
    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($resultMYSQL_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
     
  4. jobed77

    jobed77 MacUser Mitglied

    MacUser seit:
    22.06.2005
    Beiträge:
    271
    Zustimmungen:
    0
    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
     
  5. wegus

    wegus MacUser Mitglied

    MacUser seit:
    13.09.2004
    Beiträge:
    14.714
    Zustimmungen:
    1.348
    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>nPorsche</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. PorscheSpalte 1 (Modell )</td>
        <
    td>1. PorscheSpalte 2 (PS KW)</td>
        <
    td>1. PorscheSpalte 3 (Getriebe)</td>
        <
    td>1. PorscheSpalte 4 (Preis in Euro)</td>
    .....
      </
    tr>
    ...
    </
    table>
     
    Zuletzt bearbeitet: 08.12.2005
  6. Nussi

    Nussi Thread Starter MacUser Mitglied

    MacUser seit:
    05.01.2004
    Beiträge:
    20
    Zustimmungen:
    0
    ok dass hat mir schon sehr geholfen danke, is schon um einiges klarer
     
  7. jobed77

    jobed77 MacUser Mitglied

    MacUser seit:
    22.06.2005
    Beiträge:
    271
    Zustimmungen:
    0
    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.
     
  8. moses_78

    moses_78 MacUser Mitglied

    MacUser seit:
    08.04.2005
    Beiträge:
    1.321
    Zustimmungen:
    22
    *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: 08.12.2005
  9. wegus

    wegus MacUser Mitglied

    MacUser seit:
    13.09.2004
    Beiträge:
    14.714
    Zustimmungen:
    1.348
    @moses: oder man lernt es vielleich gerade !?
     
  10. s_ko

    s_ko MacUser Mitglied

    MacUser seit:
    15.04.2005
    Beiträge:
    379
    Zustimmungen:
    10
    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.
     
Die Seite wird geladen...

Diese Seite empfehlen