benni: zu ner mysql-datenbank einen eintrag hizufügen

halli hallo!

also ich bin gerade an den anfängen von php , und versuche, ein telefonbuch mit einer mysql-datenbank zu basteln...das mit dem einträge abrufen klappt auch schon super, aber ich schaffe es noch nicht, das man per formular und browser auch einträge zufügen kann. hier mein versuch:

<?php

if ($gesendet==Eintragen) {

echo "$formvorname $formnachname, $formvorwahl, $formnummer, $formhandy<br>";

$db = mysql_connect();

$res = mysql_db_query("uebung","select * from eintraege");

if ($res=="") {
 echo "es konnte keine verbindung hergestellt werden<br>";
 }

$einfuegen = "insert eintraege (vorname, nachname, vorwahl, telefon, Handy) values ('$formvorname', '$formnachname', $formvorwahl, $formnummer, $formhandy)";
 mysql_db_query("eintraege", "$einfuegen");

$aenderung = mysql_affected_rows();
 if ($aenderung>0) {
  echo "Der Eintrag wurde erfolgreich eingefügt!";
 }
 else {
  echo "Es ist ein Fehler aufgetreten!";
 }

mysql_close($db);
}

else {
?>

<form action="add.php">
<table border="0">
<tr>
<td>Vorname:</td><td align="right"><input name="formvorname"></td>
</tr>
<tr>
<td>Nachname:</td><td align="right"><input name="formnachname"></td>
</tr>
<tr>
<td>Vorwahl:</td><td align="right">0<input name="formvorwahl"></td>
</tr>
<tr>
<td>Nummer:</td><td align="right"><input name="formnummer"></td>
</tr>
<tr>
<td>Handy-Nummer:</td><td align="right">0<input name="formhandy"></td>
</tr>
<tr>
<td><input type="reset"></td><td align="right"><input type="submit" value="Eintragen" name="gesendet"></td>
</tr>
</table>
</form>

<?php
}
?>

die variablen mit dem vorname etc. werden korrekt übertragen, die verbindung zur datenbank ansich steht auch...aber es wird trotzdem kein eintrag hinzugefügt ( siehe echo "Es ist ein Fehler aufgetreten!"; ).
daher denke ich, dass es an folgendem abschnitt liegt:

$einfuegen = "insert eintraege (vorname, nachname, vorwahl, telefon, Handy) values ('$formvorname', '$formnachname', $formvorwahl, $formnummer, $formhandy)";
 mysql_db_query("eintraege", "$einfuegen");

kann mir jemand sagen, was da falsch ist? weil nach sämptlichen tutorials, die ich durchforstet habe, sollte es so gehen...

viele grüße,
benni

  1. hab jetz nur mal so flüchtig durchgeschaut, aber setz erstma alle anführungszeichen, bzw. hochkommata

    gruß

  2. Hi, ich würds so machn:
    <?php

    //-------Verbinden--------//

    $verbindung = mysql_pconnect();
    mysql_select_db("bla") or die ("Keine verbindung möglich");

    //----Daten Schreiben-----//

    mysql_query("INSERT INTO eintraege(vorname, nachname, vorwahl, telefon, Handy) VALUES
    ('$formvorname','$formnachname','$formvorwahl','$formnummer','
    $formhandy')") or die ("Schreiben in Datenbank nicht möglich");

    //---Verbindung Trennen---//

    mysql_close($verbindung);

    //----Variablen-Ausgabe---//
    echo "$formvorname $formnachname, $formvorwahl, $formnummer, $formhandy<br>";
    ?>
    <html>
    [...]

    1. PS: unter Umständen würd ich vielleicht den html teil (formular) und den php teil in getrennte dateien schreiben...

      und cu! bis denn

  3. Hallo.

    Wenngleich ich kein mySQL-Guru bin, aber wo definierst Du denn mysql_db_query()? Zumindest die Doku kennt nur mysql_query().

    Noch eine andere Sache in Richtung Zukunftsicherheit:
    Übernehme die Variablen nicht einfach direkt per $feldname. Zum einen kann so ein User einfach per URL an möglichen (versteckten) Werten manipulieren, zum anderen wird das in künftigen PHP-Versionen auch irgendwann nicht mehr unterstützt. Greife lieber über $_GET["feldname"] bzw. $_POST["feldname"] auf die Variablen zu.

    Grüße aus Würzburg
    Julian

  4. Hallo,

    kann mir jemand sagen, was da falsch ist?

    Nicht jemand, sondern etwas. Nämlich die Datenbank in Form einer Fehlermeldung. Um diese abzufragen gibt es in PHP sicherlich geeignete Mittel, spricht Funktionen bzw. global gesetzte Variablen. Wie das genau geht, kannst Du sicherlich der PHP-Dokumentatioon entnehmen.

    Du solltest Dir sowieso angewöhnen, bei sämtlichen Funktionen, die evenetuell auch nicht erwartungsgemäß ausgeführt werden, den Fehler abzufangen. Das gehört IMHO zu einen der wichtigsten Aufgaben eines Programmierers.

    weil nach sämptlichen tutorials, die ich durchforstet habe, sollte es so gehen...

    Wenn die nich einmal erklären, daß und wie man Fehler sinnvollerweise abfängt, solltest Du sie alle zusammen vergessen, da sie nichts taugen.

    Grüße
      Klaus