Frank: was ist daran falsch ? bitte hilfe !!

Moin Moin jungs und mädels,

was ist an dem quelli falsch ?

<?
$nr = "1";
if(isset($_POST['senden']))
{
   for($i = 1; $i <= 5; $i++)
   {
       if($_POST['mail$i'] == "")
       {
           $check[] = "0";
       }
       else
       {
           $check[] = "1";
       }
   }
   foreach($check as $mach)
   {
       echo $mach;
   }
   if(in_Array($nr, $check))
   {
       echo "geht";
   }
   else
   {
       echo "geht nicht";
   }
}
?>

Hab ein Formular mit 5 email felder, und ich will alle mit einer for schleife prüfen, ob da was drin steht. wenn nix ist, dann soll er 0 in check machen und sonst 1 !
aber egal ob ich was in die input felder im formular eingebe, immer bleibt alles auf 0 !
Wo ist mein Fehler !
Wäre super wenn ihr es herausfinden würdet. Hab mir schon ne halbe std den kopf zerbrochen.

mfg
Frank

  1. <?
    $nr = "1";
    if(isset($_POST['senden']))
    {
       for($i = 1; $i <= 5; $i++)
       {

    if($_POST['mail$i'] == "")

    zu:    if($_POST['mail'.$i] == "")
    oder:  if($_POST["mail$i"] == "")

    denn:  in '' Anführungszeichen werden keine Variabeln gefüllt. Darüberhinaus wird das eigentlich anders gemacht, aber versuchs erstmal so...

    {
               $check[] = "0";
           }
           else
           {
               $check[] = "1";
           }
       }
       foreach($check as $mach)
       {
           echo $mach;
       }
       if(in_Array($nr, $check))
       {
           echo "geht";
       }
       else
       {
           echo "geht nicht";
       }
    }
    ?>

    Gruss Stefan

    1. denn:  in '' Anführungszeichen werden keine Variabeln gefüllt. Darüberhinaus wird das eigentlich anders gemacht

      ui vielen dank stefan, für die prompte hilfe.
      hat sogar geklappt!

      könntest du mir vielleicht sagen, wie man das eigentlich anders macht ?
      wäre cool, dann könnt ich bestimmt noch was lernen :-)

      mfg
      Frank

      1. Hello,

        [...]
        na, ich würde die Namen <input ..> für die Mailadressen im Formular schon geschickt wählen:

        <input type="text" name="data[email][]" ...>
          <input type="text" name="data[email][]" ...>
          <input type="text" name="data[email][]" ...>

        So kommen die eMail-Adressen im Array

        $_POST["data"]["email"][0]
        $_POST["data"]["email"][1]
        $_POST["data"]["email"][2]

        in PHP an und man kann einfach prüfen:

        $checkmail = array();

        if(isset($_POST["data"]["email"][0])
        foreach($_POST["data"]["email"] as $key => $mail)
        {
          $checkmail[$key]["check"] = (strlen(trim($mail))>6);
          $checkmail[$key]["addr"]  = $mail;
        }

        echo "<pre>";
        print_r($checkmail);
        echo "</pre>";

        So zum Beispiel...

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Zwei Dumme ein Gedanke! *g*
          Tom, schau mal bitte bei meinem Eintrag hier unter diesem, danke. :o)

          Gruss Stefan

          1. erstmal vielen dank an euch beide.

            Aber ich muss sagen, das von stefan, versteh ich viel besser und schneller.
            bei dem von Tom, ist es schwer , dem quelltext richtig zu folgen.
            ist halt meine meinung.

            aber trotzdem big thx.

            mfg
            Frank

            1. Frank, das hört man gerne *g* ;o)
              Aber letztlich sind es zwei Lösungen für ein Problem.
              Tom hat sich mehr auf deinen Stil gestützt und ich hab dir meinen aufgedrückt *g* Für den Anfang ist meines sicherlich einfacher, aber irgendwann wirst Du vielleicht das von Tom besser finden :o)

              Schöne Weihnachten auf jeden Fall euch beide.

              Gruss Stefan

              1. »»Für den Anfang ist meines sicherlich einfacher, aber irgendwann wirst Du vielleicht das von Tom besser finden :o)
                jo, das geb ich dir recht, bin ja auch noch am PHP lernen.
                und hab heut gesehen, das man nie auslernen kann.

                Schöne Weihnachten auf jeden Fall euch beide.

                danke, wünsch ich euch natürlich auch :o

                mfg
                Frank

          2. Hello Stefan,

            Zwei Dumme ein Gedanke! *g*
            Tom, schau mal bitte bei meinem Eintrag hier unter diesem, danke. :o)

            ja, das ist auch eine gute Idee, vor allem, wenn man gleich die Syntax der eMail-Adresse unter die Lupe nimmt.

            Nun dürfte Frank erstmal genug Anregungen haben...

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      2. HTML Formular:

        <form action="script.php" method="post">
          Email1: <input type="text" name="email[]" value="" size="30" /><br />
          Email2: <input type="text" name="email[]" value="" size="30" /><br />
          Email3: <input type="text" name="email[]" value="" size="30" /><br />
          Email4: <input type="text" name="email[]" value="" size="30" /><br />
          Email5: <input type="text" name="email[]" value="" size="30" /><br />
          <input type="submit" value="Abschicken" />
        </form>

        PHP-Script:
        $email = $_POST['email'];
        foreach($email as $cur_email) {
          // Hier kannst Du die einzelnen Emailadresse ueberpruefen
          // zum Beispiel mit preg_match().
          $email_correct = preg_match("/[a-z0-9-_.]*@[a-z0-9-_.]*?.[a-z]{2,5}/i", $cur_email);

        // Fall die Ueberpruefung korrekt war, Email speichern:
          if($email_correct) {
            $user_email_addresses[] = $cur_email;
          }
        }

        Kann sein, dass dieses Preg-Match auf der schnelle getippt einen Fehler hat, dafür kann ich net garantieren, ich habs nur so niedergetippt *g* Schau halt mal in der Doku, wenn´s nicht läuft.

        Es soll ja nur um die Logik gehen, und ich hoffe diese hast du verstanden. Du kannst über Formulare eben auch Arrays senden. Und das vereinfacht die Verarbeitung gewaltig.

        Gruss Stefan

        1. Hello,

          ## und hier gibts vielleicht gleich eine Notice, wenn der User gebastelt
            ## hat, oder das Script von sonstwo requested wird.
            ## if(isset()) lass ich aber auch immer weg *gg*
            $email = $_POST['email'];

          ## auf Array sollte man vor foreach() immer prüfen!
            if(is_array($email))

          foreach($email as $cur_email) {
            // Hier kannst Du die einzelnen Emailadresse ueberpruefen
            // zum Beispiel mit preg_match().
            $email_correct = preg_match("/[a-z0-9-_.]*@[a-z0-9-_.]*?.[a-z]{2,5}/i", $cur_email);

          // Fall die Ueberpruefung korrekt war, Email speichern:
            if($email_correct) {
              $user_email_addresses[] = $cur_email;
            }
          }

          Vor der foreach()-Schleife immer fragen, ob das Argument ein Array ist. Bei meiner Version habe ich das "durch die Hintertür" gemacht

          wenn nämlich  if (isset($_POST["data"]["mail"][0]))
          dann muss     $_POST["data"]["mail"]  ein Array sein.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. _das_ ist an deinem posting vor allem falsch.

    gruss,
    wahsaga

    1. _das_ ist an deinem posting vor allem falsch.

      weist du was, geh mir nicht auf die nerven.
      ich wusste das da ein kleiner fehler war, also kann ich als titel auch den oben genannten wählen.
      wenn es dich stört, dann schau einfach nicht in den thread vorbei.
      es gibt halt andere leute , die nicht solche spießer sind, wie du.
      beim nächsten mal überspring es einfach, verstanden.
      hab kein bock, mich jedesmal wenn ich hier was poste, von dir anmachen zu lassen, nur weil dir irgendwas nicht gefällt.
      also

      mfg

      1. hi,

        weist du was, geh mir nicht auf die nerven.
        ich wusste das da ein kleiner fehler war, also kann ich als titel auch den oben genannten wählen.

        lies bitte mal </faq/#Q-06a>

        wenn es dich stört, dann schau einfach nicht in den thread vorbei.
        es gibt halt andere leute , die nicht solche spießer sind, wie du.
        beim nächsten mal überspring es einfach, verstanden.
        hab kein bock, mich jedesmal wenn ich hier was poste, von dir anmachen zu lassen, nur weil dir irgendwas nicht gefällt.

        • </faq/>
        • *plonk*

        gruss,
        wahsaga