hawaiian: PHP-Formulardaten an mySQL-Datenbank???

Hi,

ich bin recht unerfahren in PHP und habe ein Problem mit dem Datenbankzugriff auf eine SQL-Tabelle im Besonderen mit dem hinzufügen eines neuen Datensatzes in eine bestehene Tabelle meiner Datenbank.
Es sollen Formular-Daten in eine bestimmte Tabelle geschrieben werden, welche mit dem PHP_SELF ubergeben werden...die Funktion die ich bei Übergabe eines Hidden-Feld-Werts aufrufe läuft ab allerdings kommen keine Daten in de Tabelle an, kurzer Auszug:

<form action="<?php $PHP_SELF ?>" method="post">

Quelltext.....

</form>

übergeben an die Funktion:

if($action == "neu"){

$abfrage = "INSERT INTO schools (,school,type,name_title,name_sur,name_given,name2_title,name2_sur,name2_given,address_street,address_zip,address_city,address_state,address_country,phone_business,phone_fax,phone_private,phone_cell,e_mail,homepage) VALUES ('$school', '$type','$name_title','$name_sur','$name_given','$name2_title','$name2_sur','$name2_given','$address_street','$address_zip','$address_city','$address_state','$address_country','$phone_business','$phone_fax','$phone_private','$phone_cell','$e_mail','$homepage')";

mysql_query($abfrage, $connection);
 mysql_select_db($db, $connection);
 if(mysql_errno()){die("Error creating Datatable");}
    print("<tr><td colspan="7">Added to Database</td></tr>");

}

Tja wie gesagt kommt nichts an...vielleicht hat ja jemand eine gute Idee....

Danke

Gruss

  1. Hallo hawaiian!

    Tja wie gesagt kommt nichts an...vielleicht hat ja jemand eine gute Idee....

    So, da ich jetzt eigentlich ins Bett will antworte ich nur kurz.

    1. Schonmal an register_globals gedacht?
       Benutze doch besser den $_POST-Array um die Variablen anzusprechen.
       (genaueres und Links siehe Archiv usw.)

    2. Lies mal http://dclp-faq.de/ch/ch-database_mysql.html, ins besondere auch http://dclp-faq.de/q/q-sql-injection.html.

    3. Schau Dir auch Deinen SQL-Befehl nochmal genau an und setz mysql_select_db() doch evtl. vor mysql_query().
       Außerdem kannst Du dir ja auch sinnvolle MySQL-Fehler ausgeben lassen, wäre vielleicht auch nicht ganz verkehrt.

    MfG
    Götz

    --
    Losung für Samstag, 10. April 2004
    Stehe auf, o Gott, richte die Erde! denn dein Eigentum sind die Völker alle. (Psalm 82,8)
    Wer an den Sohn glaubt, der wird nicht gerichtet. (Johannes 3,18)
    (http://www.losungen.de/heute.php3)
      1. Schonmal an register_globals gedacht?
           Benutze doch besser den $_POST-Array um die Variablen anzusprechen.

      mysql_select_db() doch evtl. vor mysql_query().

      Hi,

      was meinst du denn mit register_global, §_POST-Array?

      wenn ich mysql_select_db() vor mysql_query() setze kommt die von mir erstellte Fehlermeldung...

      Die Wegnahme des Kommas(welches da ja nicht hin gehört, mein Fehler) führt komischerweise zum selben Ergeignis wie eben beschrieben.

      ....??

      1. Ok, das Problem mit der Fehlermeldung ist behoben, lag an einer Verbinduseinstellung doch ankommen tut immernoch nichts!!....????

        1. Hallo hawaiian!

          Ok, das Problem mit der Fehlermeldung ist behoben, lag an einer Verbinduseinstellung doch ankommen tut immernoch nichts!!....????

          Sicher, daß nichts ankommt?
          Laß Dir mal var_dump($_POST) oder so ausgeben.

          Zum Thema vordefinierte Variablen siehe auch http://de.php.net/manual/en/language.variables.predefined.php.

          MfG
          Götz

          --
          Losung für Samstag, 10. April 2004
          Stehe auf, o Gott, richte die Erde! denn dein Eigentum sind die Völker alle. (Psalm 82,8)
          Wer an den Sohn glaubt, der wird nicht gerichtet. (Johannes 3,18)
          (http://www.losungen.de/heute.php3)
  2. Guten Morgen...

    wenn du mit der if-abfreage verlangst, dass die variable action den wert "neu" haben muss, um das abfrage-script auszuführen, solltest du natürlich auch eine variable "action" mit dem wert "neu" aus dem formular oben übergeben. zb:

    <form action="<?php $PHP_SELF ?>?action=neu" method="post">

    ODER:
    im formular ein hidden-feld:

    <input type="hidden" name="action" value="neu">

    ---------
    Da ist noch ein komma zu viel:
    $abfrage = "INSERT INTO schools (,school,type,name_title,.......
    ---------                        ^

    schönen 10. april noch

    ichen