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: 485 | Odgovora: 12 ]

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

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?
16.01.2008. u 10:52 

kazil
Robert Bašić
student, wannabe freelancer
Bačka Topola

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

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


Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 11:34
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.
When it comes to security, paranoia is a virtue, not a flaw.
Site Blog You twitt?
16.01.2008. u 11:34 

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
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.

16.01.2008. u 11:41 

kazil
Robert Bašić
student, wannabe freelancer
Bačka Topola

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

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


Profil

icon Re: Kada mozak stane i nista ne radi- ne umem da isprintam podatke iz funkcije16.01.2008. u 11:46
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);
}

When it comes to security, paranoia is a virtue, not a flaw.
Site Blog You twitt?
16.01.2008. u 11:46 

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
Hvala Kazile, ali netje :)
Udje u mrtvu petlju i zakuca se posle 30 sekundi :)

Neka druga ideja?
16.01.2008. u 12:03 

kazil
Robert Bašić
student, wannabe freelancer
Bačka Topola

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

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


Profil

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

nego, ako radi na prvi nacin, da je printPre unutar getArraya, zasto menjas?
When it comes to security, paranoia is a virtue, not a flaw.
Site Blog You twitt?
16.01.2008. u 12:20 

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
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.
16.01.2008. u 12:31 

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
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...

16.01.2008. u 12:34 

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
@bzero
Hvala na odgovoru.
Razumem. A kako da resim to? :)
16.01.2008. u 12:36 

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
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.
16.01.2008. u 12:43 

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
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?
16.01.2008. u 12:56 

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
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.
16.01.2008. u 13:19 

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
@bzero

Zahvaljujem ti na objasnjenju :)
16.01.2008. u 14:15 

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

[ Pregleda: 485 | Odgovora: 12 ]

Postavi temu Odgovori

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