PHP Formular wird nicht angezeigt

Abcd12345

Lt. Junior Grade
Registriert
März 2006
Beiträge
483
Hi,

Ich habe ein Problem mit diesem Formular:

Code:
<?php
  if($_GET['lastname'] == "" || $_GET['cardvalue'] == "")
  {
    echo '<form action= "affe3.php" method="get">';
    echo '<insert type= "hidden" name = "control">';
    echo "Nachname:</br>";
    echo '<insert type= "text" name = "lastname"> ';
    echo "Karten Anzahl:</br>";
    echo '<insert type= "text" name = "cardvalue"> ';
    echo '<insert type="submit" name="Karten bestellen>"';
    echo '</form>';
  }
  else
  {
    echo "Vielen Dank! Karten wurden reserviert";
    echo "</br>";
    echo "Karten Anzahl:" .cardvalue;
    echo "</br>";
    echo "Nachname:" .lastname;
  }
?>

Es wird einfach nicht angezeigt..

Wo liegt mein Fehler?
 
Zuletzt bearbeitet:
Code:
if($_GET['lastname'] == "" || $_GET['cardvalue'] == "")

Hier. Solange das Formular nicht abgeschickt wurde, existiert keine der beiden GET-Variablen, so dass das Formular niemals angezeigt wird.
 
außerdem,
-> echo '<insert type="submit" name="Karten bestellen>"';
dein " ist nicht innerhalb der spitzen Klammer

MfG
 
HTML
Formulare haben keine "<insert>"-Elemente
Was Du suchst ist: <input>

PHP
Das Formular willst Du doch nicht wirklich so einsetzen?
http://www.php-faq.de/ch-webvariablen.html

Warum nicht HTML von PHP trennen?
Ich habe hier mal was quick & dirty Dir erstellt...

PHP:
<?php

// INITALWERTE SETZEN
$error = 0
$error_lastname = 0;

// --

if (isset($_POST['submit')) {

// FEHLERROUTINE ZUM ABFANGEN VON FEHLEINGABEN
if(trim($_POST['lastname']) == '') { $error = 1; $error_lastname = 1; }


/*
Mindeszeichenlänge,
int Prüfungen
usw.
*/

if ($error == 0) {

$msg = 'Vielen Dank! Karten wurden reserviert';

} else if ($error == 1) {

$msg = 'Karte nicht reserviert. Fehler bei der Eingabe. Bitte entsprechende Felder prüfen';

} 

echo $msg;

}

?>

HTML:
<form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="lastname">
.
.
.
Ergänzung ()

Stefan- schrieb:
Code:
if($_GET['lastname'] == "" || $_GET['cardvalue'] == "")

Hier. Solange das Formular nicht abgeschickt wurde, existiert keine der beiden GET-Variablen, so dass das Formular niemals angezeigt wird.

Falsch!
Gerade weil keine GET-Parameter existieren, wird das Formular angezeigt!
Es wird ja nicht nach isset() geprüft sondern nur ob die $_GET Variablen lastname oder cardvalue nicht befüllt sind.

Ach ja, das habe ich erst recht nicht "verstanden":

PHP:
    echo "Karten Anzahl:" .cardvalue;
    echo "</br>";
    echo "Nachname:" .lastname;

Du wolltest sicherlich das hier:

PHP:
    echo "Karten Anzahl:" . $_GET['cardvalue'];
    echo "<br>";
    echo "Nachname:" . $_GET['cardvalue'];

Zumal </br> auch falsch ist...Wenn Du XHTML-Konform die <br>-Elemente schreiben willst, dann bitte <br />. ;)
 
Zuletzt bearbeitet:
Falsch - falsch. Also richtig, zumindest meine Aussage.

$_GET['lastname'] und $_GET['cardvalue'] liefern, wenn das Formular nicht abgeschickt wurde, beide ein FALSE bzw. einen Fehler. Damit ist die IF-Bedingung nicht erfüllt, was zum ELSE-Statement führt.

Probiers aus..
 
Stefan- schrieb:
Falsch - falsch. Also richtig, zumindest meine Aussage.

$_GET['lastname'] und $_GET['cardvalue'] liefern, wenn das Formular nicht abgeschickt wurde, beide ein FALSE bzw. einen Fehler. Damit ist die IF-Bedingung nicht erfüllt, was zum ELSE-Statement führt.

Probiers aus..

Nein, wirklich...Warum soll ich ausprobieren wo es von der Logik her schon vom Ablauf ersichtlich ist? Wenn kein Submit, dann ist $_GET['lastname'] == '' und somit wird auch das Formular angezeigt...Selbst bei einem Submit (und zwei leeren Eingabefeldern) wäre $_GET['lastname'] == '' und das Formular würde erneut angezeigt werden...
 
Ne, wenn kein Submit ist, dann ist $_GET == FALSE, es gibt kein $_GET. Damit ist man niemals im IF-Fall und immer im ELSE-Fall..
 
Stefan- mach es Dir doch nicht so schwer:

http://www.benjamin-butschko.de/test111.php

Zum Besseren Verständnis: http://www.benjamin-butschko.de/test111.php?show=source



Du siehst, wird das Formular ausgegeben (habe insert auf input korrigiert)...Ergo:

ist $_GET'lastname'] == "", sonst würden wir uns, so Deine Behauptung, im ELSE befinden....

Wie oft den noch: Es wird nicht auf die Existenz von einer $_GET['lastname'] geprüft, sondern nur ob diese == '' ist.

Dazu bedarf es keinen Submit und hat nix mit einer Formular-Aktion zu tun.
 
Das Beispiel funktioniert, d.h. meine Schlussfolgerung ist falsch.

Trotzdem ist das IF-Statement weiterhin nicht richtig. Da wird eine nicht existierende Variable mit einem String verglichen. Das funktioniert nur, weil PHP bei den Datentypen gerne mal beide Augen zudrückt.

In o.g. Fall _ist_ $_GET == FALSE, eben weil diese Variablen nicht existieren. Das Statement muss also, alleine um die Programmlogik nicht zu beeinträchtigen, überprüfen ob die Variablen existieren und nicht (fiktiven) Wert diese haben.

Die Abfrage funktioniert, ist aber schlichtweg falsch.
 
Stefan- schrieb:
DIn o.g. Fall _ist_ $_GET == FALSE, eben weil diese Variablen nicht existieren. Das Statement muss also, alleine um die Programmlogik nicht zu beeinträchtigen, überprüfen ob die Variablen existieren und nicht (fiktiven) Wert diese haben.

Die Abfrage funktioniert, ist aber schlichtweg falsch.

100% Full ACK :) Daher hatte ich ja schon Eingangs auf z. B. isset() z. B. verwiesen. :)
 
Zurück
Oben