Formulareingabe prüfen funktioniert nicht



  • Hallo,

    ich habe eine index.php, in der per include das unten stehende Skript eingebunden wird. Es soll einfach prüfen, ob eine Eingabe gemacht wurde und dann etwas ausgeben, aber es funktioniert einfach nicht:

    <?php
    
    if ($Zaehler == 1) {
    	Prüfen();	
    }
    else {
     	Ausgabe();	
    }
    
    function Ausgabe()
    {
      	echo "<form method=\"POST\" name=\"test\" action=\"$_SERVER[PHP_SELF]?Zaehler=1\">
        	  <input type=text name=\"textfeld\">
    		  <input type=submit>
    	 	  </form>";
    };
    
    function Prüfen()
    {
      	if ($_POST[textfeld] == "1") {
      		echo "Bitte etwas eingeben";	
      	}
      	else {
      		echo "$_POST[textfeld]";
      	}
    };
    ?>
    


  • Was funktioniert nicht?
    Wie sollte es funktionieren?
    Welche Bedeutung haben die verwandten Variablen?
    Welchen Inhalt haben sie, bzw. sollten sie haben?
    Wie sieht das Formular aus?



  • Erstmal solltest Du sicherheitshalber keine deutschen Umlaute für Variablen
    und Methoden/Funktionen verwenden (Prüfen).

    Dann verwendest Du scheinbar die Arrays nicht korrekt:

    if ($_POST[textfeld] == "1") {
        echo "Bitte etwas eingeben";    
    }
    else {
        echo "$_POST[textfeld]";
    }
    

    sollte so wohl eher aussehen:

    if ($_POST['textfeld'] == "1") {
        echo "Bitte etwas eingeben";    
    }
    else {
        echo "$_POST['textfeld']";
    }
    

    genauso bei $_SERVER['PHP_SELF']



  • Also, ich wollte den Beitrag eigentlich editieren, geht aber nicht, da ich kein registrierter User bin.

    Das Formular dient nur zu Testzwecken und besteht nur aus einem Textfeld und einem Submit Button. Zaehler prüft, ob es die erste Ausführung ist und sollte beim klicken des Submit Buttons auf 1 gesetzt werden, so dass er beim erneuten Laden des Formulars nur noch Prüfen() (also die ob etwas eingegeben wurde) abfragt.

    Er ruft Prüfen aber nie auf und Zaehler bekommt auch keinen Wert zugewiesen über die URL.



  • @Airdamn:

    Wenn ich bei den Arrays die ' mit hin mache, bekomm ich einen Fehler.

    Ok, vergesst das Script einfach mal. Kann mir Jemand denn mal ein Beispiel zeigen, wie ich Eingabe in Formularen prüfen kann? Die über Google gefundenen Beispiele stammen fast nur von älteren PHP Versionen und funktionieren nicht richtig.



  • Also,

    jetzt hab ich doch noch mal an dem Skript gebastelt. Wenn man jetzt nichts eingibt, bekommt man "Bitte etwas eingeben" und wenn man etwas eingibt bekommt man seine Eingabe angezeigt. Allerdings zeigt er auch beim 1. Starten des Skripts "Bitte etwas eingeben". Aus diesm Grund habe ich eben die Variable Zaehler eingeführt. Aber wenn ich im Formular mit $_GET arbeite, übergibt er nur das Textfeld in der URL und wenn ich mit $_POST arbeite, übergibt er korrekt Zaehler=1 in der URL, aber beim Abrufen mit $_POST['Zaehler'] erhalte ich nichts:

    <?php
    
    if ($_POST['Zaehler'] == 1) {
    	Pruefen();	
    }
    else {
     	Ausgabe();	
    }
    
    function Ausgabe()
    {
      	echo "<form method=\"POST\" name=\"test\" action=\"$_SERVER[PHP_SELF]?Zaehler=1\">
        	  <input type=text name=\"textfeld\">
    		  <input type=submit>
    	 	  </form>";
    
    	Pruefen();
    };
    
    function Pruefen()
    {
      	if ($_POST['textfeld'] == "") {
      		echo "Bitte etwas eingeben";	
      	}
      	else {
      		echo "Sie haben \"", "$_POST[textfeld]", "\" eingegeben.";
      	}
    };
    ?>
    


  • Bitte denkt nicht ich sei irre, aber ich bin gerade selber beim Lesen meines Posts auf die Lösung gekommen.

    $_POST erhält natürlich durch URL Anhänge keine Variablen. Und mit $_GET hab ich auch was falsch gemacht.

    Wenn ich einfach ein <input type=hidden value=1> setze, dann übergibt er es an $_POST und ich kann das dann wieder auslesen.

    😃 :schland:



  • Wie wäre es einfach mit if(isset($_POST['textfeld'])) ?


Anmelden zum Antworten