kostenloser Webspace werbefrei: lima-city


Durchnummerieren lässt oberste Zeile verschwinden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    Seit dem ich die Zeilen in meiner Tabelle durchzählen lasse, fehlt die oberste Zeile.
    Woran kann das liegen?

    Hier mal der passende Codeausschnit:

    for($i=1; $row = mysql_fetch_array($result); $i++) {
    
    //Daten in Variable schreiben
    $Vorname = $row['Vorname'];
    $Nachname = $row['Nachname'];
    $Klasse = $row['Klasse'];
    $Schule = $row['Schule'];
    $schuesse = $row['schuesse'];
    
    
    echo"<tr>";
    
    echo '<th>'.$i.'</th>';
    
    echo"<th>$Vorname</th>";
    echo"<th>$Nachname</th>";
    echo"<th>$Klasse</th>";
    echo"<th>$Schule</th>";
    echo"<th>$schuesse</th>";
    echo "</tr>";
    
    
    
    
    
    }
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. w******s

    for($i=1; $row = mysql_fetch_array($result); $i++
    Lass doch mal die Schleife bei Null anfangen…
  4. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    werktags schrieb:
    for($i=1; $row = mysql_fetch_array($result); $i++
    Lass doch mal die Schleife bei Null anfangen…

    Habe ich schon versucht, ändert aber nichts an dm Problem.
    Dann fängt er mit der Zweiten zeile bei 0 an.
    Von der Ersten ist jedoch immer noch nichts zu sehen.

    Beitrag zuletzt geändert: 29.3.2010 23:27:50 von no-smoke
  5. An dem wenigen Code kann ich keinen Fehler erkennen, ob du nun mit 1 oder mit 666 zu zählen beginnst, ist eigentlich egal.

    Du solltest allerdings mal die SQL-Abfrage prüfen, die zu $result führt, also ob dort überhaupt alle Zeilen vertreten sind.

    Außerdem kannst du dir innerhalb der Schleife mit
    print_r ($row);

    den Inhalt von $row darstellen lassen (dazu in den Quelltext gucken, damit es mit der Formatierung klappt).
  6. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    iniquitius schrieb:
    den Inhalt von $row darstellen lassen (dazu in den Quelltext gucken, damit es mit der Formatierung klappt).

    Ich habe alles überprüft, doch es ändert sich nichts.
    Nehme ich die Nummerierungszeile raus, funktioniert alles.

    <html>
    <head>
    <link rel="stylesheet" href="./css/style.css" type="text/css" />
    </head>
    <body>
    <?php
    //die Konfigurationsdateien lesen
    error_reporting(E_ALL);
    include "inc/config.php";
    
    //Datebnbanklogin
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    ?>
    <table width="100%" border="0" cellpadding="0" cellspacing="2">
    <tr bgcolor='B2DFEE'>
    <th>Platz</th>
    <th>Vorname</th>
    <th>Nachname</th>
    <th>Klasse</th>
    <th>Schule</th>
    <th>Anzahl der Treffer</th>
    </tr>
    <?php
    //Datensätze aus Datenbank holen
    
    
    
    $holen = "SELECT
    Vorname,
    Nachname,
    Klasse,
    Schule,
    id,
    date,
    schuss1+schuss2+schuss3+schuss4+schuss5+schuss6 AS schuesse
    FROM
    teilnehmer
    ORDER BY
    schuesse DESC;";
    
    
    $result = mysql_query($holen) OR die(mysql_error());
    
    
    if($result) {
    
    echo "";
    
    if(mysql_num_rows($result)) {
    while($row = mysql_fetch_assoc($result)) {
    
    
    
    
    for($i=1; $row= mysql_fetch_array($result); $i++) {
    
    //Daten in Variable schreiben
    $Vorname = $row['Vorname'];
    $Nachname = $row['Nachname'];
    $Klasse = $row['Klasse'];
    $Schule = $row['Schule'];
    $schuesse = $row['schuesse'];
    
    echo"<tr>";
    
    echo '<th>'.$i.'</th>';
    
    echo"<th>$Vorname</th>";
    echo"<th>$Nachname</th>";
    echo"<th>$Klasse</th>";
    echo"<th>$Schule</th>";
    echo"<th>$schuesse</th>";
    echo "</tr>";
    
    
    
    
    
    } }}    }
    
    else {
    echo "Die Datensätze konnten nicht aus der Datenbank geholt werden";
    }
    ?>
    </table>
    </body>
    </html>
  7. Korrigiert:
    <html>
    <head>
    <link rel="stylesheet" href="./css/style.css" type="text/css" />
    </head>
    <body>
    <?php
    //die Konfigurationsdateien lesen
    error_reporting(E_ALL);
    include "inc/config.php";
    
    //Datebnbanklogin
    @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
    mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
    ?>
    <table width="100%" border="0" cellpadding="0" cellspacing="2">
    <tr bgcolor='B2DFEE'>
    <th>Platz</th>
    <th>Vorname</th>
    <th>Nachname</th>
    <th>Klasse</th>
    <th>Schule</th>
    <th>Anzahl der Treffer</th>
    </tr>
    <?php
    //Datensätze aus Datenbank holen
    
    
    
    $holen = "SELECT
    Vorname,
    Nachname,
    Klasse,
    Schule,
    id,
    date,
    schuss1+schuss2+schuss3+schuss4+schuss5+schuss6 AS schuesse
    FROM
    teilnehmer
    ORDER BY
    schuesse DESC;";
    
    
    $result = mysql_query($holen) OR die(mysql_error());
    
    
    if($result) {
    
    for($i=1; $row= mysql_fetch_assoc($result); $i++) {
    
    //Daten in Variable schreiben
    $Vorname = $row['Vorname'];
    $Nachname = $row['Nachname'];
    $Klasse = $row['Klasse'];
    $Schule = $row['Schule'];
    $schuesse = $row['schuesse'];
    
    echo"<tr>";
    
    echo '<th>'.$i.'</th>';
    
    echo"<th>$Vorname</th>";
    echo"<th>$Nachname</th>";
    echo"<th>$Klasse</th>";
    echo"<th>$Schule</th>";
    echo"<th>$schuesse</th>";
    echo "</tr>";
    
    
    
    
    
    }   }
    
    else {
    echo "Die Datensätze konnten nicht aus der Datenbank geholt werden";
    }
    ?>
    </table>
    </body>
    </html>
  8. Aha, guckst du hier:

    while($row = mysql_fetch_assoc($result)) {
    
    for($i=1; $row= mysql_fetch_array($result); $i++) {
    ....
    }


    1. Prüfen der While-Bedingung, indem das 1. Ergebnis auf dem Result-Set $result geholt wird
    2. Eintritt in die FOR-Schleife, wobei in jedem Schleifendurchlauf zu Beginn nochmal ein Ergebnis aus dem Result-Set $result geholt wird, beginnend beim 2. Ergebnis (das 1. wurde ja in der While-Schleife rausgezogen).

    Demnach:
    Die umschließende WHILE-Schleife kann entfallen, die FOR-Schleife reicht aus als Abbruchbedingung (wird getan, solange er ein Array aus dem Result-Set $result ziehen kann).

    Außerdem:
    $result = mysql_query($holen) OR die(mysql_error());
    
    if($result) {


    Sieht für mich falsch aus: Falls die Abfrage kein Ergebnis (bzw. Fehler) bringt, wird das Programm mit einer Fehlermeldung die(mysql_error()); beendet. Deswegen ist die Prüfung, ob $result anliegt (nächste Zeile) überflüssig.
  9. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    iniquitius schrieb:
    Sieht für mich falsch aus: Falls die Abfrage kein Ergebnis (bzw. Fehler) bringt, wird das Programm mit einer Fehlermeldung die(mysql_error()); beendet. Deswegen ist die Prüfung, ob $result anliegt (nächste Zeile) überflüssig.

    Perfekt, nun funktioniert es.

    Danke an die obrigen beiden Posts.

    Thema ist damit gelöst!

    Beitrag zuletzt geändert: 30.3.2010 21:11:29 von no-smoke
  10. Noch ein letzter Nachtrag, wo ich meinen Beitrag lese:

    Nie mittels die(mysql_error()) die Fehlermeldung eines Systems direkt an den Nutzer rausgeben. Daraus kann ein Angreifer Rückschlüsse auf die Umgebung ziehen und gezielt attackieren.
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!