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

array_rand() problem

[es] :: PHP :: array_rand() problem

[ Pregleda: 2613 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-1139.sa.bih.net.ba.



+1 Profil

icon array_rand() problem15.01.2007. u 13:38 - pre 210 meseci
pozz, imam:

Code:
$igraci = "SELECT * FROM igraci_dodjela";
    $nextt = mysql_query($igraci);
    while($b=mysql_fetch_array($nextt)){
        
        $imeprezime[] = $b["ime_prezime"];
        $id_igraca = $b["id"];
        
    
        }    
    

$rand = array_rand($imeprezime, 5);
$smarty->assign('imeprezime', $imeprezime);

recimo da hocu da mi ispise samo 5 ovih imenaprezimena ..

zasto ne radi? ispise mi sve ...

 
Odgovor na temu

357_97

Član broj: 53056
Poruke: 104
*.eunet.yu.



+5 Profil

icon Re: array_rand() problem15.01.2007. u 13:59 - pre 210 meseci
Mislim da ce ti ovo pomoci...

Code:

// obrati paznju na LIMIT 5
$podaci = array();
$igraci = "SELECT kolona_ime, kolona_prezime FROM igraci_dodjela LIMIT 5";
$nextt = mysql_query($igraci);
    while(list($ime, $prezime) = mysql_fetch_array($nextt)){
         $podaci[] =  $ime . $prezime;
    }    
// kao rezultat dobijas niz
// $podaci[0] = 'Ime1 Prezime1' ... $podaci[4] = 'Ime5 Prezime5' ...

Jos jedna mala napomena, nema potrebe izvlaciti sve kolone ako ti nisu potrebne.
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-2077.sa.bih.net.ba.



+1 Profil

icon Re: array_rand() problem15.01.2007. u 15:14 - pre 210 meseci
ja tu nigdje ne vidim array_rand() meni treba slucajnim odabirom 5, ne dolazi u obzir ORDER BY rand() ...
 
Odgovor na temu

djordje
Novi Sad

Član broj: 3704
Poruke: 1725
*.dynamic.sbb.co.yu.



+3 Profil

icon Re: array_rand() problem15.01.2007. u 17:38 - pre 210 meseci
Ne dolazi u obzir to sto si ti napisao! Izvlacis ko zna koliko podataka iz baze da bi uzeo 5 slucajnih. Moras limit 5
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-2077.sa.bih.net.ba.



+1 Profil

icon Re: array_rand() problem15.01.2007. u 17:59 - pre 210 meseci
$igraci = "SELECT * FROM igraci_dodjela LIMIT 5";
$nextt = mysql_query($igraci);
while($b=mysql_fetch_array($nextt)){

$imeprezime[] = $b["ime_prezime"];
$id_igraca = $b["id"];


}


$rand = array_rand($imeprezime, 5);
$smarty->assign('imeprezime', $imeprezime);

tako opet nece. ispise mi 5, ali nije random, vec ne znam ni ja kako mozda po redu .. ne znam kojim redoslijedom ali i kad idem refresh uvijek isto ostane. pozdrav.
 
Odgovor na temu

357_97

Član broj: 53056
Poruke: 104
*.eunet.yu.



+5 Profil

icon Re: array_rand() problem15.01.2007. u 18:21 - pre 210 meseci
Tek posto sam poslao post shvatio sam sta si ustvari hteo da pitas. Lepo si napisao u naslovu, ali posto nisam bio za kompom nisam stigao da se ispravim... Ono sto moram da kazem je to da nisam radio sa smarty-iem ali ono sto pada u uoci je sledece:

1. mozda si prevideo da je rezultat array_rand() niz ako biras vise od jednog elementa
"array_rand() is rather useful when you want to pick one or more random entries out of an array. It takes an input array and an optional argument num_req which specifies how many entries you want to pick - if not specified, it defaults to 1.

If you are picking only one entry, array_rand() returns the key for a random entry. Otherwise, it returns an array of keys for the random entries. This is done so that you can pick random keys as well as values out of the array."

2. tvoj kod nigde nekoristi $rand
Code:

$rand = array_rand($imeprezime, 5); 
// rezultat gornje linije je npr. $rand = (2,3,7,11,13) 
$smarty->assign('imeprezime', $imeprezime);
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-2077.sa.bih.net.ba.



+1 Profil

icon Re: array_rand() problem15.01.2007. u 18:30 - pre 210 meseci
sad sam na osnovu onoga tvog posta gore napisao:
Code:
$podaci = array();
$igraci = "SELECT ime_prezime FROM igraci_dodjela LIMIT 5";
$nextt = mysql_query($igraci);
    while(list($a) = mysql_fetch_array($nextt)){
         $imeprezime[] =  $a["ime_prezime"];
    }    
    $array_rand = array_rand($imeprezime, 5);
ali ispisuje mi samo nekakve brojeve. imas li msn? ako imas posalji preko privatnih poruka pa tamo da se cujemo lakse je.

pozz.
 
Odgovor na temu

djordje
Novi Sad

Član broj: 3704
Poruke: 1725
*.dynamic.sbb.co.yu.



+3 Profil

icon Re: array_rand() problem16.01.2007. u 11:57 - pre 210 meseci
Array_rand vraca indeks slucajnog clana niza u ovom slucaju
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: array_rand() problem16.01.2007. u 23:16 - pre 210 meseci
Mislim da će mu mysql_data_seek() odraditi posao.

Dakle, izvršiš upit bez "LIMIT",
očitaš sa mysql_num_rows koliko imaš redova,
napraviš niz sa 5 slučajnih brojeva u tom opsegu,
napravi foreach petlju s tim nizom i u petlji pozoveš mysql_data_seek($x) pre mysql_fetch_assoc.

"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

afwt
AF Web Team
Novi Sad/Chicago

Član broj: 8220
Poruke: 337
*.hsd1.il.comcast.net.

Sajt: milos.srdjevic.net/blog


+1 Profil

icon Re: array_rand() problem17.01.2007. u 07:28 - pre 210 meseci
hahahaha!!!

Pa kako to, majku mu, da se niko nije setio da SELECT query moze da ima i ORDER i LIMIT?!?! Order by rand() ce sortirati po slucajnom izboru, a limit ce uzeti prvih pet. I umesto da se izmislja topla voda i programira suvisno i ubija performansa aplikacije, to treba prepustiti bazi, koja za to i sluzi!

Dakle,:

Code:

$imena = array();
$query = "SELECT ime_prezime FROM igraci_dodjela ORDER BY RAND() LIMIT 0, 5";
$sql = mysql_query($query);
while ( $row = mysql_fetch_assoc($sql) ) {
     $imena[] =  $row['ime_prezime'];
}
$smarty->assign('imena', $imena);

ZelenaLutrija.com - Saznajte sve o lutriji za zelenu kartu (doživotni boravak u Sjedinjenim Američkim Državama)
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: array_rand() problem17.01.2007. u 11:46 - pre 210 meseci
U pravu si,
mislio sam da će konstrukcija ORDER BY RAND() odabrati slučajnu kolonu po kojoj će sortirati (po meni logičnije),
ali sad sam proverio u manualu, takva konstrukcija stvarno razbaca redove (upravo isprobao).

Iz manuala:
As of MySQL 3.23, you can retrieve rows in random order like this:

mysql> SELECT * FROM tbl_name ORDER BY RAND();

ORDER BY RAND() combined with LIMIT is useful for selecting a random sample of a set of rows.

"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-4757.sa.bih.net.ba.



+1 Profil

icon Re: array_rand() problem17.01.2007. u 12:34 - pre 210 meseci
Citat:
hahahaha!!!

Pa kako to, majku mu, da se niko nije setio da SELECT query moze da ima i ORDER i LIMIT?!?! Order by rand() ce sortirati po slucajnom izboru, a limit ce uzeti prvih pet. I umesto da se izmislja topla voda i programira suvisno i ubija performansa aplikacije, to treba prepustiti bazi, koja za to i sluzi!


Sve je to ok, ali kada budem imao MNOGO više upisa, biće veoma sporo, u tome je problem.
 
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: array_rand() problem17.01.2007. u 12:53 - pre 210 meseci
Citat:
Sve je to ok, ali kada budem imao MNOGO više upisa, biće veoma sporo, u tome je problem.


Koliko je to mnogo i zasto mislis da ce biti sporo?
Never trust an operating system you don't have sources for.
 
Odgovor na temu

afwt
AF Web Team
Novi Sad/Chicago

Član broj: 8220
Poruke: 337
*.dsl.chcgil.sbcglobal.net.

Sajt: milos.srdjevic.net/blog


+1 Profil

icon Re: array_rand() problem17.01.2007. u 17:18 - pre 210 meseci
Nisi u pravu. Kako god da okrenes, bice ti brze da pustis MySQL server da ti odradi to kad vec ima optimizovane funkcije za to.

Bas u tome i jeste poenta, da kada budes imao nekoliko miliona redova u bazi, onda ce tvoj kod da povuce SVE, pa da protrci kroz SVE, pa da ti napravi jedan krmeci array koji ce ti pojede memoriju, samo da bi na kraju izvukao 5 slucajnih uzoraka.

Samo ti koristi ovo, i mirna Backa. Veruj mi na rec. ;-)
ZelenaLutrija.com - Saznajte sve o lutriji za zelenu kartu (doživotni boravak u Sjedinjenim Američkim Državama)
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-604.sa.bih.net.ba.



+1 Profil

icon Re: array_rand() problem17.01.2007. u 17:57 - pre 210 meseci
Pa šta ja znam, par hiljada. Hvala vam momci, bude li dugo trajalo "oživjeti" ću ovaj thread i galamiti. :) Hvala još jednom, poz.

 
Odgovor na temu

djordje
Novi Sad

Član broj: 3704
Poruke: 1725
*.dynamic.sbb.co.yu.



+3 Profil

icon Re: array_rand() problem17.01.2007. u 18:22 - pre 210 meseci
par hiljada ti je gotovo nista za bazu.
 
Odgovor na temu

[es] :: PHP :: array_rand() problem

[ Pregleda: 2613 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

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