Autor | Zpráva | ||
---|---|---|---|
24k_sick Profil * |
#1 · Zasláno: 13. 2. 2006, 00:46:56
Resim problem s prechazenim z proceduralniho programovani na OOP , mam haluz DB tridu a rad bych to demonstroval na malem priklade. Jedna se o 2 selecty zjistujici pocet clanku
1/ s limitem 2/ bez pote prichazi na radu cyklus, vytvori se promenna typu fetch_array a uvnitr cyklu zjistuji dalsim selectem pocet komentaru daneho clanku. Je to pomerne klasicky priklad. Vim ze by to asi slo 1 selectem, ale jde mi o problematiku ... Takze pri pouziti proceduralniho programovani vse fungje jak ma a kdyzto zkusim se svoji trapnou tridou , ktera je temer totozna jako trida z knihy od WELLINTONOVE PROGRAMUJEME PROFESIONALNE (3.vyd.) tak to proste nefunguje. --proceduralne mysql_connect("localhost", "", ""); mysql_select_Db("databaze"); $select1=mysql_query("select * from clanky limit 10"); $select2=mysql_query("select * from clanky"); $pocet_radku_s_limitem=mysql_num_rows($select1); $pocet_radku_celkove=mysql_num_rows($select2); echo "počet řádků s limitem je $pocet_radku_s_limitem a celkový počet je $pocet_radku_celkove <br /><br /><hr />"; while($r=mysql_Fetch_Array($select1)) { $pocet_komentaru=mysql_num_rows(mysql_query("select id from komentare where id_cl=$r[id]")); echo "clanek čislo $r[id] má $pocet_komentaru komentářů<br/>"; } a vyprodukuj se neco jako počet řádků s limitem je 10 a celkový počet je 46 ---------------------------------------------------------------------- ------- clanek čislo 1 má 8 komentářů clanek čislo 2 má 35 komentářů clanek čislo 3 má 15 komentářů clanek čislo 4 má 20 komentářů clanek čislo 5 má 9 komentářů clanek čislo 6 má 15 komentářů clanek čislo 7 má 1 komentářů clanek čislo 8 má 4 komentářů clanek čislo 11 má 0 komentářů clanek čislo 12 má 7 komentářů --OOP require("db.class.php"); $db = new DB("localhost", "", "", "pesonline_info"); $db->Connect(); $select1=$db->mq("select * from clanky limit 12"); $select2=$db->mq("select * from clanky"); #echo "počet řádků s limitem je ".$select1->mnr()." a celkový počet je ".$select2->mnr()." <br /><br /><hr />"; while($r=$db->mfa()) { $query=$db->mq("select id from komentare where id_cl=$r[id]"); $pocet_komentaru=$query->mnr(); echo "clanek čislo $r[id] má $pocet_komentaru komentářů<br/>"; } A tady dochazi k problemu, vypisuje se mi Call to a member function on a non-object . Ve vyse uvede knize pouzivaji tridu MYSQLI a taky nacitaji dotazy apod. do funkce a z ni to volaji $select1=$db->query(...) $select2=$db->query(...) a pote treba $select2->mnr a me to proste nejde. asi bych tu tridu mel mit napsanou jinak... DIKY KDO TO DOCETL AZ SEM, doufam ze nekdo pochopil oc se mi jedna a ze mi poradi. Tridu naleznete na http://rjwebdesign.net/db.class.phps |
||
llook Profil |
#2 · Zasláno: 13. 2. 2006, 01:12:14
Vyčlenil bych zvlášť třídu pro výsledky. Prostě ty metody, co pracují s $this->result, bych nacpal např do třídy DBResult:
class DBResult {A metodu mq ve třídě DB bych pak udělal takhle: function &mq($query) A taky bych pouvažoval nad nějakým popisnějším pojmenování metod. |
||
24k_sick Profil * |
#3 · Zasláno: 13. 2. 2006, 01:53:39
ILOOKU, dekuju TI. Funguje to tak jak sem chtel. Sice to nechapu uplne , ale snad to casem prijde.
1/ proc to musi byt jako reference? 2/ nevis jestli je nekde rozebrana trida mysqli abych se podival jak se tvori? 3/ neco podobneho zabyjivaci se timto tematem? DIKY MOC a DOBROU NOC |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0