über HTML Formular daten in SQL Datenbank
Burner
- php
Hallo zusammen,
ich habe ein Problem, vielleicht kann mir einer helfen.
Habe eine SQL Datenbank auf dem localhost eingerichtet, die auch einwandfrei funktioniert.
Da ich ein kleines Netzwerk im Hause habe, wollte ich ein Intranet erstellen.
Apache, PHP und MySQL sind korrekt installiert.
Soweit so gut, jetzt zu meinem Problem.
Habe ein HTML-Formular erstellt und möchte über diesen Daten in die SQL-Datenbank reinschreiben. Wenn ich das Formular ausfülle und diese in die Datenbank eintragen möchte, werden keine Daten übermittelt. Bekomme aber die Meldung das
"Verbindung mit der Datenbank besteht!!"
"Werte eingetragen!!"
Dies ist aber nicht so, das einzigste was passiert ist, daß eine leere Zeile ohne Daten hinzugefügt wurde.
Hier mein Code, vielleicht habe ich was übersehen.
Danke und Gruß
Burner
HTML Formular:
<H2>Eintrag in die Datenbank </H2>
<FORM action="listing-08b.php" method="get">
<B></B><BR>
Titel: <BR><INPUT TYPE=text NAME="$titel" size="50" ><BR>
Typ:<BR><INPUT TYPE=text NAME="$typ" size="10" ><BR>
Kategorie: <BR><INPUT TYPE=text NAME="$kategorie" size="50" ><BR>
Language: <BR><INPUT TYPE=text NAME="$language" size="50" ><BR>
<P>
<INPUT TYPE=submit value="Eintrag"><BR>
PHP Script:
<?
function verbinden( )
{
$Server = mysql_connect( "localhost", "", "" ) ;
if( mysql_select_db( "test" ) )
{
echo "Verbindung mit der Datenbank besteht!!<BR><BR>" ;
return 1 ;
}
else
{
echo "Fehler<BR>Keine Verbindung mit der Datenbank!!<BR>Abbruch!!" ;
return 0 ;
}
}
function einfuegen( $SQL )
{
$erg = mysql_query( $SQL ) ;
if( $erg )
{
echo "Werte eingetragen!!<BR><BR>" ;
return 1 ;
}
else
{
echo "Fehler<BR>".mysql_error()."<BR>Abbruch!!" ;
return 0 ;
}
}
if( !verbinden() ) return 0 ;
$SQL = "INSERT INTO dvd values( '', '$titel', '$typ' , '$kategorie', '$language' )" ;
einfuegen( $SQL ) ;
mysql_close( ) ;
?>
$SQL = "INSERT INTO dvd values( '', '$titel', '$typ' , '$kategorie', '$language' )" ;
Wie man ein INSERT Statemnet korrekt formuliert findest Du hier:
http://dev.mysql.com/doc/mysql/de/HANDLER.html
Viel Spaß
TomIRL
yo,
$SQL = "INSERT INTO dvd values( '', '$titel', '$typ' , '$kategorie', '$language' )" ;
Wie man ein INSERT Statemnet korrekt formuliert findest Du hier:
http://dev.mysql.com/doc/mysql/de/HANDLER.html
und was genau soll nun an dem INSERT statement falsch sein, ausser dass die variablen eventuell nicht den gewünschten inhalt besitzen ?
Ilja
hi,
$SQL = "INSERT INTO dvd values( '', '$titel', '$typ' , '$kategorie', '$language' )" ;
hast du dir den hier erzeugten querystring mal zur kontrolle ausgeben lassen? du wärst sicher überrascht ... er enthält vermutlich nicht das, was du erwartest.
und nach diesem erstaunen ist jetzt der zeitpunkt gekommen, sich über die PHP-konfigurationsoption register_globals zu informieren, was diese für auswirkungen hat, wenn sie auf 'off' steht (und das ist default).
und hier noch ein bisschen lesestoff, der dir sicher weiterhelfen wird:
http://www.php.net/manual/de/language.variables.predefined.php
http://tut.php-q.net/formulare.html
http://php-faq.de/ch/ch-webvariablen.html
gruß,
wahsaga
Hallo Burner,
"Verbindung mit der Datenbank besteht!!"
"Werte eingetragen!!"
Hier mein Code, vielleicht habe ich was übersehen.
HTML Formular:
<H2>Eintrag in die Datenbank </H2>
<FORM action="listing-08b.php" method="get">
Sieht nach einem Tutorial oder einem Buch aus.
Falls diese Annahme stimmt, so ist es älteren
Datums und geht davon aus, dass in php.ini
register_globals = on
steht. Dies ist schon seit längerer Zeit nicht
mehr der Fall, siehe http://www.php.net/manual/de/security.globals.php.
<B></B><BR>
Titel: <BR><INPUT TYPE=text NAME="$titel" size="50" ><BR>
Typ:<BR><INPUT TYPE=text NAME="$typ" size="10" ><BR>
Kategorie: <BR><INPUT TYPE=text NAME="$kategorie" size="50" ><BR>
Language: <BR><INPUT TYPE=text NAME="$language" size="50" ><BR>
...
if( !verbinden() ) return 0 ;
$SQL = "INSERT INTO dvd values( '', '$titel', '$typ' , '$kategorie', '$language' )" ;
Die Variablen $titel, $typ, $kategorie werden jetzt angelegt und sind leer.
Du solltest statt dessen mit $POST[$titel], ... auf die Inhalte Deiner Eingabefelder zugreifen.
Benutzereingaben darfst Du nicht ungeprüft übernehmen, schau' Dir bitte das Kapitel SQL-Injection http://www.php.net/manual/de/security.database.sql-injection.php im PHP-Handbuch an.
Ein
echo $SQL;
an dieser Stelle kann nicht schaden. Dann siehst Du, wie Deine SQL-Anweisung aussieht.
einfuegen( $SQL ) ;
Freundliche Grüsse,
Vinzenz