php kérdés egy nem-php programozótól
sziasztok!
belekerültem egy olyan szituációban drupalban, ahol egy modult kell írnom egy aprósághoz php-ban. nem vagyok jártas php-ban, ezért egy egyszerű dolog is képes volt megakasztani:
adott az alábbi kódrészlet:
Kód:
$maxexp = db_result(db_query("SELECT max(expiration) FROM {uc_roles_expirations} WHERE UID=%d and rid=%d", $uid_befizeto, 4));
dpm('DB query finished');
dpm('me = '.$maxexp);
if($maxexp) {
dpm('True branch');
} else {
dpm('False branch');
}
a tartalom mentése után lefut ez is, és a következő üzenetek jelennek meg a dpm() hatására:
Kód:
DB query finished
me =
A tartalom mentése sikeres volt, stb.
nem értem, hogy miért lehetséges, hogy elszállás nélkül lemegy a program és mégis sem az if igaz sem a hamis ágába nem futok bele.
további vizsgálódás után azt tapasztaltam, hogy az is_null($maxexp) 1-et ad vissza kiíratva, gondolom a TRUE változik kiírva "1" stringgé..
ennek megörültem, viszont ha átírom így:
Kód:
if(!is_null($maxexp)) {
....
furcsa módon akkor sem fut le sem az igaz, sem a hamis ág. ez hogyan lehetséges? sajnos nincs belőve a távoli szerveren a debuggolás, egyelőre csak dpm()-ekkel tudok nyomkövetni.
látja valaki, hogy mit csinálok rosszul?
re: php kérdés egy nem-php programozótól
Nem tudom melyik Druapl-t hasznalod, de a 6-os dokisajaban ez van as db_result fuggvenyrol:
Idézet:
Return value
The resulting field or FALSE.
http://api.drupal.org/api/drupal/inc...on/db_result/6
Tehat en igy irnam at az if-et:
PHP kód:
if(!$maxexp) {
dpm('False branch');
} else {
dpm('True branch');
}
De egyebkent valamelyik agnak mindenkeppen le kellene futnia. En megneznek egy var_dump-ot a $maxexp-en. Es beraknak a dpm helyett egy var_dump-ot mindket agba, hogy lassam melyik hajtodik vegre.
re: php kérdés egy nem-php programozótól
Rájöttem :-) Geri javaslatát távolról a szerverre belépve a webes szövegszerkesztővel próbáltam ki. Csakhogy itt az ékezetek a stringben mojibake-vé változtak és egyből a fejemre csaptam: a fájl nem jó kódolással tartalmazta az ékezeteket és a dpm() nem működött emiatt. Nagyon tanulságos hiba volt, kár, hogy több óra ment el rá tanulópénzként.. :-)
re: php kérdés egy nem-php programozótól
De legalább meglett a megoldás. Az is valami. :)