SQL Form mit PHP in SQL Datenbank eintragen

SpitFire3788

Cadet 2nd Year
Registriert
Jan. 2006
Beiträge
20
Schönen guten Abend meine Freunde. :)

Ich hätte da ein kleines Problem. Vielleich könnt ihr mir kurz aushelfen.
Vorab schon mal Danke an Alle.

####

Also:

Ich habe eine "eingabe_daten"-HTML Datei mit einem Form und ein paar include Befehlen:
(*ich habe einen ganz kurzen Ausschnitt niedergeschrieben)

<html>
<head></head>
<body>
<form name="Kontaktformular" action="script_kontakt2.php" method="post">
<td>
<p style="margin-bottom: 0px;">Gehen:</p>
</td>
<td>
<p style="margin-bottom: 0px;"><input type="text" id="FormsEditField4" name="Gehen:" size="15" maxlength="100" style="width: 116px; white-space: pre;">&nbsp;</p>
</td>
</body>
</html>



und ein "kontakt_script2"-PHP Datei wo anfangs der E-Mailverteiler war.
Jetzt will ich das alle Eingaben der HTML-Datei mit Hilfe von meiner neuen kontakte_script2.php Datei, in einer SQL-Datenbank erfasst werden.
Und hier fängt das Problem an.

Ich schaffe es einfach nicht das z.B. der Inhalt vom id-Feld "FormsEditField4" in das SQL-Feld "Kommen" eingetragen wird.

Quellcode:


<?php


$con = mysql_connect("mysqlserver.com", "user", "passwort") or die ("Verbindung konnte nicht aufgebaut werden!");

mysql_select_db("datenbank_1", $con) or die ("Die Datenbank existiert nicht!");


$Person = $_POST["Auswahlfeld1"];
$Kommen = $_POST["FormsEditField3"];
$Gehen = $_POST["FormsEditField4"];

$sql = mysql_query("INSERT INTO novo_time (Name, Kommen, Gehen) VALUES ('$Person' '$Kommen', '$Gehen')");

mysql_close($con);


/*
$admin= 'mail@test.com';

$subject= "Test-File-2";
$message= "Nachrichten an ".$admin.":\n\n";

foreach($_POST as $name=>$value) {
$message.= "$name: $value\n";
}

mail($admin, $subject, $message, "From:test@test.at");


header("Location: bearbeitung2.html");
*/


?>


lg Marius
 
Hast du es so schon mal probiert?

<html>
<head></head>
<body>
<form name="Kontaktformular" action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<td>
<p style="margin-bottom: 0px;">Gehen:</p>
</td>
<td>
<p style="margin-bottom: 0px;">
<input type="text" id="FormsEditField4" name="Gehen" size="15" maxlength="100" style="width: 116px; white-space: pre;">&nbsp;</p>
<input type="submit" value="submit" name="submit"/>
</td>
</body>
</html>
<?php
if($_POST['submit'])
{

$con = mysql_connect("mysqlserver.com", "user", "passwort") or die ("Verbindung konnte nicht aufgebaut werden!");

mysql_select_db("datenbank_1", $con) or die ("Die Datenbank existiert nicht!");


$Person = $_POST["Auswahlfeld1"];
$Kommen = $_POST["FormsEditField3"];
$Gehen = $_POST["FormsEditField4"];

$sql = mysql_query("INSERT INTO novo_time (Name, Kommen, Gehen) VALUES ('$Person' '$Kommen', '$Gehen')");

mysql_close($con);

/*
$admin= 'mail@test.com';

$subject= "Test-File-2";
$message= "Nachrichten an ".$admin.":\n\n";

foreach($_POST as $name=>$value) {
$message.= "$name: $value\n";
}

mail($admin, $subject, $message, "From:test@test.at");
*/
}
?>
 
omg.... -.-

Ich bin so blöööööööd!!! Ich hab seit Stunden den fehler gesucht und habe immer meinen Bezug auf die "id" gesetzt statt des "name" Syntax. :freak:


1000 x Danke.
lg Marius
Ergänzung ()

Danke auch an Capilano für die schnelle Antwort. :)
 
im query fehlt allerdings ein komma bei '$Person' '$kommen'

dann würde ich dir empfehlen lieber alle variablen namen klein anzufangen, in PHP zwar nicht so wichtig aber i.d.r. schreibt man nur Klassen groß und instanzen / variablen stets klein.
Außerdem solltest du NIEMALS daten ungefiltert in die Datenbank schreiben, da sind mysql injections vorprogrammiert ;)

schau dir z.b. mal mysql_real_escape_string an ;)

übersichtlicher finde ich persönlich auch folgendes

PHP:
mysq_query("INSERT INTO xy SET A = 'a',
                                                      B = 'b',
                                                      C = 'c');
 
Zuletzt bearbeitet:
das insert über mehrere zeilen zu streuen find ich persönlich weniger intuitiv, weils die suchfunktion negativ beeinträchtigt..
 
Vielleicht als hint.
mysql_query("query") or die(mysql_error());

Aber nur für eine Entwicklungsversion.
 
IceMatrix schrieb:
das insert über mehrere zeilen zu streuen find ich persönlich weniger intuitiv, weils die suchfunktion negativ beeinträchtigt..

welche suchfunktion ?

und meinetwegen muss man es nicht über mehrere zeilen streuen, allerdings finde ich es übersichtlicher es über a=aa statt über Felder(a,b,c) VALUES (aa,bb,cc) zu machen
 
Mercsen schrieb:
Außerdem solltest du NIEMALS daten ungefiltert in die Datenbank schreiben, da sind mysql injections vorprogrammiert [...]
übersichtlicher finde ich persönlich auch folgendes

1.) Richtig. Traue NIE dem Input.
Erwartest du eine Zahl, überprüfe ob es eine Zahl ist ( is_int(), intval() ), erwartest du eine Kommazahl (is_float()), prüfe das. Eine Zeichfolge? Ein konkretes Schema (E-Mail-Adressen) = Stichwort Regex...usw
2.) Diese Formationsart würde auch nicht Schaden:

PHP:
mysq_query("
	INSERT INTO 
		xy AS db
	SET
		db.A = 'a',
		db.B = 'b',
		db.C = 'c'
	WHERE
		db.A != db.B OR
		db.B != db.C
	ORDER BY
		db.C ASC,
		db.B DESC
	LIMIT
		0, 100
");
Dafür gibts auch irgeneinen Namen für die Formationsart.
 
Zuletzt bearbeitet:
Mercsen schrieb:
welche suchfunktion ?

und meinetwegen muss man es nicht über mehrere zeilen streuen, allerdings finde ich es übersichtlicher es über a=aa statt über Felder(a,b,c) VALUES (aa,bb,cc) zu machen

wenn du den quellcode später nochmal editieren willst ist es sinnvoll die suchfunktion vom quellcode editor zu verwenden. wenn du inserts über viele zeilen verteilst kannst du in den ergebnissen nicht mehr direkt sehen was da gemacht wird -> du musst alle matches durchkuggn.

Mercsen schrieb:
mysq_query("INSERT INTO xy SET A = 'a',
B = 'b',
C = 'c');

INSERT INTO .. SET ist übrigens nicht standardkonform! wenn der code mal auf was anderem als MySQL laufen soll fährst du damit an die wand.



mysq_query("
INSERT INTO
xy AS db
SET
db.A = 'a',
db.B = 'b',
db.C = 'c'
WHERE
db.A != db.B OR
db.B != db.C
ORDER BY
db.C ASC,
db.B DESC
LIMIT
0, 100
");
was soll das denn sein? du vermurxst hier nen insert, nen select und ein update?!
 
IceMatrix schrieb:
was soll das denn sein? du vermurxst hier nen insert, nen select und ein update?!

Dann hast du den Sinn davon gar nicht verstanden. Das ist ein Pseudo-code und soll dir die Formationsart darstellen, also die Verrückungen. Beispielsweise an verschiedenen Argumenten.

Wenn's dir so weiterhilft ...:
PHP:
mysq_query("
    INSERT INTO 
        xy AS db
    SET
        db.A = 'a',
        db.B = 'b',
        db.C = 'c'
    WHERE
        db.A != db.B OR
        db.B != db.C
");

INSERT INTO .. SET ist übrigens nicht standardkonform! wenn der code mal auf was anderem als MySQL laufen soll fährst du damit an die wand.
Ja simmt, aber das Ausrufezeichen als solches Satzzeichen ist hier fraglich. Wenn doch hier eindeutig mysql_query() benutzt wird (folglich eine MySQL-Datenbank) dann ist es doch für einen Hinweis etwas zu aggresiv (das Ausrufezeichen).
 
Zuletzt bearbeitet:
Zurück
Oben