Entwickler-Ecke
Off Topic - [php]If-Abfrage ist nicht true
Marco D. - Fr 09.03.07 17:20
Titel: [php]If-Abfrage ist nicht true
Warum wird die if-Abfrage nie true? Die Ausgabe ergibt: 20078. Also $year = 2007 und $month = 8.
"here" wird also nie ausgegeben. :gruebel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| function Calender($month,$year) { echo $year; echo $month; if (is_numeric($year) && is_numeric($month)) { echo "here"; $this->SetYear($year); $this->SetMonth($month); } else { $this->year = date('Y'); $this->month = date('m'); } } |
Bex - Fr 09.03.07 17:33
Wo werden denn $year und $month erzeugt, wie wird die Funktion aufgerufen? Sind das tatsächlich numerics?
Marco D. - Fr 09.03.07 17:59
Funktion wird so aufgerufen:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| if ($mode == 'calender') { $month = $_GET['month']; $year = $_GET['year']; $calender = new Calender($month,$year); echo $calender->CreateHeader(); } |
Es sind numerics: 2007 und 8 sind doch wohl numerics?!? Oder muss ich dir irgendwie umwandeln. Ich gehe atm davon aus, dass der Interpreter das automatisch als solchen behandelt.
alcaeus - Fr 09.03.07 18:08
Mein Tipp: Boxe die variablen auf den Typen den du haben willst:
Quelltext
1: 2:
| $year = (int) $year; $month = (int) $month; |
Sehr zu empfehlen fuer GPC-Variablen :)
Und ja, eigentlich sollten das numerics sein, von welcher PHP-Version sprechen wir denn?
Greetz
alcaeus
Bex - Fr 09.03.07 18:11
Ich würde tippen, die per $_GET geholten Parameter sind Strings ...
Marco D. - Fr 09.03.07 18:11
alcaeus hat folgendes geschrieben: |
Mein Tipp: Boxe die variablen auf den Typen den du haben willst:
Quelltext 1: 2:
| $year = (int) $year; $month = (int) $month; | |
Werde ich probieren. Diese Methode war mir durchaus bekannt, nur dachte ich, is_numeric kommt damit klar.
alcaeus hat folgendes geschrieben: |
Sehr zu empfehlen fuer GPC-Variablen :) |
Was sind GPC-Variablen?
alcaeus hat folgendes geschrieben: |
Und ja, eigentlich sollten das numerics sein, von welcher PHP-Version sprechen wir denn?
|
Version 5.0.4. => Läuft bei mir über xampp.
bex hat folgendes geschrieben: |
Ich würde tippen, die per $_GET geholten Parameter sind Strings ...
|
Ja sind sie ja auch, aber sie sind ja gewissermaßen auch Zahlen, deswegen ging ich davon aus, dass is_numeric zutrifft.
Bex - Fr 09.03.07 18:17
Muss an der Stelle passen, bin stark typisierte Sprachen gewohnt (Java, C#) ... ;-)
Marco D. - Fr 09.03.07 18:18
Bex hat folgendes geschrieben: |
Muss an der Stelle passen, bin stark typisierte Sprachen gewohnt (Java, C#) ... ;-) |
Kein Problem. ;)
GTA-Place - Fr 09.03.07 18:31
Jep, würde es trotzdem mit int umwandeln. Ich kenn das Problem von ActionScript (seit neuestem mein Gebiet :lol:). Selbst bei Zahlen, kann es vorkommen, dass der Interpreter mir an den Kopf wirft, dass er Zahlen braucht. Bei ActionScript wäre dann die Umwandlung einfach Number(x);.
alcaeus - Fr 09.03.07 18:36
Denke dir diesen Code:
Quelltext
1: 2: 3:
| $year = '2007'; echo "is_numeric: ". ((is_numeric($year)) ? 'True' : 'False') .''; echo "is_int: ". ((is_int($year)) ? 'True' : 'False') .''; |
Bei mir (PHP 5.1.irgendwas) ergibt das erste True, das zweite False; also so wie es sein sollte. Manchmal kommt es vor, dass sich PHP dabei aber verschluckt.
Weil du gefragt hast: GPC-Variablen sind $_GET, $_POST, $_COOKIE; also alles das von "aussen" kommt und deshalb unsicher ist.
Ich habe mir eine Funktion namens request_gpc gebaut, die mir alles aus den GPC-Variablen raussaugen, so wie ich es will. Die Funktion macht auch eine strenge Typkonvertierung. Bei Interesse kann ich die Funktionen ja veroeffentlichen.
Greetz
alcaeus
Marco D. - Fr 09.03.07 19:16
Die Funktion würde mich interessieren. ;)
Aber warum is_numeric nun bei mir false ergibt, ist mir immer noch nicht klar. Oder habe ich was überlesen?
alcaeus - Fr 09.03.07 19:41
Das mit is_numeric() ist mir auch nicht klar. Aber wie du dir vielleicht denken kannst, ich hab solche Probleme nicht :mrgreen:
Die Funktion ist eigentlich mehr ne ganze Klasse...natuerlich mit statischen Methoden. Ich hab das Ganze mal online gestellt und beschrieben:
http://www.alcaeus.org/viewtopic.php?t=292
Greetz
alcaeus
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!