Article View: pl.comp.lang.php
Article #1796Re: rekurencja
From: MeHundo
Date: Thu, 30 Aug 2001 17:02
Date: Thu, 30 Aug 2001 17:02
60 lines
3531 bytes
3531 bytes
Metempsychoza wrote:
>
> Uzytkownik "MeHundo" <yanquie@bigfoot.com> napisal w wiadomosci
> news:9mld04$iq0$1@news2.tpi.pl...
>> nie dziala mi taka procedurka wywolujaca sie rekurencyjnie. dotarlem w
>> manualu do tematu recursion ;]
>> jest tam wskazane uzywanie zmiennych static jesli maja przetrwac
>> rekurencyjne wywolanie funckji, ale nie za bardzo wiem jak ja tutaj
>> zastosowac:
>>
>> function resolve_post($post_id, $re_level){
>> static $qresult;
>> include("db_vars.php");
>> $_mysql=mysql_pconnect($host,$username,$password) or die
>> ("brak polonczenia");
>> mysql_select_db($db);
>> $query="select id,subject,visitor_id,
>> DATE_FORMAT(posted,'%d-%m-%Y') as fdate
>> from forum where id_next=$post_id
>> order by posted desc";
>> //echo $query . " " . $post_id . " " . $re_level .
>> "<BR>"; $qresult=mysql_query($query);
>> echo mysql_num_rows($qresult) . "<BR>";
>> while($row=mysql_fetch_array($qresult)){
>> echo str_repeat("+",$re_level) . "(" .
>> $row["fdate"] . ") " .
>> $row["visitor_id"] . " -=- " .
>> $row[subject] . "<BR>";
>> resolve_post($row["id"],$re_level+1);
>> }
>> // $mysql_free_result($qresult);
>> }
>> resolve_post(0,0);
>> ?>
>
> zauwazylem tu kilka bledow:
> 1) po co za kazdym wywolaniem funkcji otwierasz nowe polaczenie? fakt, ze
> dla interpretera to wszystko jedno (i tak otwiera tylko jedno polaczenie),
> ale przejrzysciej bedzie jak raz polaczysz sie z baza, a pozniej juz tylko
> przechowujesz uchwyt do polaczenia
> 2) static $qresult - zbedne, skoro za kazdym razem otwierasz polaczenie
> 3) przez caly czas pobierasz jeden rekord o tym samym id
> 4) po co $re_level jak argument funkcji? przeciez nic z tym nie robisz,
> daj global $re_level i tylko inkrementuj
> 5) przeczytaj
> http://hotwired.lycos.com/webmonkey/99/31/index3a.html?tw=programming -
> tutorial rozwiazujacy problem z ktorym sie borykasz
>
> --
> metempsychoza(at)wp.pl
wielkie dzieki, naprowadziles mnie na trop :)
faktycznie najwiekszym bledem bylo wprowadzenie do procedury elementu
nawiazywania polaczenia, co chyba restartowalo zrodlo rekordow.
co do argumentu $re_level to jest on potrzebny bo przekazuje 'wysokosc
galezi drzewa'. w kazdym razie funkcja juz dziala, a do strony niestety nie
moglem sie dostac.
thx pozdrawiam
Technical Details
Message-ID:
<9mlrfs$ggm$1@news2.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!news.astercity.net!newsfeed.tpinternet.pl!news.tpi.pl!not-for-mailReferences:
<9mld04$iq0$1@news2.tpi.pl> <9mlq5s$b4b$1@news2.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!news.astercity.net!newsfeed.tpinternet.pl!news.tpi.pl!not-for-mail From: MeHundo <yanquie@bigfoot.com> Newsgroups: pl.comp.lang.php Subject: Re: rekurencja Date: Thu, 30 Aug 2001 19:02:40 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 60 Message-ID: <9mlrfs$ggm$1@news2.tpi.pl> References: <9mld04$iq0$1@news2.tpi.pl> <9mlq5s$b4b$1@news2.tpi.pl> Reply-To: yanquie@bigfoot.com NNTP-Posting-Host: pi161.wroclaw.sdi.tpnet.pl Mime-Version: 1.0 X-Trace: news2.tpi.pl 999190845 16918 217.96.152.161 (30 Aug 2001 17:00:45 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Thu, 30 Aug 2001 17:00:45 +0000 (UTC) User-Agent: KNode/0.6.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit