If Else

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

  • If Else

    Kann mir einer sagen was hier icht stimmt ?
    Der soll die Variablen abfragen ob die leer sind und wenn ja dann die Variable "Fehlermeldung" ausgeben. Und wenn die Variablen gefüllt sind dann soll er die überspringen und die mail senden.
    Funzt aber nicht.

    Hier der Code.

    <?php

    if(strlen($name)==0){
    $fehlermeldung="Bitte geben Sie Ihren Namen an.<br>";
    }
    if(strlen($email)==0){
    $fehlermeldung.="Bitte geben Sie Ihre E-Mail Adresse an.<br>";
    }
    if(strlen($nachricht)==0){
    $fehlermeldung.="Bitte füllen Sie das Text Formular aus.<br>";
    }
    if($fehlermeldung){
    //Eines der Felder wurde nicht korrekt ausgefüllt
    echo "Ihre Mail konnte aus folgenden Gründen leider nicht gesendet werden:<br><br>";
    echo $fehlermeldung;
    echo "<br>Bitte klicken Sie auf <a href=javascript:history.go(-1);>Zur&uuml;ck</a>
    und fuellen Sie alle Felder aus.";

    }else{

    // Zuerst wird der Text zusammengesetzt
    $mail ="webmster@blabla.de";
    $text =$name . " hat eine Nachricht auf der Homepage geschrieben." . ",\n";
    $text .="E-Mail: " . $email . ",\n" ;
    $text .="Mitteilung:\n";
    $text .=$nachricht . "\n";

    // Zusätzlich wird noch der Header definiert
    $header = "From: " . $email . "\n";

    mail($mail, "Eine Nachricht von der Homepage", $text, $header) ;
    }
    ?>
    <HTML>
    <HEAD>
    <TITLE>Mail erhalten.</TITLE>
    </HEAD>

    <BODY>
    <h1>Die E-Mail wurde erfolgreich verschickt.</h1><br>
    <a href="javascript:history.go(-2);">Zur&uuml;ck</a>
    </BODY>
    </HTML>

  • #2
    suche mal nach register_globals

    Kommentar


    • #3
      ist es aus einem formular?
      naja, wie dem auch sei.

      diese struktur sollte dir reichen.
      es ist kleiner aber direkter:

      PHP-Code:
      // Das ! vor der Variabel sit quasi eine verneinung.
      // Also Prüfung ob sie nicht existiert ...
      if (!$var) {

            
      $error 'Blablabla' ;

            
      // Das "die" bewirkt an dieser stelle das code angehalten wird.
            
      die ;


      das register globels musst du dir dennoch angucken!!!

      nebenbei: willst du wissen ob der wert von $var = 0 ist oder
      ob die variable nicht existiert.

      (Vorsicht weil ich es nicht genau weiß: Eine leere Varibel,
      ist auch nicht "vorhanden")
      Design & Coding with a breeze of madness at xjonx

      Kommentar


      • #4
        Also erstmal vielen Dank für Eure Antworten.

        Was ich möchte ist ganz einfach.

        Ich möchte prüfen lassen ob die Felder ausgefüllt worden sind oder nicht.

        Und das beim ausführen des Submit Buttons.
        Soweit so gut. Blick auch so halb durch aber eben nur so halb da ich noch Anfänger bin.
        Er prüft die Felder stoppt aber das Script nicht sondern gibt einfach den Text aus und versendet die Mail trotzdem. Egal ob die Felder voll oder leer sind.

        Ich möchte das wenn die Felder leer sind er die Schleife betritt und ne Fehlermeldung ausgibt. Und wenn alle Felder ausgefüllt sind er die Schleife überspringt und dann zur nächsten übergeht und die Mail versendet. Eigentlich Easy.

        Habe schon viel rumgetestet mit "strlen" und auch mit "If(isset)....."
        aber nix hat gefunzt.

        Habe das Formular und den Code in 2 verschiedenen Dateien.

        Na mal sehen wie lange ich dafür noch brauche damit das funzt.

        Herr gib mir Hirn lol....

        P.S. Die Globals stehen auf off

        Kommentar


        • #5
          wie immer erst lesen vor dem posten:
          http://php-resource.de/forum/showthr...threadid=50454

          Kommentar


          • #6
            Hi,

            Du könntest das so umsetzen:
            PHP-Code:
            if ((!empty($name) == true) && (!empty($alter) == true))
            {
             
            // mach was

            Gruß Thomas
            Zuletzt geändert von Alrik; 19.03.2006, 20:53.

            Kommentar


            • #7
              eine hervorragende mischung aus logischem und syntaktischen unsinn!

              Kommentar


              • #8
                Dann begründe das doch auch.

                Kommentar


                • #9
                  Geändert von Alrik am 19-03-2006 um 20:53


                  wenn du schon keine kurzform benutzst
                  PHP-Code:
                  if( !empty(...) ) 
                  sondern eine bedingung mittels "== true" überprüfst, so sorge doch wenigstens für übersichtlichkeit:
                  PHP-Code:
                  if( empty(...) == false 

                  Kommentar


                  • #10
                    Ich habe nur die Fehlerhafte Klammersetzung korrigiert.
                    Mich interessierte auch viel mehr die Bemerkung "logischer Unsinn".

                    Bei mir steht:
                    wenn nicht leer wahr ist

                    und deine Variante:
                    wenn leer nicht wahr ist.

                    Welches man davon bevorzugt ist reine Geschmackssache und hat mit Übersichtlichkeit nichts zu tun.

                    Kommentar


                    • #11
                      du hast recht, ich korrigiere zu "stilistisch".

                      Kommentar


                      • #12
                        Dann kanns ja jetzt wieder "back to Topic" gehen.

                        Kommentar


                        • #13
                          Sicher, dass die mail wirklich VERSCHICKT wird?

                          Die "Erfolgsmeldung" zum Schluß kommt sicher, weil die ja nicht mehr innerhalb der

                          PHP-Code:
                          if {...} else {...} 
                          Bedingung, sondern außerhalb des PHP Codes steht.

                          Um das zu ändern, müßtest Du die "Erfolgsmeldung" in den else-Zweig integrieren, etwa so:

                          PHP-Code:
                          else
                           { ...
                            echo(
                          "<h1>Die E-Mail wurde erfolgreich verschickt.</h1>");
                           } 
                          Die Bedingung selber kann das Problem jedenfalls nicht sein, wenn der if-Zweig richtig abgearbeitet wurde (scheint auch in Ordnung zu sein).

                          Nur ein kleiner Tip. Wenn Du nicht nur "ganz" leere Eingaben, sondern z.B. auch Eingaben verhindern willst, die nur Leerzeichen enthalten, ist keine der vorgestellten Methoden anwendbar.
                          Du könntest dann aber z.B. folgendes verwenden:

                          PHP-Code:
                            if (trim($name)=="")
                              {...} 
                          Deine Variante mit strlen geht aber auch,

                          PHP-Code:
                            if (strlen(trim($name))==0)
                              {...} 
                          ist Geschmacksfrage, aber wahrscheinlich ein bißchen
                          langsamer als oben vorgestellte Variante.

                          Kommentar


                          • #14
                            Also erstmal danke für den regen Austausch hier.

                            Die Mail wird wirklich verschickt lol. Und die Meldung kommt auch.

                            In meinem Buch steht diese Meldung auch innerhalb des PHP Codes da hast du wahrscheinlich recht. Ich habs nun mal so gemacht und es funzt auch.

                            Eure vielen Tipps werd ich mir mal am WE oder so zu Herzen nehmen denn die Woche über bleibt zu wenig Zeit und ich bin da auch zu müde für lol.

                            Mal sehen wie wir das hinbekommen.

                            Das wird aber noch laaaange dauern bis ich PHP mal richtig behersche man o man. Ihr werdet bestimmt noch öfter von mir hören denn als nächsten steht demnächst das GB an lol..............

                            Greetz....

                            P.S. Die Mail wird natürlich nur verschickt wenn ich den Code mit der if und else schleife weglasse. sonst natürlich nicht ;-)

                            Kommentar


                            • #15
                              Na bitte, dann haben wir´s da ja schon:

                              Die Mail wird natürlich nur verschickt wenn ich den Code mit der if und else schleife weglasse. sonst natürlich nicht
                              Das heißt, Du kommst richtig in den if-Teil, wenn die if-else Struktur drinnen ist.

                              Dann brauchst Du wirklich nurwie vorgeschlagen (siehe oben) die Erfolgsmeldung <h1>...</h1> nach oben in den PHP-Code, und zwar in den else-Zweig integrieren und es funktioniert.

                              Ich habs nun mal so gemacht und es funzt auch.
                              ... na eben nicht, so wie ich das verstanden hab ist das Problem ja, dass die "Erfolgsmeldung" trotzdem kommt, auch wenn die mail nicht verschickt wird (wenn die if-else Anweisung drin ist).
                              Und das ist nun mal eben deswegen der Fall, weil die Erfolgsmeldung nicht im else-Zweig steht (also nicht dadurch bedingt ist, dass if($fehlermeldung) NICHT wahr ist).
                              Was passiert, ist dass zwar im Fehlerfall richtig der if-zweig abgearbeitet (und deshalb auch die mail nicht verschickt) wird, aber dann auf jeden Fall das <h1>Die E-Mail wurde erfolgreich verschickt.</h1> erscheint, und zwar deshalb, weil es nicht im else-Zweig steht (also nicht nur dann erscheint, wenn auch die email verschickt wird).

                              Oder hab ich den Punkt nicht getroffen?

                              Kommentar

                              Lädt...
                              X