bjoern: Switch-Problem

Guten Abend allerseits,

ich hab ein Problem und ich steige gerade nicht mehr durch. Ich habe mir eine kleine Abfrage programmiert, welche mir den Wert aus einem select-Feld ($em) liefert. Je nachdem, welchen wert $em liefert, sendet das script-Dings eine E-Mail an die angegebene Adresse. Mein Problem ist jetzt, dass die E-Mail an die jeweils andere Adresse versand wird.

switch ($em){
 case 0: $empf="mail@domain.de";
  break;
 case 1: $empf="news@domain.de";
  break;
 }

Ich bin noch neu auf dem Gebiet PHP, aber meistens habe ich es doch noch irgendwie hingekriegt. Jetzt verstehe ich das ganze aber nicht mehr.

Kann mir jemand vielleicht helfen?

Gruß bjoern

  1. Guten Abend ;-)

    »»Mein Problem ist jetzt, dass die E-Mail an die jeweils andere Adresse versand wird.

    Da ich an deiner Switch-Struktur absolut keinen Fehler bzw. keine "Möglichkeit-für-einen-Fehler" sehe, denke ich, dass der Wert für $em falsch herein kommt (0 wenn er 1 sein sollte bzw. umgekehrt), bzw. dass du die eMail-Adressen für die Fälle 0 und 1 vertauscht hast.

    1. Moin!

      Da ich an deiner Switch-Struktur absolut keinen Fehler bzw. keine "Möglichkeit-für-einen-Fehler" sehe, denke ich, dass der Wert für $em falsch herein kommt (0 wenn er 1 sein sollte bzw. umgekehrt), bzw. dass du die eMail-Adressen für die Fälle 0 und 1 vertauscht hast.

      Laß dir bitte mal $em ausgeben. Häufig liegt es daran, daß register_globals auf off steht und folglich  die Werte aus den Formularen nicht direkt verwendet werden, sondern $_POST['em'], respektive $_GET['em'] verwendet werden muss. Ansonsten kann ich an Deinem Codestückchen keinen Fehler finden.

      Wenn es nicht daran liegen sollte wäre ein wenig mehr Code hilfreich.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      1. Guten Morgen ;-)

        ich habe es jetzt anders geloest und es funktioniert jetzt.
        Statt case 1: $empf="";
        habe ich einfach case news: $empf=""; geschrieben.

        Danke trotzdem für eure Hilfe

        Gute Nacht, Bjoern

  2. Hallo,

    switch ($em){
     case 0: $empf="mail@domain.de";
      break;
     case 1: $empf="news@domain.de";
      break;
     }

    Ich "verdaechtige" auch den Wert von $em als "Uebeltaeter".
    Lass ihn Dir mal anzeigen:
    echo "EM hat den Wert: ($em)";

    Wenn der Wert aus dem Formular kommen soll,
    nimmst Du lieber $_REQUEST['em'], $_POST['em'] oder $_GET['em'].
    Direkt auf $em zuzugreifen, funktioniert nur bei veralteten
    und tolerant eingestellten PHP-Versionen mit
    register_globals="on".
    Darauf solltest Du Dich nicht verlassen.

    Da alle Werte aus Formularen zuerst mal als String reinkommen,
    solltest Du auch statt
    case 0:
    lieber
    case "0":
    schreiben.

    Oder den Wert vorher in eine Zahl umwandeln:
    $em=intval($_REQUEST['em']);

    Die Anfuehrungszeichen sind erst recht notwendig,
    wenn Du andere Werte als Zahlen hast.
    Bei Strings sind Anfuehrungszeichen eigentlich Pflicht;
    es ist nur ein Fehlertoleranz-Mechanismus von PHP, wenn
    es manchmal auch ohne sie "funktioniert"...

    Gruesse,

    Thomas

    --
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    Ich mag es, wenn URLs verlinkt sind (</faq/#Q-19>).
    Oft gestellte PHP-Fragen beantwortet die dclp-FAQ bestens: http://www.dclp-faq.de/