Abfrage läuft nicht (if else)
Mick
- php
Hallo alle zusammen,
ich habe eine einfache abfrage ob im formular die Variable "$submit" exestiert wen ja kleiner text wenn nicht -> formular...
aber ich bekomme als eine fehler meldung:
in einer zeile wo das html document aber schon zuende ist!
<?php
if ($Submit)
{
// Formualr ausgeführt - Meldung ausgeben
echo "Vielen Dank ...";
}
else
{
?> //ich glaube das er hier probleme macht!
<form name="form1" action=<?php echo $PHP_SELF ?> method="post">
Name:
<input type="text" name="textfield">
<br><br>
Nachname:
<input type="text" name="textfield">
<br>
<br>
E-mail Adresse:
<input type="text" name="textfield">
<br>
<br>
Ihre Anfrage:
<textarea name="" cols="30" rows="5"></textarea>
<br>
<br>
<input type="submit" name="Submit" value="Abschicken">
</form>
} //das hier erkennt er schein bar auch nicht mehr...?
?>
Hallo alle zusammen,
ich habe eine einfache abfrage ob im formular die Variable "$submit" exestiert wen ja kleiner text wenn nicht -> formular...
Hi:)
Prüfen, ob die Variable existiert musst Du so:
if(isset($Submit))
{
blah... .
Grüße, Buergle
Hallo Buergle,
das war schon ein super ansatz danke!
aber es lauft immer noch nicht?
<?php
if (isset($Submit))
{
// Formualr ausgeführt - Meldung ausgeben
bla bla
}
else
{
?> // ich glaube mit der anweisung hier habe ich probleme mir scheint er schließt hier den block einfach!
bla bla
} //das ab hier scheint nic´cht mehr relevant zu sein?
?>
da muss ncoh irgendwo ein fehler sein...??
gruß
Mick
} //das hier erkennt er schein bar auch nicht mehr...?
?>
Muss auch <?php } ?> heissen.
du hast oben mit
{
?>
PHP verlassen, und musst dementsprechend mit
<?php
}
?>
erstmal wieder den PHP-Tag öffnen, bevor die } kommt ;)
und wie bereits gesagt, isset() wär besser, muss aber nicht sein ;)
cu RFZ
hallo RFZ,
danke, das leuchtet mir sogar ein. *gg*
(finde ich zwar trozdem etwas unlogisch weil es doch in der else gestanden hat aber ok. ->ist halt so)
Muss auch <?php } ?> heissen.
Vielen Dank euch beiden
gruß
Mick
(finde ich zwar trozdem etwas unlogisch weil es doch in der else gestanden hat aber ok. ->ist halt so)
Schau mal, du hast mit ?> PHP abgeschlossen, alles was danach kommt interessiert den PHP Interpreter nicht mehr.
Nun hast du aber eben noch ein paar Fehler:
das ?> am ende ist falsch. Du hast den PHP-Tag schon oben geschlossen, es steht also zweimal ?> ?> hintereinander. Die Klammer davor, }, ist völlig egal, da die sich ja ausserhalb der PHP-Tags befindet.
Der Fehler den PHP melden sollte ist, dass du die schleife nicht abgeschlossen hast, denn als du mit
} ?>
PHP abgeschlossen hast, war die schleife ja noch offen.
Und genau deswegen musst du unten nochmal den PHP-Tag öffnen, die Schleife/If-Else-Anweisung beeden, und dann den PHP-Tag wieder schliessen.
Vielen Dank euch beiden
Bidde :)
gruß
Mick
cu RFZ
ich habe es von der falschen seite betrachtet,
ich dachte das sich der ?> einfach der else{ einfach unterordnet
aber der ?> steht in der herachie numal ganz oben das habe ich falsch ...
so nun aber noch ne runde feiern gehen ;-)
gute n8 alle
gruß
Mick
cu RFZ
Hallo Mick,
Auch wenn dein Problem bereits gelöst ist:
if ($Submit)
Verlass dich nicht darauf, dass das immer Funktioniert - wenn register_globals auf off steht, brauchst du $_POST['Submit']. Du solltest aber nicht auf isset($_POST['Submit']) testen, sondern darauf, ob das Name- oder das E-Mailfeld ausgefüllt ist - wenn der Anwender das Formular nämlich durch drücken der Enter-Taste abschickt, wird der Wert des Submit-Buttons nicht mit übertragen.
<form name="form1" action=<?php echo $PHP_SELF ?> method="post">
bei $PHP_SELF gibt es das gleiche problem wie bei $Submit (hier sollte es besser $_SERVER['PHP_SELF'] heißen) - außerdem muss der Wert des action-Attributs in Anführungszeichen stehen.
Name:[...]<input type="text" name="textfield">
Nachname:[...]<input type="text" name="textfield">
E-mail Adresse:[...]<input type="text" name="textfield">
du weißt, dass du damit nur das jeweils letzte ausgefüllte Feld übertragen bekommst? Unterschiedliche Werte für name wären nicht schlecht...
Ihre Anfrage:[...]<textarea name="" cols="30" rows="5"></textarea>
hier wäre ein Wert für name sinnvoll :-)
Grüße aus Nürnberg
Tobias
Hallo Tobias,
Tobias
wenn register_globals auf off steht,
was ist das den? sind das die server variablen?
brauchst du $_POST['Submit'].
nur so (if$_POST['Submit']) richtig.
Du solltest aber nicht auf isset($_POST['Submit']) testen, »» »» »» sondern darauf, ob das Name- oder das E-Mailfeld »» »» ausgefüllt ist
klingt vernünftig muss ich mir gedanken machen das ich da was schreibe..
- wenn der Anwender das Formular nämlich durch drücken der Enter-»» Taste abschickt, wird der Wert des Submit-Buttons nicht mit »» »» »» übertragen.
das hier habe ich nicht so ganz verstanden, kannst du mir das evt nochmal genauer erklären?
<form name="form1" action=<?php echo $PHP_SELF ?> method="post">
Ich werde darauf achten das ich es in "" schreiben
bei $PHP_SELF gibt es das gleiche problem wie bei $Submit (hier sollte es besser $_SERVER['PHP_SELF'] heißen)
wo ist den der unterschied, was bewierk denn "$_SERVER..."
Name:[...]<input type="text" name="textfield">
Nachname:[...]<input type="text" name="textfield">
E-mail Adresse:[...]<input type="text" name="textfield">
du weißt, dass du damit nur das jeweils letzte ausgefüllte Feld übertragen bekommst? Unterschiedliche Werte für name wären nicht schlecht...
ups nicht aufgepasst...
Gruß
Mick
hi,
wenn register_globals auf off steht,
was ist das den? sind das die server variablen?
das ist eine konfigurationseinstellung in der php.ini, die beeinflusst, ob dir z.b. per GET oder POST übergebene variablen direkt unter dem namen zur verfügung stehen, den das betreffende formularfeld in deiner html-seite hatte, oder ob du sie über $_GET['feldname'] bzw. $_POST['feldname'] ansprechen musst.
dies wurde aus sicherheitsgründen eingeführt, da sonst das manipulieren von scriptinternen variablen relativ leicht möglich ist.
brauchst du $_POST['Submit'].
nur so (if$_POST['Submit']) richtig.
das ja nu' mal kompletter käse, wenn schon dann
if(isset($_POST['submit'])) { ... }
(richtige klammernsetzung, und abprüfung einer variablen auf existenz, bevor der zugriff auf den eventuellen wert erfolgen kann.)
- wenn der Anwender das Formular nämlich durch drücken der Enter-»» Taste abschickt, wird der Wert des Submit-Buttons nicht mit »» »» »» übertragen.
das hier habe ich nicht so ganz verstanden, kannst du mir das evt nochmal genauer erklären?
was ist denn daran nicht zu verstehen?
wenn der benutzer das formular abschickt, in dem er deinen submit-button anklickt, dann hast du den wert, der im value des submit-buttons steht, in einen element des $_POST- oder $_GET-arrays zur verfügung, unter einem index der mit dem namen korrespondiert, den du dem submit-button per name-attribut gegeben hast.
wenn der user das formular jedoch abschickt, in dem er einfach [enter] drückt, wenn sich der fokus noch in einem input-feld befindet, dann werden name und wert des submit-buttons eben nicht mit übertragen.
wo ist den der unterschied, was bewierk denn "$_SERVER..."
gewisse arten auf von ausserhalb kommende variablen zuzugreifen, sind in aktuellen php-versionen u.U. nicht mehr möglich (genauer: in abhängigkeit der einstellung von register_globals).
analog zu der verwendung von $_GET/$_POST wie oben beschrieben für den zugriff auf formularwerte, sind auch die diversen environment- und server-variablen durch die arrays $_ENV/$_SERVER ersetzt worden.
genauer nachlesen kannst du das unter http://www.php.net/manual/de/language.variables.predefined.php.
und wenn schon mal dort bist, solltest du dich gleich mal über einige weitere _grundlagen_ von PHP informieren, da scheinen bei dir nämlich noch massive lücken zu bestehen.
gruss,
wahsaga
- wenn der Anwender das Formular nämlich durch drücken der Enter-»» Taste abschickt, wird der Wert des Submit-Buttons nicht mit »» »» »» übertragen.
das hier habe ich nicht so ganz verstanden, kannst du mir das evt nochmal genauer erklären?
was ist denn daran nicht zu verstehen?
jetzt ist es bei mir angekommen, danke für die ausführliche erklärung!
genauer nachlesen kannst du das unter http://www.php.net/manual/de/language.variables.predefined.php.
und wenn schon mal dort bist, solltest du dich gleich mal über einige weitere _grundlagen_ von PHP informieren, da scheinen bei dir nämlich noch massive lücken zu bestehen.
das ist richtig, vielen dank für den link ich werde mich dort umschauen...
gruss,
Mick