Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije

[es] :: PHP :: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije

[ Pregleda: 2269 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 10:52 - pre 197 meseci
Da li je neko raspolozen da mi objasni?
Code:

function printPre($text){
        $prePrint .= "<pre>";
        $prePrint .= print_r($text);
        $prePrint .= "</pre>";
        return $prePrint;
    }
function setQuery($sql){
        $sql = mysql_query($sql);
        return $sql;
    }
function getArray($sql){
        $result = $this->setQuery($sql);
        while($row= mysql_fetch_array($result)){
        $this->printPre($row);    
        }
    }


Kada uradim $this->printPre($row) u okviru getArray metode, dobijem na ekranu ispisana dva niza, koliko ih i ima u bazi po upitu koji saljem
Dakle i treba da dobijem dva niza, jer ima dva rekorda.

Elem, sada sta se desava i gde imam problem. Problem je kada sa druge strane (index.php) pozovem metodu getArray

Code:
$row = $db->getArray("select * from users");
$db->printPre($row);


Tako dobijem ispisan smo jedan rekord umesto dva.

Gde gresim?
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.cable-3.sattrakt.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 11:34 - pre 197 meseci
ti u funkciji getArray vec jednom pozivas metodu printPre, ne moras je opet. Samo pozovi

Code:
$db->getArray("select * from users");


i trebalo bi da ti ispise kako treba.
 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 11:41 - pre 197 meseci
Ne, nisam se dobro izrazio.
Ja print pre pozovem kako treba, odnosno kada izbacim printPre iz same metode:
Code:

function getArray($sql){
        $result = $this->setQuery($sql);
        while($row= mysql_fetch_array($result)){
        $this->printPre($row);    
        }
    }


izmenim i stavim:

Code:

function getArray($sql){
        $result = $this->setQuery($sql);
        while($row= mysql_fetch_array($result)){
        return $row;    
        }
    }


E onda ja pozovem printPre u index.php i dobijem samo jedan rekord umesto dva. a kada je printPre u okviru funkcije, dobijem ispisana dva rekorda, koliko ih i ima.

Izvinjavam se zbg nejasno postavljenog pitanja u prvom topicu.

 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.cable-3.sattrakt.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 11:46 - pre 197 meseci
onda ovako nesto...

Code:

function getArray($sql){
        $result = $this->setQuery($sql);
        return mysql_fetch_array($result));

}


a na index.php

Code:

while($row = $db->getArray("select * from users")){
$db->printPre($row);
}
 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 12:03 - pre 197 meseci
Hvala Kazile, ali netje :)
Udje u mrtvu petlju i zakuca se posle 30 sekundi :)

Neka druga ideja?
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.cable-3.sattrakt.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 12:20 - pre 197 meseci
zakuca? ne bi smelo. jesi promenio i getArray funkciju? svasta...

nego, ako radi na prvi nacin, da je printPre unutar getArraya, zasto menjas?
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
*.dynamic.sbb.co.yu.

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 12:31 - pre 197 meseci
Citat:

Code:

function getArray($sql){
        $result = $this->setQuery($sql);
        while($row= mysql_fetch_array($result)){
        return $row;    // <--- 
        }
    }


E onda ja pozovem printPre u index.php i dobijem samo jedan rekord umesto dva. a kada je printPre u okviru funkcije, dobijem ispisana dva rekorda, koliko ih i ima.



Naravno da dobijes jedan rekord, posto uradis return, odnosno izadjes iz funkcije getArray, cim pokupis prvi red iz baze.
Never trust an operating system you don't have sources for.
 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 12:34 - pre 197 meseci
Jesam promenio sam sve.

Menjam zato sto zelim da odvojim funkciju kako bih kasnije mogao da koristim smarty template. Zbog toga ne zelim da u samoj funkciji uradim:


Code:

function getArray($sql){
        global $smarty;
        $result = $this->setQuery($sql);
        while ($row=mysql_fetch_array($result)){
            $smarty->append('users',$row);
        }
}


nego da na indexnoj strani radim sledece:

$smarty->append('users', $db->getArray("select * from users"));

i tako dobiti loop koji cu koristiti u smarty templateu.

ali sta god da probam dobijem samo jedan rekord...

 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 12:36 - pre 197 meseci
@bzero
Hvala na odgovoru.
Razumem. A kako da resim to? :)
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
*.dynamic.sbb.co.yu.

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 12:43 - pre 197 meseci
Nesto kao:

Code:

$arr = array();
while($row = mysql_fetch_array($result)){
    $arr[] = $row;
}
return $arr;

Never trust an operating system you don't have sources for.
 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 12:56 - pre 197 meseci
upravo sam i sam dosao do :
Code:

function getArray($sql){
        global $smarty;
        $result = $this->setQuery($sql);
        while($row = mysql_fetch_array($result)){
            $rows[] = $row;
        }
        return $rows;
    }


Hvala na pomoci obojici :)

Samo jos jedno pitanje @bzero

Zasto si ti napisao
Code:

$arr = array();
while($row = mysql_fetch_array($result)){
    $arr[] = $row;
}


kada radi jednako i bez $arr=array()

Ovo me zanima samo iz razloga da prosirim svoja znanja. Zanima me zasto je potrebno da $arr bude array pre while petlje? Da li je uopste potrebno?
 
Odgovor na temu

bzero
dev null
europe

Član broj: 5907
Poruke: 371
*.dynamic.sbb.co.yu.

Jabber: bzero@elitesecurity.org
Sajt: www.google.com/search?q=b..


Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 13:19 - pre 197 meseci
Pa recimo da na prvi pogled to nije neophodno, ali spada u dobru praksu kod pisanja koda. Konkretno, tvoja funkcija getArray treba da vrati array, ali sta ce se desiti ako za neki konkretan query ne postoji ni jedan red u bazi, sta ce vratiti funkcija? Vratice neku nedefinisanu vrednost, i ako pokusas tu vrednost da upotrebis kasnije u kodu moze da bude problema, (npr, u foreach petlji, dobices warning), a posebno su ovakve stvari vazne ako vise ljudi radi na nekom projektu.
Znaci na ovaj nacin obezbedjujes da tvoja funkcija uvek vrati array (makar i prazan).

[Ovu poruku je menjao Nemanja Avramović dana 16.01.2008. u 18:06 GMT+1]
Never trust an operating system you don't have sources for.
 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 14:15 - pre 197 meseci
@bzero

Zahvaljujem ti na objasnjenju :)
 
Odgovor na temu

[es] :: PHP :: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije

[ Pregleda: 2269 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.