Eredmény: 1 - 4 (4) összesen

Téma: php kérdés egy nem-php programozótól

  1. #1
    Törzsvendég
    Csatlakozott
    11-02-19
    Hozzászólás
    147
    Thanked 1 Time in 1 Post

    Alapbeállítás 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?



  2. #2
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.605
    Begyűjtött 1.332 köszönetet
    828 hozzászólásával

    Alapbeállítás 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:
    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.


    If debugging is the process of removing software bugs, then programming must be the process of putting them in.
    Github Rake tutorial
    Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
    Respect all, fear none

  3. #3
    Törzsvendég
    Csatlakozott
    11-02-19
    Hozzászólás
    147
    Thanked 1 Time in 1 Post

    Alapbeállítás 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.. :-)



  4. #4
    MinderBinder edem logója
    Csatlakozott
    09-09-02
    Hely
    Budapest
    Hozzászólás
    1.093
    Thanked 1 Time in 1 Post

    Alapbeállítás re: php kérdés egy nem-php programozótól

    De legalább meglett a megoldás. Az is valami.



A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •