Formular sendet bei Aufruf, leere Felder an die DB

Divo1984

Erfahrenes Mitglied
Hallo,

ich habe da ein Code gtipselt, teilweise auch hier gefunden und habe jetzt folgendes Problem:

PHP:
$dbverbindung = mysql_connect ($dbhost, $dbuser, $dbpass);

$dbanfrage = "INSERT INTO bestellungen (name, vname, ort, plz, strasse, hausnummer, email, mailer, bannercode, paket) VALUES ('".$_POST["name"]. "', '".$_POST["vname"]."','".$_POST["ort"]."','".$_POST["plz"]."','".$_POST["strasse"]."','".$_POST["hausnummer"]."','".$_POST["email"]."','".$_POST["mailer"]."','".$_POST["bannercode"]."','".$_POST["paket"]."')";

sendet sofort wenn das Formular aufgerufen wird, einen leeren Datensatz an die Datenbank, was ja logisch ist, da ich keine Function definiert habe, wann dies geschehen soll...

Jetzt meine Frage:-)

Wie kann ich das coden, so dass PHP die Daten nur an die DB schickt, wenn der submit - Button betätigt wurde?

Am besten sogar mit vorheriger Prüfung ob auch alle Daten komplett eingegeben wurden, bzw. kein Feld leer ist?

Vielen Dank, vorab für eure Antworten:-)

Liebe Grüsse

Divo1984
 
Ist ein bisschen wenig Code um dir wirklich zu helfen.
Aber in deinem Formular (welches mit POST verschickt wird) gibt es dann ja wohl einen Submit Button der z.B. den Namen "Senden" trägt.

Dann schreibst du:

PHP:
IF (isset($_POST["Senden"])) {
  //hier kommt jetzt der Code rein der nach dem Sendenausgeführt werden soll
}

Prüfen kannst du die Daten erst Mal mit mysql_real_escape_string und ob ansonsten gültige Werte wie z.B. eine Zahl beim Feld Postleitzahl eingetragen wurden, das kommt dann da auch noch rein.

Ob ein Feld übergeben wurde kannst du mit isset prüfen. Am besten vorher noch Leerzeichen mit der TRIM Funktion entfernen. Sonst könnte man ja einfach überall ein Leerzeichen eingeben.
 
Zuletzt bearbeitet:
Vielen lieben Dank für deine schnelle Antwort:-)

Jetzt t es mit der Übergabe:-)

mein Code schaut jetzt so aus:

PHP:
IF (isset($_POST["bestellen"])) {
	
$dbverbindung = mysql_connect ($dbhost, $dbuser, $dbpass);


	
$dbanfrage = "INSERT INTO bestellungen (name, vname, ort, plz, strasse, hausnummer, email, mailer, bannercode, paket) VALUES ('".$_POST["name"]. "', '".$_POST["vname"]."','".$_POST["ort"]."','".$_POST["plz"]."','".$_POST["strasse"]."','".$_POST["hausnummer"]."','".$_POST["email"]."','".$_POST["mailer"]."','".$_POST["bannercode"]."','".$_POST["paket"]."')";

if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
print ("Sie haben bestellt!");
} else {
print ("Es traten Probleme auf.");
}


mysql_close ($dbverbindung); 

}

Dort wo jetzt print ("Sie haben bestellt!"); steht würde ich jetzt gern

Sie haben /"hier soll aufgerufen werden, welches Paket bestellt wurde"/ bestellt! Sie haben soeben eine eMail mit den Zahlungsmodalitäten erhalten.

ausgeben:-)

Wie kann ich das verwriklichen, das dort das Paket, das über folgende Selectbox

PHP:
<select name="paket"><option value="paket 1">60 Refs</option><option value="paket 2">90 Refs</option><option value="paket 3">160 Refs</option></select>

gesendet wird, dort aufgerufen wird?

Gibt es einen Befehl das ich danach auch automatisch eine eMail direkt an den "Bestellenden" senden lassen kann?

Ich bin noch blutiger Anfänger was das Coden betrifft, also bitte habt ein wenig Nachsehen mit mir:-)
 
Wie kann ich das verwriklichen, das dort das Paket, das über folgende Selectbox gesendet wird, dort aufgerufen wird?
Genauso wie du es im Prinzip schon gemacht hast, mit $_POST["paket"].

Gibt es einen Befehl das ich danach auch automatisch eine eMail direkt an den "Bestellenden" senden lassen kann?
Dafür gibt es mail().

Und noch etwas:
Man sollte niemals Eingaben eines Users direkt an SQL weitergeben sondern immer erst vorher prüfen.
 
Die Inhalte/Werte aller Textfelder (ob sichtbar oder nicht), Listenfelder, Buttons, Checkboxen usw. werden entweder als POST- (wie bei dir) oder als GET-Variable übertragen wenn ein Formular abgeschickt wurde.

PHP:
if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) { 
print ("Sie haben " .$_POST["paket"] ." bestellt!"); 
} else { 
print ("Es traten Probleme auf."); 
}

Den Befehl für das Sender eine eMail findest du hier. Beispiele dazu gibt es im Forum jede Menge, einfach mal die Suchfunktion um Hilfe fragen.
 
Super vielen lieben Dank, euch beiden!

Und noch etwas:
Man sollte niemals Eingaben eines Users direkt an SQL weitergeben sondern immer erst vorher prüfen.

Ich wollte das Formular erstmal soweit haben, das es sendet und entsprechende Daten ausgibt, die Prüfung kommt jetzt:-)

Nochmals vielen lieben Dank:-)
 
Zurück