Formmailer mit Pflichtfelder

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formmailer mit Pflichtfelder

    [FONT=COURIER NEW]Hi, ich habe auf unserer Homepage einen Formmailer eingebaut. Nun möchte ich zusätzlich noch festlegen, welche Felder zwingend ausgefüllt werden sollen.
    Momentan könnte z. B. jeder Besucher das Formular ausfüllen und absenden, ohne seinen Namen dabei anzugeben.
    Hier sollte aber dann eine Meldung "Bitte e-Mail eingeben" erscheinen.

    Hier der Formmailer:


    [/FONT]
    PHP Code:
    <?php
    ### Konfiguration ###

    # Bitte passen Sie die folgenden Werte an, bevor Sie das Script benutzen!

    # An welche Adresse sollen die Mails gesendet werden?
    $strEmpfaenger 'test@tester.de';

    # Welchen Betreff sollen die Mails erhalten?
    $strSubject    'eMail von www.homepage.de';

    # Zu welcher Seite soll als "Danke-Seite" weitergeleitet werden?
    # Wichtig: Sie muessen hier eine gueltige HTTP-Adresse angeben!
    $strReturnhtml 'http://www.homepage.de/danke-email.php';

    # Welche(s) Zeichen soll(en) zwischen dem Feldnamen und dem angegebenen Wert stehen?
    $strDelimiter  ":\t";

    ### Ende Konfiguration ###

    if($_POST)
    {
      
    $strFrom       $_POST["email"];

     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);
     }

      
    // filter
      
    $email trim($_POST["email"]);
      
    $betreff trim($_POST["betreff"]);
      
    // validate
      
    $errors = array();
      if (empty(
    $email)) {
        
    $errors[] = "Bitte E-Mail eingeben.";
      }
      if (empty(
    $betreff)) {
        
    $errors[] = "Bitte Betreff eingeben.";
      }
      
    $hasErrors = !empty($errors);
      if (!
    $hasErrors) {
       
    mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
      or die(
    "Die Mail konnte nicht versendet werden.");
     
    header("Location: $strReturnhtml");
     exit;
      }
    if (
    $formSent && $hasErrors) {
      echo 
    "Fehler beim Versenden des Formulars:<ul><li>"implode("</li><li>"$errors), "</li></ul>";
    }
    }

    ?>
    [FONT=COURIER NEW]

    [/FONT]
    HTML Code:
    <html>
    <head>
    
    
    <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
    
        <p>Dein Name:<br>
        <input type="text" name="name" size="35" maxlength="100" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p>
    
        <p>Deine eMail-Adresse:<br>
        <input type="text" name="email" size="35" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p>
    
        <p>Betreff:<br>
        <input type="text" name="betreff" size="35" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></p></p>
    
        <p>Deine Nachricht:<br>
        <textarea name="nachricht" cols="38" rows="8" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></textarea></p>
    
    
        <p>
    
        <input type="submit" value="absenden"> <input type="reset" value="tipp ex">
    
        <br><br>
    
    
        </form>
    
    
    </body>
    </html>
    [FONT=COURIER NEW]

    ...aber das Formular bringt keine Fehlermeldung!

    Muß ich vielleicht vom oberen Code noch was entfernen? Paßt irgendwas nicht zusammen?

    Vielen Dank im voraus für Hilfe
    Grüße, Marie[/FONT]

  • #2
    Hallo Marie,

    wo wird denn deine Variable $formSent initialisiert? Ich vermute nie und dadurch ist
    PHP Code:
    if ($formSent && $hasErrors) { 
    immer falsch.

    Gruß,

    Anja
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Comment


    • #3
      hm, sorry dass ich mich bisschen blöd anstelle, versteh aber nicht was du meinst! kannst du das umschreiben?
      was meinst du mit initialisiert? an welcher stelle fehlt was oder muß ich was ändern?

      mille grazie!!

      Comment


      • #4
        Ich kann die Stelle nicht finden, wo
        PHP Code:
        $formSent irgendwas
        steht. Dadurch gibt es diese Variable nicht und sie führt dazu, dass die Bedingung nie wahr wird.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Comment


        • #5
          versteh schon, was ihr meint. aber ich hab doch oben stehen

          PHP Code:
          if (empty($email)) {
              
          $errors[] = "Bitte E-Mail eingeben.";
            }
            if (empty(
          $betreff)) {
              
          $errors[] = "Bitte Betreff eingeben.";
            } 
          da steht (für mich als anfänger ) doch, dass wenn das feld email ist leer --> dann fehlermeldung "Bitte E-Mail eingeben"

          oder?

          ist da nicht irgendwas doppelt-gemobelt?

          wann gibt das script denn "Fehler beim Versenden des Formulars" und wann "Bitte E-Mail eingeben" aus?

          Comment


          • #6
            Originally posted by marielou View Post
            da steht (für mich als anfänger ) doch, dass wenn das feld email ist leer --> dann fehlermeldung "Bitte E-Mail eingeben"
            Ja, dann steht in der Variable $errors vermutlich sogar irgendwas drin.

            Aber ausgegeben wird sie nirgends, weil hier
            PHP Code:
            if ($formSent && $hasErrors) { 
            die Bedingung nicht erfüllt wird, wenn es $formSent nicht gibt.

            Nimm doch $formSent da mal raus, und prüfe nur $hasErrors.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Comment


            • #7
              Es ist schwierig, einem Anfänger Dinge zu erklären, für die Grundlagenwissen erforderlich ist. Du nimmst ein fertiges Script, änderst es ab, ohne prinzipiell zu verstehen, was du da machst und gehst dann in ein Forum, um es dort wieder reparieren zu lassen. Das funktioniert so nicht. Die Leute hier sind prinzipiell Hilfsbereit, lassen sich aber ungern unentgeltlich als Programmierer missbrauchen, wenn sie für die selbe Arbeit sonst nen Haufen Geld verdienen würden.

              Du könntest dich entweder an den Ersteller des Skripts wenden oder dir ein neues suchen. Ich habe dir bereits die wahrscheinlichste Ursache des Problems genannt und beschrieben. Aus meiner Sicht ist jetzt ein bisschen Eigeninitiative deinerseits angesagt.

              Gruß,

              Anja
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Comment


              • #8
                ok, vielen dank! durch das rausnehmen von
                PHP Code:
                $formSent && 
                [COLOR=#000000][COLOR=#006600] [COLOR=Black]klappts!

                möcht aber gerne noch verstehen, wozu dieser teil im script notwendig ist:
                [/COLOR]
                [/COLOR][/COLOR]
                PHP Code:
                if (!$hasErrors) {
                   
                mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
                  or die(
                "Die Mail konnte nicht versendet werden.");
                 
                header("Location: $strReturnhtml");
                 exit;
                  } 
                Die Fehlermeldungen lauten ja immer:

                Fehler beim Versenden des Formulars:
                • Bitte E-Mail eingeben.
                • Bitte Betreff eingeben.




                [COLOR=#000000][COLOR=#006600]

                [/COLOR][/COLOR]

                Comment


                • #9
                  Die Meldung "Die Mail konnte nicht versendet werden." kommt nur, wenn auf dem Server was schief geht. Dass du die nie bekommst, ist das gute Anzeichen dafür, dass dein Server funktioniert.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Comment


                  • #10
                    ok, verstehe! alles geklärt - vielen dank!

                    Comment


                    • #11
                      eine frage hätt ich jetzt doch noch!

                      ich habe auf der homepage auch ein ziemlich langes formular, welches einige arbeit zum ausfüllen macht. wenn der benutzer jetzt ein pflichtfeld vergißt und die aufforderung (z. b. email eintragen) kommt, sind gleichzeitig auch alle anderen bereits eingetragenen daten weg.
                      ich denke dass dies einige verärgern könnte!

                      kann man das auch anders einstellen?

                      Comment


                      • #12
                        Ja, indem man einen value-Wert vorgibt. Einfach gesagt so:
                        PHP Code:
                        <input type="text" name="bla" value="<?php echo $_POST['bla'];?>" />
                        Peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Comment


                        • #13
                          danke! funktioniert!

                          Comment


                          • #14
                            noch ne frage!

                            so versteh ich das

                            HTML Code:
                            <td>Körperl. Mängel:</td>
                                   <td><input name="KoerperlMaengel" type="text" value="<?php echo $_POST['KoerperlMaengel'];?>" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></td>
                            aber wie mach ich das in diesen fällen? radio?

                            HTML Code:
                            <tr>
                                   <td>Sehhilfe:</td>
                                   <td>Ja <input name="Sehhilfe" type="radio" value="Ja"> Nein <input name="Sehhilfe" type="radio" value="Nein"></td>
                            </tr>
                            HTML Code:
                            <tr>
                                <td>Klasse<select name="AnmeldeKlasse">
                                <option>auswählen
                                  <option>A
                                <option>B
                                <option>C
                                 
                            </select></td>
                            </tr>
                            HTML Code:
                            <tr>
                                   <td>Anrede:*</td>
                                   <td colspan="3"><select name="Anrede" size="1">
                                   <option>Herr
                                   <option>Frau</select></td>
                            </tr>
                            HTML Code:
                             <p>Deine Nachricht:<br>
                                <textarea name="Nachricht"  cols="38" rows="8" style="background-color: #FBFCFD; border-left: 1px dashed #84c225; border-right: 1px dashed #84c225; border-top: 1px dashed #84c225; border-bottom: 1px dashed #84c225;"></textarea></p>
                            Last edited by marielou; 15-08-2009, 17:22.

                            Comment


                            • #15
                              Originally posted by marielou View Post
                              aber wie mach ich das in diesen fällen? radio?
                              Zeig mal langsam bitte etwas Eigeninitiative - sowas kann man doch mal selber nachlesen gehen!

                              SELFHTML: HTML/XHTML / Formulare / Auswahllisten, Radio-Buttons und Checkboxen
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Comment

                              Working...
                              X