Switch-Problem
bjoern
- php
0 Michael0 Thomas Luethi
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
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.
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®
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
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