Forum » Izdelava spletišč » debug PHP
debug PHP
gufy123 ::
Zdravo!
Iščem nasvet, kako se lotit debugiranja php-ja.
Imam neko stran, kjer imam prikazane slike, zraven opise, te slike pa se lahko s pomočjo JS sortira. Ob submit-u se pošljejo imena slik, opisi, sortirana imena slik (+ ostali podatki) v neko funkcijo, ki naj bi v bazi posortirala komentarje teh slik (v tabeli komentarjev je potrebno spremenit id-je slik, na katere se komentarji nanašajo). Funkcija ne deluje pravilno, pa mi nikakor ne uspe ugotovit zakaj. Errorjev sem se znebil, tako da je koda "valid", le rezultat ni pravilen.
Izpisovanje v datoteke, error_log, var_dump in podobne mi (še) niso pomagale do rezultata.
Kako se vi lotevate takih problemov?
Matej
Iščem nasvet, kako se lotit debugiranja php-ja.
Imam neko stran, kjer imam prikazane slike, zraven opise, te slike pa se lahko s pomočjo JS sortira. Ob submit-u se pošljejo imena slik, opisi, sortirana imena slik (+ ostali podatki) v neko funkcijo, ki naj bi v bazi posortirala komentarje teh slik (v tabeli komentarjev je potrebno spremenit id-je slik, na katere se komentarji nanašajo). Funkcija ne deluje pravilno, pa mi nikakor ne uspe ugotovit zakaj. Errorjev sem se znebil, tako da je koda "valid", le rezultat ni pravilen.
Izpisovanje v datoteke, error_log, var_dump in podobne mi (še) niso pomagale do rezultata.
Kako se vi lotevate takih problemov?
Matej
technolog ::
Kaj druzga kot izpisovanje vmesnih rezultatov nekam še nisem potreboval. Niti ne vem če obstaja kaj takega.
DeeJay ::
Jaz osebno izpisujem arraye (print_r) ali variable med sekcijami kode, da nekako pridem do dela, ki povzroča težave.
če pa postaš kako kodo, pa mogoče skupej pridemo do problema.
se mi je že zgodilo, da sem porabil skor cel dan za iskanje napake, zakaj za hudiča mi ne nastavi sessiona.... ko sm na koncu pogruntal, da sm pozabil na začetku klicati session_start()....
print_r($array); exit();
echo $variable; exit();
če pa postaš kako kodo, pa mogoče skupej pridemo do problema.
se mi je že zgodilo, da sem porabil skor cel dan za iskanje napake, zakaj za hudiča mi ne nastavi sessiona.... ko sm na koncu pogruntal, da sm pozabil na začetku klicati session_start()....
maastermedia ::
http://www.php.net/manual/en/debugger-a...
V php-ju to vsakdo malo po svoje rešuje. Neke ultimativne enoznačne celovite rešitve ni. Večina frameworkov ima debuggiranje že notri vgrajeno preko beleženja v log datoteke in podobno. Je pa v sklopu te tematike večjega pomena testiranje in pisanje testov.
Poglej si na hitro, kako ima to symfony2 rešeno s pomočjo phpunit-a:
http://symfony.com/doc/current/book/tes...
V php-ju to vsakdo malo po svoje rešuje. Neke ultimativne enoznačne celovite rešitve ni. Večina frameworkov ima debuggiranje že notri vgrajeno preko beleženja v log datoteke in podobno. Je pa v sklopu te tematike večjega pomena testiranje in pisanje testov.
Poglej si na hitro, kako ima to symfony2 rešeno s pomočjo phpunit-a:
http://symfony.com/doc/current/book/tes...
gufy123 ::
za vse slike, ki jih vrne post (oz. so v bazi) { $id=$_POST['id'.$k]; //id slike $src=$_POST['src'.$k]; //ime sortirane slike $desc=strip_tag_img_href($_POST['comment'.$k]); //opis slike uredi_sliko($id,$src,$desc); // v tabeli slik spremenim ime in opis slike na določenem id-ju, do tukaj vse OK $osrc=$_POST['osrc'.$k]; //dobim prvotno ime slike, pred sortiranjem if ($osrc==$src) //če sta sortirana in nesortirana vrednost enaki { $edit_comment['id'][$k]=0; //zapiši brezvezne vrednosti, verjetno nepotrebno ampak zarad testa je boljš tako $edit_comment['src'][$k]=""; $edit_comment['osrc'][$k]=""; } else { $l=999999+$k; //določim neko veliko številko $edit_comment['id'][$k]=$l; //id slike, na katero se nanaša komentar dobi začasen unikaten id $edit_comment['src'][$k]=$src; //sortirano ime slike $edit_comment['osrc'][$k]=$osrc; //nesortirano (prvotno) ime slike mysql_query("update TABELA_KOMENTARJI set ID_image='$l' where ID_image in (select ID from `TABELA_SLIKE` where Src='$osrc');"); } } for ($j=1; $j<=$i;$j++) //enako število korakov kot v prejšnji zanki { if (!$edit_comment['id'][$j]==0) //če različno od brezvezne vrednosti { $idimage=$edit_comment['id'][$j]; //dobim začasen enolični identifikator $src=$edit_comment['src'][$j]; //dobim ime sortirane slike mysql_query("update TABELA_KOMENTARJI set ID_image=(select ID from `TABELA_SLIKE` where Src='$src') where ID_image='$idimage'"); } }
Ta "update" komentarjev mi ne vrne pravih rezultatov. Se mi zdi, da je največji problem, če premikam slike iz začetka ali konca seznama. Včasih celo združi komentarje večih slik k eni, kar se mi zdi precej čudno, ker koda tega ne bi smela dopuščat.
Ima kdo kakšno idejo?
HardFu ::
Nalozi si kak PHP IDE, recimo PDT, ali pa Komodo IDE, tam notri zloadas cel projekt, potem pa na vrstico, ki jo zelis preveriti, postavis t.i. breakpointe, kjer se procesiranje kode ustavi, da lahko pogledas spremenljivke (in kup drugih stvari). V vsakem primeru priporocam Komodo, saj pride z modulom xdebug za php, ki ponavadi deluje brez problemov, kar za ostale iz izkusenj ne morem reci.
http://codeable.io
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [PHP]Zajem podatkov iz bazeOddelek: Programiranje | 4062 (3699) | cobrica |
» | PHP sortiranje ArrayaOddelek: Programiranje | 1264 (1119) | keworkian |
» | HTML začetnik in težava pri vstavljanju slikOddelek: Izdelava spletišč | 2630 (2446) | net4me |
» | [SQL in PHP] Preprost PHP koledarček, ki je povezan z MySQL bazoOddelek: Programiranje | 1932 (1694) | R33D3M33R |
» | [java] funkcija ekvivalentna print_r v PHPOddelek: Programiranje | 1677 (1440) | sverde21 |