elos: Formulareinträge überprüfen

Hallo Leute,

ich schaff es nicht zu überprüfen, ob alle Formularfelder einen Eintrag besitzten, da ich ein Formular besitzte bei dem der Benutzter die Anzahl der Personen, die er eintragen möchte dynamisch bestimmen kann.
Er hat die Möglichkeit mit einen ADD-Button immer wieder das Formular zu erweitern um eine weitere Person einzutragen.
Nun weiss ich nicht so recht wie ich die schleife überprüfen soll.
Das ist der Code:

for($i=1; $i<count($HTTP_POST_VARS); $i++)
{
if ($HTTP_POST_VARS['surname'.$i]=="")
{
break;
}
$querypp="INSERT INTO person VALUES ('";
$querypp.="0','"; //auto inkrement // PERSON_ID
$querypp.=$HTTP_POST_VARS['surname'.$i];
$querypp.="','";
$querypp.=$HTTP_POST_VARS['name'.$i];
$querypp.="','";
$querypp.=$HTTP_POST_VARS['email'.$i];
$querypp.="','";
$querypp.=$HTTP_POST_VARS['institution'.$i];
$querypp.="','";
$querypp.="0','";
$querypp.="0','";
$querypp.="0";
$querypp.="')";
$querypp.=";";

Kann mir villeicht jemand weiter helfen.
Gruss elosh

  1. Hi,

    da ich ein Formular besitzte bei dem der Benutzter die Anzahl der Personen, die er eintragen möchte dynamisch bestimmen kann.

    diese Anzahl wird Dir doch sicher übermittelt, oder?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. die Eintrage unterscheiden sich nur durch ein Index.
      Also erster Eintrag = surname1
      zweiter = surname2
      usw.

      Ich muss wahrscheinlich den letzten suchen und dann alle mit dem kleienren Index überprüfen.

      Weiss aber nicht wie.

      1. Hallo,

        Also erster Eintrag = surname1
        zweiter = surname2

        Da waere IMHO ein Array sinnvoller:
        surname[1], surname[2] u.s.w.

        Gruesse,

        Thomas

        1. Hi,

          Da waere IMHO ein Array sinnvoller:
          surname[1], surname[2] u.s.w.

          Und dann müsste doch auch gehen:

          if (in_array("", $_POST["surname"],true))
          {
            ## es wurde ein Feld nicht ausgefüllt
          }

          Ich habs aber noch nicht ausprobiert, werde ich aber gleich tun.

          Tom

          1. Habs ausprobiert:

            <?php   ####Fehlstelle.php###

            $DATA = array();

            $DATA["vorname"][]="Thomas";
            $DATA["vorname"][]="Willi";
            $DATA["vorname"][]="Andreas";
            $DATA["vorname"][]="Fritz";
            $DATA["vorname"][]="Maike";

            if (in_array("", $DATA["vorname"],true))
            {
              echo "es wurde ein Feld nicht ausgefüllt.<br />";
            }
            else
            {
              echo "alles OK.<br />";
            }

            ?>

            Das $DATA steht hier für $_POST.

            Viel Erfolg

            Tom

            1. echt lieb von dir Tom,

              hab es auch schon geschafft, aber etwas anders als du.
              kannst du mir vielleicht bei einer anderen Sache weiterhelfen.
              Also, wie ich schon erwähnt habe erweitere ich mein Formular mit einem ADD-Button, jetzt möcht ich aber, dass es möglich ist, den zuletzt hinzugefügten Teil mit einem remove-Button zu entfernen.
              Ich schaff es immer nur alle hinzugefügten zu entfernen.

              <script language="JavaScript">
              curAuthor = 2;
              function addAuthor(IndNr) {
               FormTags =  "<table><tr><td><b>Author #" + IndNr + "</b></td></tr><tr><td>Surname:<br>" +
                      "<input type=text name=surname" + IndNr + " size=30></td>" +
                     "<td>Name:<br><input type=text name=name" + IndNr + " size=30></td></tr>" +
                     "</table></td></tr><tr><td><table><tr><td>Institution:<br>" +
                     "<input type=text name=institution" + IndNr + " size=30></td>" +
                     "<td>EMail:<br><input type=text name=email" + IndNr + "  size=30></td></tr></table><br>" +
                   "<table><tr><td>Is that author member of the programming Commitee?<br></td></tr>" +
              "<td><input type=radio name=pcMember" + IndNr + " value=yes>yes<br>" +
              "<input type=radio name=pcMember" + IndNr + " value=no>no<br></td></tr></table></table><br>";

              DivInhalt = document.getElementById("HierWirdAngefuegt").innerHTML;
               document.getElementById("HierWirdAngefuegt").innerHTML = DivInhalt + FormTags;
               curAuthor++;
              }
              function removeAuthor(IndNr) {

              DivInhalt = document.getElementById("HierWirdAngefuegt").innerHTML;
               document.getElementById("HierWirdAngefuegt").innerHTML = -DivInhalt - FormTags;

              }

              In den letzten 3 Zeilen entferne ich alle hinzugefügten.
              Standardmässig hat der Benutzer die Möglichkeit einen Autor hinzuzufügen. Beim entfernen bleibt genau dieser übrig.

              Weisst du da weiter?

              1. Hallo,

                bei JavaScript muss ich leider passen. Das reicht bei mir gerade für eigene Zwecke. Ich will ja nicht, dass das ganze Forum an 'nem Lachkrampf stirbt.

                Nochmal zu "habe ich anders gelöst"

                Man sollte in PHP möglicht viele eigenbauten Funktionen benutzen. Daher hatte ich das mit in_array() ausprobiert. Wenn man die gleiche Funktionalität aus mehreren einzelnen Funktionen / Statements selber zusammenbaut, kostet das immer performance.

                Sollte jetzt keinesfalls Schelte sein, sondern nur ein zusätzlicher Tipp :-)

                Grüße

                Tom

  2. Hallo!
    Also, alle Elemente eines abgeschickten Formulars findens sich im Array $_POST bzw. $HTTP_POST_VARS (wenn Du Post verwendest, bei Get überall statt POST GET)

    alle Felder überprüfst Du zB folgendermassen:

    $error = "";
    $keys = array_keys($_POST);
    foreach ($keys as $key)
      {
       if ($_POST[$key] == "") $error = "leer";
      }

    if ($error == "leer")
      echo "Ein Feld ist nicht ausgefüllt.";

    1. ich werds probieren!
      Danke!

    2. Es hat geklappt,DANKESCHÖÖÖÖN.
      Aber jetzt gibts natürlich andere Probleme.

      Gruss,
      elosh