Formmailer mit Pflichtfelder

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

  • 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]

    Kommentar


    • #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!!

      Kommentar


      • #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]

        Kommentar


        • #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?

          Kommentar


          • #6
            Zitat von marielou Beitrag anzeigen
            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.

            Kommentar


            • #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]

              Kommentar


              • #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]

                Kommentar


                • #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]

                  Kommentar


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

                    Kommentar


                    • #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?

                      Kommentar


                      • #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

                        Kommentar


                        • #13
                          danke! funktioniert!

                          Kommentar


                          • #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>
                            Zuletzt geändert von marielou; 15.08.2009, 18:22.

                            Kommentar


                            • #15
                              Zitat von marielou Beitrag anzeigen
                              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.

                              Kommentar

                              Lädt...
                              X