Ulvi: Eingaben überprüfen...

Holla Leutz,

was für ein Scheiß Wetter, hm?! Naja...

Also ich hab da ein Problem: Ich mache gerade ein Quiz auf PHP Basis (nein, das ist noch nicht das Problem *g*). Wenn der User alles ausfüllt, soll er dann auf eine Seite, wo dann die Auswertung statt findet. Ich möchte aber, das die Seite vor der auswertung erst überprüft ob zur jeden Frage eine Antwort gegeben wurde. Falls auch nur eine Frage ´nicht beantwortet wird, soll eine Fehler Meldung erscheinen. Wie krieg ich das hin?! Ich habe das hier versucht (kam mir vom Aufbau irgendwie merkwürdig vor... ist es wohl auch):

<?php
  if ($1 or $2 or $3 or $4 or $5 or $6 or $7 or $8 or $9 or $10 or $11 or $12 or $13 or $14 or $15 == ""):
  echo "Du hast mindestens 1 Feld nicht beantwortet. Bitte benutze den Zurück Button, um diesen Fehler zu beheben!";
?>

Naja, villeicht kann mir jemand helfen! Wenn ihr das tut, hört aus auch auf zu Regnen!  O_O''

Gruß,

Ulvi

  1. Holla Leutz,

    Hi !

    was für ein Scheiß Wetter, hm?! Naja...

    das kannst du laut sagen. aber vielleicht hilft dir meine antwort ja, dann soll es ja aufhören, hab ich gelesen ;-)

    [viel zeug]versucht (kam mir vom Aufbau irgendwie merkwürdig vor... ist es wohl auch):

    <?php
      if ($1 or $2 or $3 or $4 or $5 or $6 or $7 or $8 or $9 or $10 or $11 or $12 or $13 or $14 or $15 == ""):
      echo "Du hast mindestens 1 Feld nicht beantwortet. Bitte benutze den Zurück Button, um diesen Fehler zu beheben!";
    ?>

    von php hab ich keine Ahnung, aber wieso nimmst du nicht vorneweg einen javascript für die plausi?

    gruss
    axel

  2. Holla Leutz,

    was für ein Scheiß Wetter, hm?! Naja...

    Also wenn ich aus dem Fenster schaue, strahlendster Sonnenschein!!

    <?php
      if ($1 or $2 or $3 or $4 or $5 or $6 or $7 or $8 or $9 or $10 or $11 or $12 or $13 or $14 or $15 == ""):
      echo "Du hast mindestens 1 Feld nicht beantwortet. Bitte benutze den Zurück Button, um diesen Fehler zu beheben!";
    ?>

    Du machst es dir hier doch sehr einfach. Versuche folgende Vorgehensweise: Benenne die Eingabefelder mit einem fortlaufenden Nummernsuffix und mache die Abfragen in einer Schleife:

    for ($i=1,$i<$imax;$i++)
    {
        if ($eingabefeld$i == "") Fehlerflag setzen und break;
    }

    Naja, villeicht kann mir jemand helfen! Wenn ihr das tut, hört aus auch auf zu Regnen!  O_O''

    Das wird es ganz bestimmt nicht!

    tschüss aus dem sonnigen Süden

    Michael

  3. Hi,
    ich habe eine gute Lösung für dich, du musst als erstes eine
    HTML-Seite erzeugen mit folgenden Formelementen...
    Hier ein Beispiel:

    <html>
    <body>
    <form action="checkIt.php" method="post">
    1. Frage: <input type="text" name="frage[]"><br>
    2. Frage: <input type="text" name="frage[]"><br>
    </form>
    </body>
    </html>

    Wird das Formular abgeschickt erhälst ein array in php, du kannst nun wie folgt vorgehen:

    <?
    function checkArray($arr=''){
      if(!is_array($arr)) return 0;

    foreach($arr AS $value)
        if($value=="") return 0;

    return 1;
    }

    if(checkArray($frage))
      echo "Danke, du hast alles ausgefüllt";
    else
      echo "Bitte beantworten Sie alle Fragen";
    ?>

    1. Jo, schei´Weter :-(

      <?
      function checkArray($arr=''){
        if(!is_array($arr)) return 0;

      foreach($arr AS $value)

      trim($value);

      if($value=="") return 0;

      return 1;
      }

      if(checkArray($frage))
        echo "Danke, du hast alles ausgefüllt";
      else
        echo "Bitte beantworten Sie alle Fragen";
      ?>

      Ich würde das dazwischensetzen, damit Leerstellen am Anfang und am Ende weggeschnitten werden und der, der das Quiz macht keine Leerzeichen abschicken kann ;)

      MFG, Bevan

    2. Hi,
      ich habe eine gute Lösung für dich, du musst als erstes eine
      HTML-Seite erzeugen mit folgenden Formelementen...
      Hier ein Beispiel:

      <html>
      <body>
      <form action="checkIt.php" method="post">

      1. Frage: <input type="text" name="frage[]"><br>
      2. Frage: <input type="text" name="frage[]"><br>
        </form>
        </body>
        </html>

      Wird das Formular abgeschickt erhälst ein array in php, du kannst nun wie folgt vorgehen:

      <?
      function checkArray($arr=''){
        if(!is_array($arr)) return 0;

      foreach($arr AS $value)
          if($value=="") return 0;

      return 1;
      }

      if(checkArray($frage))
        echo "Danke, du hast alles ausgefüllt";
      else
        echo "Bitte beantworten Sie alle Fragen";
      ?>

      Ich hab Radio Buttons zum anklicken dahin gepackt. Kann ich die Felder dann auch einfach als Frage[] bennenen?!

      1. Hallo,

        Variablen existieren in PHP nur, wenn Sie einen Wert bekommen,d.h. wenn ein Radiobutton leer ist, wenn er abgeschickt wird, existiert seine Variable im Script dann nicht.

        MfG Christian

        <html>
         <body>
          <form action="checkIt.php" method="post">
           1. Frage: <input type="text" name="frage[1]"><br>
           2. Frage: <input type="text" name="frage[2]"><br>
           3. Frage: <input type="radio" name="frage[3]"><br>
           3. Frage: <input type="radio" name="frage[3]"><br>
           3. Frage: <input type="radio" name="frage[3]"><br>
          </form>
         </body>
        </html>

        [checkIt.php]
        <?php
         if(count($frage)==3) {
         ...
         }
        ?>

    3. Hi,
      ich habe eine gute Lösung für dich, du musst als erstes eine
      HTML-Seite erzeugen mit folgenden Formelementen...
      Hier ein Beispiel:

      <html>
      <body>
      <form action="checkIt.php" method="post">

      1. Frage: <input type="text" name="frage[]"><br>
      2. Frage: <input type="text" name="frage[]"><br>
        </form>
        </body>
        </html>

      Wird das Formular abgeschickt erhälst ein array in php, du kannst nun wie folgt vorgehen:

      <?
      function checkArray($arr=''){
        if(!is_array($arr)) return 0;

      foreach($arr AS $value)
          if($value=="") return 0;

      return 1;
      }

      if(checkArray($frage))
        echo "Danke, du hast alles ausgefüllt";
      else
        echo "Bitte beantworten Sie alle Fragen";
      ?>

      Danke nochmals. Hab den code ausprobiert und es klappt.... fast!

      Naja, es soll eine Fehler Meldung kommen wenn auch nur 1 Feld fehlen sollte! Das dumme daran ist jetzt: Wenn mid. 1 antwort gegeben wurde, erscheint die Fehler Meldung nicht mehr. Sie erscheint nur wenn gar bei keiner Frage ne Antwort gegeben wurde.

      1. Hallo

        Danke nochmals. Hab den code ausprobiert und es klappt.... fast!

        Naja, es soll eine Fehler Meldung kommen wenn auch nur 1 Feld fehlen sollte! Das dumme daran ist jetzt: Wenn mid. 1 antwort gegeben wurde, erscheint die Fehler Meldung nicht mehr. Sie erscheint nur wenn gar bei keiner Frage ne Antwort gegeben wurde.

        Wo ist das Problem? Per Radiobutton kann es, pro Gruppe, immer nur eine Antwort geben.

        Du solltest die Abfrage dann auf die verschiedenen Fragen aufteilen.
        Damit kannst du auch gezielt "antworten":
        'Sie haben Frage 4 nicht beantwortet. Ab zurück!'.
        Natürlich nicht in dem Ton ;-)

        Tschüß, Auge

  4. Huhu Ulvi

    <?php
      if ($1 or $2 or $3 or $4 or $5 or $6 or $7 or $8 or $9 or $10 or $11 or $12 or $13 or $14 or $15 == ""):
      echo "Du hast mindestens 1 Feld nicht beantwortet. Bitte benutze den Zurück Button, um diesen Fehler zu beheben!";
    ?>

    zunächst einmal sind $1, $2 etc. keine gültigen Variablen-Namen.

    http://www.php.net/manual/en/language.variables.php

    ausserdem wäre Dein logischer Ausdruck immer wahr wenn nur eine Variable einen Wert != '' hätte.

    richtiger wäre es z.B. so :

    if(!$q1 OR !$q2 ... OR !$15)

    ist aber evtl. etwas unelegant

    ansonsten würde sich für dein Problem der Einsatz eines Arrays anbieten.

    z.B. in etwa so

    <?php

    $test=array('a','b','c','','e');

    if(in_array('',$test)) {
     echo "Da fehlt noch was";
    }else{
     echo "OK";
    }
    ?>

    Viele Grüße

    lulu

    1. Hi lulu,

      richtiger wäre es z.B. so :
      if(!$q1 OR !$q2 ... OR !$15)
      ist aber evtl. etwas unelegant

      das wäre logisch zumindest äquivalent zu

      if (! ($q1 AND $q2 ... and $q15))

      ... wäre das eleganter?

      Natürlich ist es häßlich, die 15 fest einzucodieren - ein Array mit
      implizit abfragbarer Länge hat an dieser Stelle durchaus Vorteile.

      Viele Grüße
            Michael