Einfache Formular abfrage zu kompliziert?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einfache Formular abfrage zu kompliziert?

    Das muss ich mich unterdessen echt fragen, hab mich ans erste Script gemacht und komme einfach nach Stunden nicht weiter. Hab einige Zeit den #php.de Channel geidelt, doch entweder konnte oder wollte mir keiner helfen und sogar die Admins waren arrogant, selten erlebt sowas.

    Nunja, hier ist mein Problem: http://nopaste.php-q.net/95214

    Aus irgend einem Grund kommen mit oder one Übergabe immer undefined index Meldungen und wenn das ganze Script abgearbeitet wird werden alle $_Checkvar[] als sendfalse ausgegeben, obschon die Werte aus dem Formular (bis auf die OR abfrage beim GebJahr) richtig übergeben werden.

    Da ich das Einrücken und {} noch nicht im Griff habe, bitte keine Kommentare dazu, das war nämlich das einzigste was ich von den #PHP.de Leuten zu hören gekriegt hab...

    Ansonsten bin ich über jeden konstruktiven Beitrag dankbar.

    Gruss

    Seek

  • #2
    achja, die
    PHP-Code:
        echo "<pre>\n";
        
    print_r($_Checkvar);
        echo 
    "</pre>\n"
    sind natürlich nur zu Testzwecken drin.

    Wenn ich z.B. nach
    PHP-Code:
    if ($_POST['Land']== "")  {
    $_Checkvar['Land']="sendfalse";
    echo 
    "<pre>\n";
        
    print_r($_Checkvar);
        echo 
    "</pre>\n";
    } else {
    $_Checkvar['Land']="sendtrue";
    echo 
    "<pre>\n";
        
    print_r($_Checkvar);
        echo 
    "</pre>\n";

    PHP-Code:
    die(); 
    einfüge, dann sehe ich, dass bis dort hin bis auf GebJahr überall sendtrue übrgeben wird/ in die Variable gespeichert wird.
    Zuletzt geändert von Seek; 05.11.2004, 15:49.

    Kommentar


    • #3
      liegt wohl am namen des mail-feldes (e-mail), benenn das mal in email oder mail um

      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Habs geändert, ändert daran leider auch nichts (sollte ja nichts machen in einem String).

        Kommentar


        • #5
          Hmm, irgendwas spinnt mit der if/else Abfrage am Schluss. Wenn ich nämlich am Schluss
          PHP-Code:
          } else {} 
          durch
          PHP-Code:
          } die(); 
          ersetze und somit das Script dort beendet wird kriege ich die korrekten Ausgaben (nach senden des ausgefüllten Formulars (http://www.euo-clan.com/euo/load.php?f=join)), sprich :
          Array
          (
          [Nickname] => sendtrue
          )

          Array
          (
          [Nickname] => sendtrue
          [GebJahr] => sendtrue
          )

          Array
          (
          [Nickname] => sendtrue
          [GebJahr] => sendtrue
          [Land] => sendtrue
          )

          Array
          (
          [Nickname] => sendtrue
          [GebJahr] => sendtrue
          [Land] => sendtrue
          [EMail] => sendtrue
          )
          Das Script hat vor der if/else Abfrage nämlich zuvor funktioniert, ausser eben das immer der if teil im join.php Script ausgeführt wurde, auch wenn nichts übergeben wurde.
          Zuletzt geändert von Seek; 05.11.2004, 16:38.

          Kommentar


          • #6
            hmm, kann mir wirklich keiner helfen?

            Kommentar


            • #7
              PHP-Code:
              } else {} 
              warum das?

              Es reicht, wenn du nur die if-Abfrage wieder schliesst. Wenn kein else-zweig gebraucht wird, braucht man auch keinen schreiben

              und btw

              PHP-Code:
              name="Betriebssysteme(e)" 
              mach da mal die Klammern weg

              konnte jetzt aber auf die schnelle auch keine groben Fehler sehen
              mfg - sagg

              Kommentar


              • #8
                PHP-Code:
                if ($_Checkvar['Nickname']== "sendfalse" OR $_Checkvar['GebJahr']=="sendfalse" OR $_Checkvar['Land']=="sendfalse" OR $_Checkvar['E-Mail']== "sendfalse")

                echo 
                "<br><br><br><br><br><br><br><br><br><br><br><br><body bgcolor=\"#F2F2F2\" link=\"#333333\" vlink=\"#333333\">
                     <table width=\"275px\" align=\"center\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\">
                     <tr>
                     <td bgcolor=\"#999999\">
                     <font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong><font color=\"#FF6600\">EUO</font>.JOIN US Check</td>
                     </tr>
                     <tr><td bgcolor=\"#E1E1E1\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Du musst folgendes Feld oder Felder ausfüllen:<strong></td>"
                ;

                echo 
                "<tr><td bgcolor=\"#F2F2F2\"></td>";

                if(
                $_Checkvar['Nickname'] == "sendfalse")
                     echo 
                "<tr><td bgcolor=\"#E1E1E1\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>[X]</strong> Nickname<br></td>";
                     
                if (
                $_Checkvar['GebJahr'] == "sendfalse"
                     echo 
                "<tr><td bgcolor=\"#E1E1E1\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>[X]</strong> Geburtsdatum<br></td>";
                    
                if (
                $_Checkvar['Land'] == "sendfalse"
                     echo 
                "<tr><td bgcolor=\"#E1E1E1\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>[X]</strong> Land<br></td>";
                     
                if (
                $_Checkvar['E-Mail'] == "sendfalse") {
                     echo 
                "<tr><td bgcolor=\"#E1E1E1\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>[X]</strong> E-Mail<br></td>";
                     die(
                "<tr><td bgcolor=\"F2F2F2\"></td><br><tr><td bgcolor=\"#E1E1E1\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><a href=\"load.php?f=join\"><strong>Zurück zum Formular</strong></td></a>");
                } else {} 
                Da muss der else Teil kommen, wie soll das sonst funktionieren?
                Zuletzt geändert von Seek; 06.11.2004, 17:53.

                Kommentar


                • #9
                  was bringt dir ein leeres else?

                  und immer schön ans umbrechen vom code denken.
                  mfg - sagg

                  Kommentar


                  • #10
                    man hat mir gesagt ich müsse {} machen damit der else Teil ausgeführt wird (nach dem includen).

                    Kommentar


                    • #11
                      da wurde dir was fasches erzählt ; )
                      else oder elseif muss nur hin, wenn auch was drinne steht, ansonsten einfach weglassen

                      aber mal zum thema, funzt es denn mitlerweile?

                      byez - sagg
                      mfg - sagg

                      Kommentar


                      • #12
                        Leider funzt es noch immer nicht, deprimiert mich langsam aber sicher und frag mich schon ob ich überhaupt noch weiter PHP lernen soll...

                        Wie kann ich es denn machen damit der else Teil korrekt ist? Falls der else Teil ausgeführt wird soll ja dies hier ausgeführt werden:

                        PHP-Code:
                        <?php
                        error_reporting
                        (E_ALL);

                        $strEmpfaenger 'seek@gmx.ch';

                        $strFrom       '"Bewerber" <bewerbung@euo-clan.com>';

                        $strSubject    'Bewerbungsformular EUO';

                        $strReturnhtml 'http://www.euo-clan.com/euo/load.php?f=join_ok';

                        $strDelimiter  ":\t";

                        include 
                        "check_form.php";
                        /*hier soll der else Teil ausgeführt werden*/
                        if($_POST)
                        {
                         
                        $strMailtext "";

                         while(list(
                        $strName,$value) = each($_POST))
                         {
                          if(
                        is_array($value))
                          {
                           foreach(
                        $value as $value_array)
                           {
                            
                        $strMailtext .= $strName.$strDelimiter.$value_array."\n";
                           }
                          }
                          else
                          {
                           
                        $strMailtext .= $strName.$strDelimiter.$value."\n";
                          }
                         }

                         if(
                        get_magic_quotes_gpc())
                         {
                          
                        $strMailtext stripslashes($strMailtext);
                         }

                         
                        mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
                          or die(
                        "Die Mail konnte nicht versendet werden. The mail could not been sent.");
                         echo 
                        '<meta http-equiv="refresh" content="0; url="'.$strReturnhtml.'>';
                         exit;
                        }

                        ?>
                        Das Formular kommt übrigens auch korrekt an! Also wenn alles übergeben wurde wird es abgeschickt und falls nicht bekomme ich auch nichts, aber die Anzeige stimmt halt nicht... (http://www.euo-clan.com/euo/load.php?f=join). Deshalb ist es wirklich alles sehr merkwürdig :/
                        Zuletzt geändert von Seek; 06.11.2004, 21:10.

                        Kommentar


                        • #13
                          also der else-teil muss schon nach dem if-teil kommen, davor geht's ned
                          am besten du kopierst den code den du eben hier geschrieben hast, in den else-bereich von dem code davor und fertig, wobei du das "if ($_POST).." dann entfernen könntest..das wird ja bei der if-abfrage schon abgefragt

                          mich würde mal interessieren, was nach dem "} else {}" steht..irgendwo muss ja der befehl für einen reload sein
                          mfg - sagg

                          Kommentar


                          • #14
                            1. Bitte Umbrüche bei deinem Cod machen, ist ein bisschen nervig, wenn das gesamte Layout verzogen ist..

                            2. Der "undefined index ..." Fehler kommt, weil du einen Array Index (zum Beispiel: $_POST['meinfeldimformular']) benutzt (auch die Prüfung $_POST['feld'] == "" ist eine Nutzung des Feldes) ohne das du vorher mit isset($_POST['feld']) geprüft hast ob der Eintrag überhaupt existiert.

                            Wenn du dieses Problem nur bei diesem Script hast, dann liegt das daran, dass du das Fehler Level E_ALL benutzt, welches auch E_NOTICE einschließt, unter welche Kathegorie diese Meldung geht.

                            Alles weitere im PHP Manual unter error_reporting..


                            Zu deinem zweiten Problem: Ich muss mir deinen Code nochmal anschauen..



                            Floriam
                            PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                            Kommentar


                            • #15
                              Ich hab nun mal aus den zweien ein Script gemacht und etwas besser strukturiert. Zudem hab ich die else Abfrage in den else Teil reingeschrieben Zudem habe ich rausgefunden das die undefined Index Fehler nur dann auftreten wenn ich das EMail Feld mit Inhalt übergebe?!

                              Das mit isset() habe ich ein paarmal versucht, aber kriege nur weitere Fehler dadurch. Vielleicht kannst du mir zeigen wie ich das machen kann/muss?

                              PHP-Code:
                              <?php 
                              error_reporting
                              (E_ALL);

                              $strEmpfaenger 'seek@gmx.ch';

                              $strFrom       '"Bewerber" <bewerbung@euo-clan.com>';

                              $strSubject    'Bewerbungsformular EUO';

                              $strReturnhtml 'load.php?f="join_ok.php"';

                              $strDelimiter  ":\t";

                              $_Checkvar= array();

                              if (
                              $_POST['Nickname']== "") {
                              $_Checkvar['Nickname']="sendfalse";
                              } else  {
                              $_Checkvar['Nickname']="sendtrue";

                              if (
                              $_POST['GebJahr']== "Jahr" OR $_POST['GebJahr']== "") {
                              $_Checkvar['GebJahr']="sendfalse";
                              } else {
                              $_Checkvar['GebJahr']="sendtrue";
                              }
                              if (
                              $_POST['Land']== "")  {
                              $_Checkvar['Land']="sendfalse";
                              } else {
                              $_Checkvar['Land']="sendtrue";

                              if (
                              $_POST['EMail']== "") {
                              $_Checkvar['EMail']="sendfalse";
                              } else {
                              $_Checkvar['EMail']="sendtrue";

                              if (
                              $_Checkvar['Nickname']== "sendfalse" OR
                                  
                              $_Checkvar['GebJahr']=="sendfalse" OR
                                  
                              $_Checkvar['Land']=="sendfalse" OR 
                                  
                              $_Checkvar['EMail']== "sendfalse") {
                                  echo 
                              '<br><br><br><br><br><br><br><br><br><br><br><br>
                                       <body bgcolor="#F2F2F2" link="#333333" vlink="#333333">
                                       <table width="275px" align="center" border="0" cellspacing="1" cellpadding="2">
                                       <tr>
                                       <td bgcolor="#999999">
                                       <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                                       <strong><font color="#FF6600">EUO</font>.JOIN US Check</td>
                                       </tr>
                                       <tr><td bgcolor="#E1E1E1">
                                       <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                                       Du musst folgendes Feld oder Felder ausfüllen:<strong></td>'
                              ;
                                  echo 
                              '<tr><td bgcolor="#F2F2F2"></td>';
                                  }
                              if(
                              $_Checkvar['Nickname'] == "sendfalse") {
                                  echo 
                              '<tr><td bgcolor="#E1E1E1">
                                       <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                                       <strong>[X]</strong> Nickname<br></td>'
                              ;
                                  }
                              if (
                              $_Checkvar['GebJahr'] == "sendfalse") {
                                  echo 
                              '<tr><td bgcolor="#E1E1E1">
                                       <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                                       <strong>[X]</strong> Geburtsdatum<br></td>'
                              ;
                                  }
                              if (
                              $_Checkvar['Land'] == "sendfalse") {
                                  echo 
                              '<tr><td bgcolor="#E1E1E1">
                                       <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                                       <strong>[X]</strong> Land<br></td>'
                              ;
                                  }
                              if (
                              $_Checkvar['EMail'] == "sendfalse") {
                                  echo 
                              '<tr><td bgcolor="#E1E1E1">
                                       <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                                       <strong>[X]</strong> EMail<br></td>'
                              ;
                                   
                                   die(
                              '<tr><td bgcolor="F2F2F2"></td><br><tr><td bgcolor="#E1E1E1">
                                       <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                                       <a href="load.php?f=join"><strong>Zurück zum Formular</strong></td></a>'
                              );
                                      
                              } else {
                              $strMailtext "";

                               while(list(
                              $strName,$value) = each($_POST))
                               {
                                if(
                              is_array($value))
                                {
                                 foreach(
                              $value as $value_array)
                                 {
                                  
                              $strMailtext .= $strName.$strDelimiter.$value_array."n";
                                 }
                                }
                                else
                                {
                                 
                              $strMailtext .= $strName.$strDelimiter.$value."n";
                                }
                               }

                               if(
                              get_magic_quotes_gpc())
                               {
                                
                              $strMailtext stripslashes($strMailtext);
                               }

                               
                              mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
                                or die(
                              "Die Mail konnte nicht versendet werden. The mail could not been sent.");
                               echo 
                              '<meta http-equiv="refresh" content="0; url="'.$strReturnhtml.'>';
                               exit;
                               }
                              ?>
                              Gruss

                              Seek
                              Zuletzt geändert von Seek; 06.11.2004, 23:38.

                              Kommentar

                              Lädt...
                              X