Formularauswertung

  • Hallo, irgendwie verstehe ich folgende Aufgabe nicht richtig



    Meine erste Frage wie wird dass gemeint, es soll der Wert von hidden-Feldes übertragen werden?
    In der URL?

    Zitat


    oder soll es im Formular ausgegeben werden, also angezeigt, blicke bei der Aufgabe nicht so ganz durch was eigentlich gemacht werden soll.


    Hier der Code dazu:


  • Zitat von "hume"


    Meine erste Frage wie wird dass gemeint, es soll der Wert von hidden-Feldes übertragen werden?
    In der URL?


    Mit hidden-Feldern kannst du Werte übergeben, die der Benutzer nicht auf dem Bildschirm sieht, also dort nicht ausgegeben werden.


    Es funktioniert wie mit allen anderen Formular-Felder, den Wert kannst du mit $_POST oder $_GET abfragen, kommt natürlich drauf an, was du festgelegt hast.
    Bei get wird der Wert, wie alle anderen auch, in der URL angezeigt.


    Wirklich unsichtbar sind hidden-Werte aber auch nicht. Erstens kann man sie bei get in der URL sehen und beliebig ändern und zweitens werden sie wie aller anderen Formular-Felder in dem Quelltext angezeigt.

  • Zitat

    Es funktioniert wie mit allen anderen Formular-Felder


    Hab ich nicht gewusst :wink:


    Bei mir geht es gerade nicht weiter und zwar:


    Zitat

    AUFGABE: Erstellen Sie ein Affenformular mit dem hidden-Feld mit Namen "aktion" und dem Wert "1"
    Affenformular erstellen
    hidden-Field mit dem Name "kontrolle" und dem Wert "1"
    Bauen Sie im ersten Bereich des IF-Bereichs folgende Zeilen an:
    if ( $_GET['kontrolle'] == 1 ) { echo "<p><b>Leere Felder zählen nicht, gehen Sie nicht über Los, ziehen Sie keine ...</b></p>"; }


    Hab ich so gut wie möglich gemacht, die Fehlermeldung erscheint, aber was wenn ich dass Feld ausgefüllt habe, dann bekomme ich wieder die gleiche Fehlermeldung, aber wie kann ich überprüfen dass das Feld ausgefüllt worden ist. Kann es isset sein?


    Code:

  • Komisch, also ich bekomme eine Fehlermeldung zu Zeile 9, wenn ich deinen Code ausführe.


    Kannst du erklären, was die Zeile bewirken soll, bzw. wie sie funktionieren soll?

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">else if (</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">] == [</span><span class="syntaxstring">'kontrolle'</span><span class="syntaxkeyword">]) </span><span class="syntaxdefault"></span>
  • Zitat

    Komisch, also ich bekomme eine Fehlermeldung zu Zeile 9, wenn ich deinen Code ausführe.


    Ja, ich weiß, leider komme ich hier nicht weiter hab keinen Plan was ich jetzt genau machen soll, ich möchte überprüfen ob dass Feld ausgefüllt worden ist oder nicht.

  • Zitat von &quot;hume&quot;


    Ja, ich weiß, leider komme ich hier nicht weiter hab keinen Plan was ich jetzt genau machen soll, ich möchte überprüfen ob dass Feld ausgefüllt worden ist oder nicht.


    Deswegen habe ich ja gefragt:

    Zitat von &quot;Sören&quot;


    Kannst du erklären, was die Zeile bewirken soll, bzw. wie sie funktionieren soll?

    PHP
    <span class="syntaxdefault">else if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[</span><span class="syntaxstring">'kontrolle'</span><span class="syntaxkeyword">])</span><span class="syntaxdefault"> </span>


    Überprüfen, ob ein Feld nicht ausgefüllt wurde, kannst du mit

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">if (</span><span class="syntaxdefault">$variable </span><span class="syntaxkeyword">= </span><span class="syntaxstring">""</span><span class="syntaxkeyword">) {...} </span><span class="syntaxdefault"></span>


    dafür gibt es aber auch eine Funtkion, die genau das gleiche bewirkt ist: empty

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">if (empty(</span><span class="syntaxdefault">$variable</span><span class="syntaxkeyword">)) {...} </span><span class="syntaxdefault"></span>


    Zum Überprüfen, ob ausgefüllt, gehen die entsprechenden Verneinungen:

    PHP
    <span class="syntaxdefault"><br /></span><span class="syntaxkeyword">if (</span><span class="syntaxdefault">$variable </span><span class="syntaxkeyword">!= </span><span class="syntaxstring">""</span><span class="syntaxkeyword">) {...}<br />if (!empty(</span><span class="syntaxdefault">$variable</span><span class="syntaxkeyword">)) {...}<br /> </span><span class="syntaxdefault"></span>
  • Zitat von &quot;Sören&quot;

    Überprüfen, ob ein Feld nicht ausgefüllt wurde, kannst du mit

    PHP
    <span class="syntaxdefault">if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$variable </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">""</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{...}</span><span class="syntaxdefault"> </span>


    Achtung, kleiner Fehler!
    Es muss
    if($variable == "") {}
    heißen!
    $variabel = "" wäre eine Zuweisung!

  • Zitat von &quot;Sarkkan&quot;


    Achtung, kleiner Fehler!
    Es muss if($variable == "") {} heißen!
    $variabel = "" wäre eine Zuweisung!


    Ups, sry.
    Jaja, dass ist ne gute Fehlerquelle.

  • Zitat

    Überprüfen, ob ein Feld nicht ausgefüllt wurde, kannst du mit


    Ja, dass hab ich verstanden :)


    Das was ich nicht verstehe ist:


    Code
    if ($variable != "") {...}


    Wäre es möglich dass du mir dass an meinem Beispiel erklärst, verstehe nicht ganz, dass es ungleich ist schon. Warum "" ? Wenn es sich um eine Zahl handelt braucht man dann auch ""?


    Bin so vorgegangen:


  • muss sich nicht die abfrage, ob die var vorname leer ist, in der abfrage sein wo nachgefragt wird ob das form gesendet wurde

    Code
    <span class="syntaxdefault"><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$kontrolle</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">1</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$vorname</span><span class="syntaxkeyword">==</span><span class="syntaxstring">""</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">        echo</span><span class="syntaxstring">"Leere Felder zählen nicht...."</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br />}<br /></span><span class="syntaxdefault">else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">"Der eingetragen Name lautet: "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$vorname</span><span class="syntaxkeyword">;<br />}<br />}</span><span class="syntaxdefault"> </span>
  • Entschuldige Peter, ich will dir nicht zu nahe treten, aber gerade am Anfang ist es schwierig die { den } zuzuweisen, deshalb poste ich noch einmal deinen Code so, wie man es gut erkennen kann (hau mich ruhig dafür : D)


    PHP
    <span class="syntaxdefault"><br />   if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">1 </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $kontrolle</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   if </span><span class="syntaxkeyword">(</span><span class="syntaxstring">""</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> $vorname</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   echo </span><span class="syntaxstring">"Leere Felder zählen nicht...."</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   else<br />   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   echo </span><span class="syntaxstring">"Der eingetragen Name lautet: "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$vorname</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">   </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">   </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault"> </span>


    Wenn du deinen und meinen Code vergleichst merkst du auch das deiner nicht ganz korrekt ist, du schließt die Abfrage $kontrolle==1 bevor du das else von $vorname=="" verwendest, Leute passt auf wie ihr das verschachtelt.


    Ich habe spaßenshalber auch mal die Klammern mit Strichen verbunden um klar zu machen wer zu wem gehört.


    Des weiteren ist es geschickt statt


    PHP
    <span class="syntaxdefault"><br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$vorname</span><span class="syntaxkeyword">==</span><span class="syntaxstring">""</span><span class="syntaxkeyword">) <br /> </span><span class="syntaxdefault"></span>


    folgendes zu schreiben


    PHP
    <span class="syntaxdefault"><br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxstring">"" </span><span class="syntaxkeyword">== </span><span class="syntaxdefault">$vorname</span><span class="syntaxkeyword">)<br /> </span><span class="syntaxdefault"></span>


    Aus folgendem Grund:


    Schreibt ihr aus Versehen nur ein =, so wird im 1. Fall der Variable $vorname der Wert "" (also gar nichts) zugewiesen, im zweiten Fall sähe das so aus:

    PHP
    <span class="syntaxdefault"><br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxstring">"" </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">$vorname</span><span class="syntaxkeyword">)<br /> </span><span class="syntaxdefault"></span>


    Und das ergiebt eine Fehlermeldung, will heißen ihr merkt es sofort.

  • Also, ich hab es jetzt hin bekommen was ich wollte, ich weiß aber nicht ob dass richtig ist deshalb poste ich den Code zur Sicherheit:


    PHP
    <span class="syntaxhtml"><span class="syntaxdefault"><?php<br /><br />if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">empty </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">])==</span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">)<br />{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">"Fehler ausf&uuml;llen"</span><span class="syntaxkeyword">;<br />}<br />else<br />{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">"eingetragener Vorname:"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $_GET </span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">];<br />}<br /><br /></span><span class="syntaxdefault">?><br /></span> <form action="test.php" method="get" ><br /><br /><p>Ihr Vorname:<br /><input type="text" name="vorname" /><br /></p><br /><input type="hidden" name="kontrolle"  value="1" /><br /><br /><p><br /><input type="submit" value="absenden" /><br /></p><br /><br /></form></span>


    Ist es auch ohne hiddenfeld möglich zu überprüfen ob es schon abgesendet worden ist?

  • Ja, es ist ohne hidden möglich^^
    Mit dem Submit-Button :D

    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">[...]<br /><</span><span class="syntaxdefault">input type</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"submit" </span><span class="syntaxdefault">name</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"submit" </span><span class="syntaxdefault">value</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"absenden" </span><span class="syntaxkeyword">/><br />[...]<br />if(empty(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'submit'</span><span class="syntaxkeyword">)]){<br />    echo </span><span class="syntaxstring">'Formular abgesendet'</span><span class="syntaxkeyword">;<br />} </span><span class="syntaxdefault"></span>
  • Zitat von &quot;Sarkkan&quot;
    PHP
    <span class="syntaxdefault"></span><span class="syntaxkeyword">[...]<br /><</span><span class="syntaxdefault">input type</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"submit"</span><span class="syntaxdefault"> name</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"submit"</span><span class="syntaxdefault"> value</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"absenden"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">/><br />[...]<br />if(empty(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'submit'</span><span class="syntaxkeyword">)]){<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">'Formular abgesendet'</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> </span>


    Was ist denn heute nur los mit euch allen? :D


    Nein das Formular ist in deinem Falle eben NICHT abgesendet. Du hast das ! vor dem empty vergessen.


    Dein )]) müsste auch ])) heißen.


    Des weiteren sollte in dem Falle nicht geprüft werden ob das Feld ausgefüllt ist, sondern so:


    PHP
    <span class="syntaxdefault"><br />  </span><span class="syntaxkeyword">if(</span><span class="syntaxstring">'absenden' </span><span class="syntaxkeyword">== </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'submit'</span><span class="syntaxkeyword">]) { echo </span><span class="syntaxstring">'Formular abgesendet!'</span><span class="syntaxkeyword">; }<br /> </span><span class="syntaxdefault"></span>


    Ansonsten können böswillige Daten eingeschleust werden.

  • Hallo, ich hab ein Problem dass ich aber nicht ganz verstehe und zwar folgende Aufgabe:

    Zitat

    AUFGABE: Erstellen Sie ein Affenformular mit dem hidden-Feld mit Namen "aktion" und dem Wert "1"
    Affenformular erstellen
    hidden-Field mit dem Name "kontrolle" und dem Wert "1"
    Bauen Sie im ersten Bereich des IF-Bereichs folgende Zeilen an:
    if ( $_GET['kontrolle'] == 1 ) { echo "<p><b>Leere Felder zählen nicht, gehen Sie nicht über Los, ziehen Sie keine ...</b></p>"; }


    Ich hab es ähnlich so gemacht, bekomme aber wenn ich jetzt den Vornamen eintrage, trotzdem eine Fehlermeldung nun stell ich mir selbst eigentlich die Frage was da falsch daran ist. Muss man eigentlich mit empty arbeiten oder nicht?


    Hier mein Code dazu:


    PHP
    <span class="syntaxhtml"><span class="syntaxdefault"><?php<br /></span><span class="syntaxkeyword">echo </span><span class="syntaxstring">"eingetragener Vorname: "</span><span class="syntaxkeyword">. </span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">];<br /><br />if (</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'kontrolle'</span><span class="syntaxkeyword">] == </span><span class="syntaxdefault">1</span><span class="syntaxkeyword">)<br />{<br />    echo </span><span class="syntaxstring">"<p> <b>Leere Felder z&auml;hlen nicht gehen Sie nicht &uuml;ber Los, ziehen Sie keine...</b> </p>"</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxdefault">?><br /></span><br /><form action="test.php" method="get" ><br /><br /><p>Ihr Vorname:<br /><input type="text" name="vorname" /><br /></p><br /><input type="hidden" name="kontrolle" value="1" /><br /><p><br /><input type="submit" value="absenden" /><br /></p><br /><br /></form></span>
  • Zitat

    Poste uns doch mal bitte die fehlermeldung ..


    Ich hoffe dass ich mich schon richtig ausgedrückt habe, also wenn ich den Vorname eintrage, dann wird mir trotzdem eine Fehlermeldung angezeigt, Leere Felder zählen nicht gehen Sie nicht über Los, ziehen Sie keine... es sollte jedoch nur die Fehlermeldung angezeigt werden wenn dass Feld Vorname nicht ausgefüllt worden sein sollte, was aber ausgefüllt worden ist auch im Screenshot ersichtlich.

  • :D ok also deine fehlermeldung ...


    ganz simpel...

    PHP
    <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br />echo </span><span class="syntaxstring">"eingetragener Vorname: "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(empty(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">))<br />{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">"<p> <b>Leere Felder z&auml;hlen nicht gehen Sie nicht &uuml;ber Los, ziehen Sie keine...</b> </p>"</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxdefault">?><br /></span><br /></span>


    Sollte jetzt funktionieren.

  • Die Aufgaben aus dem Tutorial basieren immer auf dem Code von vorher und dann funktioniert das, was verlangt wird auch so, wie du es dir vorstellst.


    Jetzt mal die Aufgabe mit Verbindung zum vorherigen Code:



    So wird auch nur überprüft, ob das Forumular abgesendet wurde, wenn der Vorname leer ist.

  • Zitat

    Sollte jetzt funktionieren.


    Ja, es funktioniert ist es normal dass die Fehlermeldung jedoch auch kommt wenn ich dass Formular aufrufe und wenn ich etwas eintrage ist natürlich die Fehlermeldung weg. Bin mir nicht sicher, aber kann dass daran liegen dass ich durch dass hidden Feld noch nicht überprüft habe dass das Formular noch nicht abgesendet worden ist?
    Wollte es so einfach mal versuchen, bekomme aber eine Fehlermeldung bezüglich () oder ist meine Vorgehensweise nicht richtig?

    PHP
    <span class="syntaxhtml"><span class="syntaxdefault"><?php<br />echo </span><span class="syntaxstring">"eingetragener Vorname: "</span><span class="syntaxkeyword">.</span><span class="syntaxdefault"> $_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">];<br /><br /></span><span class="syntaxdefault">if </span><span class="syntaxkeyword">(empty(</span><span class="syntaxdefault">$_GET</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'vorname'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> 1 </span><span class="syntaxkeyword">))<br />{<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">"<p> <b>Leere Felder z&auml;hlen nicht gehen Sie nicht &uuml;ber Los, ziehen Sie keine...</b> </p>"</span><span class="syntaxkeyword">;<br />}<br /></span><span class="syntaxdefault">?><br /></span><br /><form action="test.php" method="get" ><br /><br /><p>Ihr Vorname:<br /><input type="text" name="vorname" /><br /></p><br /><input type="hidden" name="kontrolle" value="1" /><br /><p><br /><input type="submit" value="absenden" /><br /></p><br /><br /></form></span>

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!