Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > [PHP] bedingung falsch statt richtig
Antwort
 
Themen-Optionen
Alt 06.06.2007, 10:09   Nach oben    #1
Cäptn
 
Benutzerbild von Orolhawion
 
Registriert seit: 15.12.2004
Ort: Stockholm
Beiträge: 116
Standard [PHP] bedingung falsch statt richtig

Hallo liebe Leute,

folgender code bereitet mir kopfzerbrechen, möglicherweise steh ich aber auch grad voll auf dem schlauch..

PHP-Code:
if (isset($_POST['sendEmail'])){
    echo 
"valueIs " $_POST['recipient'];
    if (
$_POST['recipient'] != 0){
        echo 
"if wahr";
        
$email = new Email($config);
        
$index['message'] = $email->sendMailCms($_POST['recipient'], $_POST['subject'], $_POST['mailBody'], $_SESSION['email']);
    }else{
        echo 
"if falsch";
        
$error = new Template($config['cmsTplPath'] . 'messages/error/noRecipient.tpl');
        
$index['message'] =  $error->getParsedCode();
    }

meinem verständnis nach überprüft der code, ob der button "sendMail" geklickt wurde, falls ja, wird geprüft, ob ein empfänger aus der selectliste "recipient" gewählt wurde. der standardwert ist "0" und soll anzeigen, daß eben kein empfänger gewählt wurde. das echo "valueIs.....; gibt mir keine "0" sondern beispielsweise eine "2", folglich müßte die bedingung wahr werden, sie wird aber falsch und der else-zweig wird ausgeführt.. wieso des? wenn ich in der bedinung $_POST['recipient'] == 0 schreibe wirds interessanterweise wahr, obwohl ne 2 drin steht..

gruß Orolhawion
__________________
"Wer nicht mit der Zeit geht, wird mit der Zeit gehen."
Game over, Junge!
ENERGIE!
___________________________
Mein Blog
Mein OpenBC
Orolhawion ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 10:21   Nach oben    #2
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Hm, komisch.

Mach mal aus dem
PHP-Code:
echo "valueIs " $_POST['recipient']; 
ein
PHP-Code:
var_dump($_POST['recipient']); 
, damit du den Typ mal herausfindest. Sollte ja ein String sein.

Eventuell liegt da irgendwie der Hund begraben?
Kann ich mir aber eigentlich nicht vorstellen .. aber das heißt ja bekanntlich nichts ...
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 10:30   Nach oben    #3
Cäptn
 
Benutzerbild von Orolhawion
 
Registriert seit: 15.12.2004
Ort: Stockholm
Beiträge: 116
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Mach mal aus dem
PHP-Code:
echo "valueIs " $_POST['recipient']; 
ein
PHP-Code:
var_dump($_POST['recipient']); 
, damit du den Typ mal herausfindest. Sollte ja ein String sein.

Eventuell liegt da irgendwie der Hund begraben?
Kann ich mir aber eigentlich nicht vorstellen .. aber das heißt ja bekanntlich nichts ...
ein
PHP-Code:
var_dump($_POST['recipient']) 
ergibt
PHP-Code:
string(1"2" 
folglich lagst du mit deiner vermutung richtig.
__________________
"Wer nicht mit der Zeit geht, wird mit der Zeit gehen."
Game over, Junge!
ENERGIE!
___________________________
Mein Blog
Mein OpenBC
Orolhawion ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 10:41   Nach oben    #4
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Hat das jetzt das Problem gelöst?
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 10:42   Nach oben    #5
Cäptn
 
Benutzerbild von Orolhawion
 
Registriert seit: 15.12.2004
Ort: Stockholm
Beiträge: 116
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Hat das jetzt das Problem gelöst?
nein, leider nicht.. sorry, hättsch ja ma sagen können...

edit: äh, bzw. doch! die bedingung muß heißen if ($_POST['recipient'] != "0") so rennt's.
danke für den tip!
__________________
"Wer nicht mit der Zeit geht, wird mit der Zeit gehen."
Game over, Junge!
ENERGIE!
___________________________
Mein Blog
Mein OpenBC

Geändert von Orolhawion (06.06.2007 um 10:44 Uhr).
Orolhawion ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 10:44   Nach oben    #6
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Machmal das hier
PHP-Code:
$recipient = (int)$_POST['recipient'];

if(
$recipient == 0) {
    
// ...
}
else {
    
// ...

Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 10:55   Nach oben    #7
Erfahrener Benutzer
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
Standard

Wozu überhaupt einen Standardwert? Kannst du doch einfach weglassen und mit if(empty($_POST['recipient'])) testen, oder?

Übrigens enthält $_POST immer nur Strings oder Arrays von Strings (...).

Und, ich empfehle immer die typensicheren Vergleichsoperatoren zu benutzen. Lieber einmal mehr explizit umwandeln, als nicht zu wissen, ob z.B. der Zahlenwert einer Variable als string, integer, float oder gar boolean gespeichert ist!

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 10:57   Nach oben    #8
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Zitat:
Zitat von Basti Beitrag anzeigen
Übrigens enthält $_POST immer nur Strings oder Arrays von Strings (...).

Und, ich empfehle immer die typensicheren Vergleichsoperatoren zu benutzen. Lieber einmal mehr explizit umwandeln, als nicht zu wissen, ob z.B. der Zahlenwert einer Variable als string, integer, float oder gar boolean gespeichert ist!
Gerade beim Vergleich auf 1 oder 0 (was ja auch boolean-Darstellungen sind) kann es da mal fix zu Problemen führen.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 11:00   Nach oben    #9
Erfahrener Benutzer
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Zitat:
Zitat von Basti Beitrag anzeigen
Übrigens enthält $_POST immer nur Strings oder Arrays von Strings (...).

Und, ich empfehle immer die typensicheren Vergleichsoperatoren zu benutzen. Lieber einmal mehr explizit umwandeln, als nicht zu wissen, ob z.B. der Zahlenwert einer Variable als string, integer, float oder gar boolean gespeichert ist!
Gerade beim Vergleich auf 1 oder 0 (was ja auch boolean-Darstellungen sind) kann es da mal fix zu Problemen führen.
.. Darum sollte man vielleicht mal über die Verwendung von Variablen-Prefixen nachdenken, so wie ich es tu. Also b für boolean, s für string, i für int usw..

Bei mir im Framework gibt es dann eine Klasse genannt PostWrapper, die auf Wunsch mit ::getPostData() ein gesäubertes ARray zurückgibt, in der alle Post-Werte nach Prefix aufgeschlüsselt worden, sprich ein bReceiveNewsletter ist nicht "0" oder "1", sondern durch die Klasse entweder true oder false, Zahlen werden ins Format int bzw float konvertiert.

In meinen Augen sehr praktisch und vermeidet Fehler.
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.06.2007, 11:03   Nach oben    #10
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
Standard

Ja, jetzt kommt hier wieder die "Präfix-Fraktion" .. *gg*

Mach einen entsprechenden Thread auf, wenn du darüber diskutieren willst!
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP] PHPUnit oder testgetriebene Entwicklung mepeisen Tutorials 1 06.12.2007 10:56
[PHP] crypt() - Verständnisproblem bob PHP-Programmierung 5 17.07.2006 18:15


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:52 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44