Method POST mit mehr als 5 Variablen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
anrede
anzahl
array
code
datei
email
fehlendes semikolon
fehler
form
formular
geburtstag
karte
nachname
nutz
ort
post
problem
text
vorname
-
Hallo...
habe gerade ein Formular kreiert und wollte, das es bei klick auf Absenden Button alle 12 Felder, bzw Variablen, an eine andere php datei übergibt. Diese php-datei soll mir dann eine Email schicken, mit den eingegebenen Daten.. Klappt soweit auch alles... AUßER, dass immer nur 5 Variablen übergeben werden. die restlichen existieren dann nicht in der zielphp. Kann man mit diesem method="post" nur maximal 5 variablen übergeben??
Gibt es vielleicht ne andere Variante, mit der das geht?
MfG Matthias -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Nein, man kann mit POST definitiv mehr als 5 Variablen übergeben.
Vielleicht postest du mal den Code von Start- und Zieldatei. -
worldwhiterabbit schrieb: Übergeb es doch als Array
somit ists egal wieviele formularelemente du übergibts !
Das ist es immer.
Achte auf Groß-/Kleinschreibung. Füge diesen Code ein, um das Post-Array zu betrachten:print_r($_POST);
-
hier der code der 2 dateien:
test1.php:
<form action="test2.php" method="post"> <table border="5" cellpadding="5" cellspacing="4"> <tr><td align="right">Anzahl Karten</td><td><input name="anzahl" type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Email</td><td><input name="mail" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Passwort</td><td><input name="passwort" type="text" size="10" maxlength="110"></td></tr> <tr><td align="right">Anrede</td><td><input name="anrede" type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Vorname</td><td><input name="vorname" type="text" size="15" maxlength="15"></td></tr> <tr><td align="right">Nachname</td><td><input name ="name" type="text" size="15" maxlength="15"></td></tr> <tr><td align="right">Straße/Nr</td><td><input name: ="str" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">PLZ/Ort</td><td><input name: ="plz" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Geburtstag</td><td><input name: ="tag" type="text" size="12" maxlength="12"></td></tr>
und test2.php:
<?php $empfaenger = "max@mustermann.de"; $betreff = "Neuer Kunde"; $text = " Anzahl Karten: $anzahl Email: $mail passwort: $passwort Anrede: $anrede Vorname: $vorname Name: $name Adresse: $str $plz Geburtstag: $tag "; mail($empfaenger, $betreff, $text, "From:blablabla <$sendermail>"); ?>
-
@world: Nein. Nicht überall gibt es register_global und zudem ist es ein äußerst dreckiger und unsicherer Stil!
@niemon: Code...
€dit: @world: Ja, so ist besser. Dennoch gibt es keinen Sinn ein Array zu erstellen ;)
@niemon: := sollte zu = werden im HTML-Code ;)
€dit_again: @niemon: Nutze bitte $_POST und nicht register_globals.
Beitrag zuletzt geändert: 5.10.2009 19:56:08 von nikic -
Zudem sollte man sich angewöhnen, die Variablennamen sorgfältig zu wählen. $name kann gegebenenfalls auch ein Schlüsselwort in einer Programmiersprache sein und deshalb schon mal nicht funktionieren.
Ich habe mir angewöhnt einen Präfix zu verwenden:
$var_name
$var_strasse
usw...
Ansonsten siehe nikic!!!
Beitrag zuletzt geändert: 5.10.2009 20:04:14 von karpfen -
auch wenns jetzt wieder schläge hagelt, aber hab das noch nie gemacht mit diesem $_post.
gibts da nen leicht verständliches Beispiel?
JAAAAA... ich bin noch am lernen :) -
Erstmal korrigierter HTML-Code:
<form action="test2.php" method="post"> <table border="5" cellpadding="5" cellspacing="4"> <tr><td align="right">Anzahl Karten</td><td><input name="anzahl" type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Email</td><td><input name="mail" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Passwort</td><td><input name="passwort" type="text" size="10" maxlength="110"></td></tr> <tr><td align="right">Anrede</td><td><input name="anrede" type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Vorname</td><td><input name="vorname" type="text" size="15" maxlength="15"></td></tr> <tr><td align="right">Nachname</td><td><input name="name" type="text" size="15" maxlength="15"></td></tr> <tr><td align="right">Straße/Nr</td><td><input name="str" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">PLZ/Ort</td><td><input name="plz" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Geburtstag</td><td><input name="tag" type="text" size="12" maxlength="12"></td></tr>
Zum Thema Post: Statt $anzahl nutzt du $_POST['anzahl']. Sieht umständlicher aus, ist es auch, aber es ist sicherer. -
niemon schrieb:
auch wenns jetzt wieder schläge hagelt, aber hab das noch nie gemacht mit diesem $_post.
gibts da nen leicht verständliches Beispiel?
JAAAAA... ich bin noch am lernen :)
Peeeeep! Da ist schon das erste Problem. Niemals "$_post" schreiben! Immer "$_POST". Die Anfühungszeichen sind in dem Fall nur für die Textgestaltung, nicht für die Anführungszeichen in PHP.
Also, wenn du per post (da kann man es klein schreiben, solange kein Dollar-Zeichen davor ist) Informationen überträgst, dann landen diese Informationen in den Array $_POST. Der Schlüssel ist der selbe, wie im Formular das name= angegeben ist, der Inhalt ist der, den der User eingegeben hat.
Weist du, was ein Array ist?
mfg drafed-map -
was ein array ist, weiß ich schon.....
habs jetzt eingearbeitet, aber nun krieg ich in meiner zielphp den fehler:
"...unexpected $end ..." -
Und nochmal bitte diesen Code posten. Hellsehen kann nur ich und auch nur, wenn ich meine Glaskugel zur Hand habe
-
niemon schrieb:
was ein array ist, weiß ich schon.....
habs jetzt eingearbeitet, aber nun krieg ich in meiner zielphp den fehler:
"...unexpected $end ..."
hi,
generell kann man sagen, dass bei diesem (und inhaltsähnlichen, sehr viel mit "unexpected") Fehler oft eine fehlende, *schließende geschweifte Klammer* oder ein fehlendes Semikolon schuld ist; Mittlerweile gibt es genug Editoren, die dir automatisch zu einer öffnenden die passende schließende im Quelltext suchen und umgekehrt - das kann beim finden solcher Fehler sehr helfen!
Gruß,
Beitrag zuletzt geändert: 5.10.2009 20:44:53 von aldistammkunde -
<tr><td align="right">Anzahl Karten</td><td><input name=$_POST['anzahl'] type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Email</td><td><input name=$_POST['mail'] type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Passwort</td><td><input name=$_POST['passwort'] type="text" size="10" maxlength="110"></td></tr>
$text = " Anzahl Karten: ".$_POST['anzahl']." Email: ".$_POST['mail']." passwort: ".$_POST['passwort']." Anrede: ".$_POST['anrede']." Vorname: ".$_POST['vorname']." Name: ".$_POST['varname']." Adresse: ".$_POST['str']." ".$_POST['plz']."
-
Scheint ein fehlendes Semikolon ; am Ende nach dem " zu sein.
-
ok. thx. den neuen fehler hab ich gefunden.... war nen " zu viel irgendwo
das nur 5 übertragen wurden, lag an den doppelpunkten (hab dann irgendwie immer "name:=" da stehen gehabt)
aber nun hab ich nen neues altes problem:
wenn ich aber nun folgenden code in der 2. datei hab, sind die variablen aber dann in der mail wieder leer, obwohl sie übergeben wurden.. das sehe ich ja indem ich "print_r($_POST);" nutze.
$text = " Anzahl Karten: ".$_POST['anzahl']." Email: ".$_POST['mail']." passwort: ".$_POST['passwort']." Anrede: ".$_POST['anrede']." Vorname: ".$_POST['vorname']." Name: ".$_POST['varname']." Adresse: ".$_POST['str']." ".$_POST['plz']."
-
niemon schrieb:
<tr><td align="right">Anzahl Karten</td><td><input name=$_POST['anzahl'] type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Email</td><td><input name=$_POST['mail'] type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Passwort</td><td><input name=$_POST['passwort'] type="text" size="10" maxlength="110"></td></tr>
hier vergisst du überhaupt erst einmal die Variablen mit PHP-echo auszugeben - für HTML sind die Variablennamen nur beliebige Zeichenketten; generell sehe ich nicht den sinn, warum man Formularfelder mit POST-werten benennen sollte?! verwechselst du evtl. name="foo" & value="foo"?
niemon schrieb:
$text = " Anzahl Karten: ".$_POST['anzahl']." Email: ".$_POST['mail']." passwort: ".$_POST['passwort']." Anrede: ".$_POST['anrede']." Vorname: ".$_POST['vorname']." Name: ".$_POST['varname']." Adresse: ".$_POST['str']." ".$_POST['plz']."
karpfen schrieb: Scheint ein fehlendes Semikolon ; am Ende nach dem " zu sein.
naja, nicht ganz; wohl eher ein Semikolon statt des letzten
also."
$text = " Anzahl Karten: ".$_POST['anzahl']." Email: ".$_POST['mail']." passwort: ".$_POST['passwort']." Anrede: ".$_POST['anrede']." Vorname: ".$_POST['vorname']." Name: ".$_POST['varname']." Adresse: ".$_POST['str']." ".$_POST['plz'];
-
@aldi. versteh nich worauf du hinaus willst :(
$text = " Anzahl Karten: ".$_POST['anzahl']." Email: ".$_POST['mail']." passwort: ".$_POST['passwort']." Anrede: ".$_POST['anrede']." Vorname: ".$_POST['vorname']." Name: ".$_POST['varname']." Adresse: ".$_POST['str']." ".$_POST['plz'];
das stimmt ja jetzt.. aber irgendwie steht dann in der $text nur der Text der vorgegeben ist und nicht die Werte. aber wieso, wenn ich hier das print_r($_POST); abrufe gehts doch auch...... kapier ich nich -
niemon schrieb:
<tr><td align="right">Anzahl Karten</td><td><input name=$_POST['anzahl'] type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Email</td><td><input name=$_POST['mail'] type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Passwort</td><td><input name=$_POST['passwort'] type="text" size="10" maxlength="110"></td></tr>
$text = " Anzahl Karten: ".$_POST['anzahl']." Email: ".$_POST['mail']." passwort: ".$_POST['passwort']." Anrede: ".$_POST['anrede']." Vorname: ".$_POST['vorname']." Name: ".$_POST['varname']." Adresse: ".$_POST['str']." ".$_POST['plz'].";
Du hast glaube ich was falsch verstanden:
Den $_POST teil brauchst du nur bei der Abfrage der übergebenen Daten.
Also nicht in deinem Formular direkt.
also nochmal der korrekte Formularcode:
form action="test2.php" method="post"> <table border="5" cellpadding="5" cellspacing="4"> <tr><td align="right">Anzahl Karten</td><td><input name="anzahl" type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Email</td><td><input name="mail" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Passwort</td><td><input name="passwort" type="text" size="10" maxlength="110"></td></tr> <tr><td align="right">Anrede</td><td><input name="anrede" type="text" size="1" maxlength="1"></td></tr> <tr><td align="right">Vorname</td><td><input name="vorname" type="text" size="15" maxlength="15"></td></tr> <tr><td align="right">Nachname</td><td><input name="name" type="text" size="15" maxlength="15"></td></tr> <tr><td align="right">Straße/Nr</td><td><input name="str" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">PLZ/Ort</td><td><input name="plz" type="text" size="30" maxlength="30"></td></tr> <tr><td align="right">Geburtstag</td><td><input name="tag" type="text" size="12" maxlength="12"></td></tr>
Und der PHP code war schon richtig:
$text = " Anzahl Karten: ".$_POST['anzahl']." Email: ".$_POST['mail']." passwort: ".$_POST['passwort']." Anrede: ".$_POST['anrede']." Vorname: ".$_POST['vorname']." Name: ".$_POST['varname']." Adresse: ".$_POST['str']." ".$_POST['plz'].";
Ich hoffe das behebt das Problem.
MfG
karlsve
Edit:
Schon blöde wenn man erstmal selber die Semikolon vergisst obwohl doch grade darüber gesprochen wurde:D
Aber egal ist jetzt ja korrigiert.
Beitrag zuletzt geändert: 5.10.2009 21:59:43 von karlsve -
vieeeeeeeeeeelen dank.. es funktioniert...
ich entschuldige mich in aller form für meine Anfängerfragen. :)
echt gutes Forum.. hab noch nie in nem Forum so schnell Antworten bekommen. Kann euch nur weiter empfehlen.
Fettes Danke an alle die mit geholfen haben....
gruß matthias -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage