warning: mysql_fetch_array():.......

  • hi,


    da ich einige probleme mit php und mysql hatte, hab ich mir vorgenommen erst einmal einige tutorials durchzuarbieten um etwas solidere grundkenntnisse zu gewinnen, jetzt habe ich mich an den workshop
    Mysql-Befehle mit php rangemachtund bin auch zur vierten seite gekommen und nun sitze ich da wieder. hab das folgende script abgeschrieben und wollte es ausprobieren klappte ber nicht, dann hab ichs mit copy pate versucht kommt aber auch auch


    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Apache\Apache2\htdocs\adressen.php on line 29


    wenn ich in das formular trotzdem namen und so eintrage und auf absenden drücke ist die fehlermeldung weg, in meiner adressleiste des browsers stehen die eingegebenden daten aber in der datenbank ist nichts eingefügt worden.


    hier nochmal das skript aus dem worhshop:



    <html>
    <head>
    <title>Workshop</title>
    </head>
    <body>


    <table border="0" cellspacing="5">
    <?


    $verbindung = mysql_connect("localhost","root",""); // Diese Daten koennen natuerlich auch aus Variablen gelesen werden
    mysql_select_db("test");


    if($action == "neu"){
    $abfrage = "INSERT INTO adressen (vorname,nachname,strasse,plz,ort,telefon) VALUES ('$vorname', '$nachname','$strasse','$plz','$ort','$telefon')";
    mysql_query($abfrage, $verbindung);
    print("<tr><td colspan=\"7\">Neuen Datensatz gespeichert!</td></tr>");
    }


    if($action == "loeschen"){
    $abfrage = "DELETE FROM adressen WHERE id='$id'";
    mysql_query($abfrage, $verbindung);
    print("<tr><td colspan=\"7\">Datensatz $id gelöscht!!</td></tr>");
    }



    $abfrage = "SELECT * FROM adressen";
    $ergebnis = mysql_query($abfrage, $verbindung);


    while ($zeile = mysql_fetch_array($ergebnis)){
    print("
    <tr bgcolor=\"#CCCCCC\">
    <td>$zeile[nachname]</td>
    <td>$zeile[vorname]</td>
    <td>$zeile[strasse]</td>
    <td>$zeile[plz] $zeile[ort]</td>
    <td>$zeile[telefon]</td>
    <td><a href=\"$PHP_SELF?action=loeschen&id=$zeile[id]\">Löschen?</a></td>
    </tr>
    ");
    }


    mysql_close($verbindung);


    ?>
    </table>


    <form action="<?php $PHP_SELF ?>">
    <table border="0" cellspacing="5">
    <tr>
    <td colspan="2">Neue Adresse eintragen</td>
    </tr>
    <tr>
    <td>Vorname:</td><td><input type="text" name="vorname"></td>
    </tr>
    <tr>
    <td>Nachname:</td><td><input type="text" name="nachname"></td>
    </tr>
    <tr>
    <td>Strasse:</td><td><input type="text" name="strasse"></td>
    </tr>
    <tr>
    <td>PLZ:</td><td><input type="text" name="plz"></td>
    </tr>
    <tr>
    <td>Ort:</td><td><input type="text" name="ort"></td>
    </tr>
    <tr>
    <td>Telefon:</td><td><input type="text" name="telefon"><br>
    <tr>
    <td colspan="2">
    <input type="hidden" name="action" value="neu">
    <input type="submit" value="Speichern">
    </td>
    </tr>
    </table>
    </form>


    </body>
    </html>

    PHP

    [code=php]

  • Generell schonmal in Zeile 47 ist ein Fehler:


    Da steht:
    <?php $PHP_SELF ?>
    dass darf so nicht da stehen; weil es gar nichts ausgibt.


    Möglichkeit 1:
    <?php echo $PHP_SELF; ?>
    Möglichkeit 2:
    <?=$PHP_SELF?>


    In der selben Zeile fehlt ebenfalls auch noch die Sendemethode:
    method = "post"


    Dann solltest du das Skript mit:
    $action = $_POST['action']; //bzw ordentlich machen
    beginnen. Gilt für die anderen Vars übrigens auch!


    Und an SELECT * FROM adressen ist nichts falsches dran;
    wenn du echo mysql_error(); ausgibst, wirst du ja sehen,
    was falsch ist.


    [btw] Das Tutorial scheint eher eine Anleitung alla'
    php: tausend und eins Wege, wie man es nicht machen sollte ;)

    Zwei Dinge sind Unbestreitbar:

    • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.

    • Die Erde ist eine Scheibe!

    Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
    Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!