[ _CaRtMan_ @ 15.01.2007. 13:38 ] @
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 ...

[ 357_97 @ 15.01.2007. 13:59 ] @
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.
[ _CaRtMan_ @ 15.01.2007. 15:14 ] @
ja tu nigdje ne vidim array_rand() meni treba slucajnim odabirom 5, ne dolazi u obzir ORDER BY rand() ...
[ djordje @ 15.01.2007. 17:38 ] @
Ne dolazi u obzir to sto si ti napisao! Izvlacis ko zna koliko podataka iz baze da bi uzeo 5 slucajnih. Moras limit 5
[ _CaRtMan_ @ 15.01.2007. 17:59 ] @
$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.
[ 357_97 @ 15.01.2007. 18:21 ] @
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);
[ _CaRtMan_ @ 15.01.2007. 18:30 ] @
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.
[ djordje @ 16.01.2007. 11:57 ] @
Array_rand vraca indeks slucajnog clana niza u ovom slucaju
[ Miroslav Ćurčić @ 16.01.2007. 23:16 ] @
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.
[ afwt @ 17.01.2007. 07:28 ] @
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);
[ Miroslav Ćurčić @ 17.01.2007. 11:46 ] @
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.
[ _CaRtMan_ @ 17.01.2007. 12:34 ] @
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.
[ bzero @ 17.01.2007. 12:53 ] @
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?
[ afwt @ 17.01.2007. 17:18 ] @
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. ;-)
[ _CaRtMan_ @ 17.01.2007. 17:57 ] @
Pa šta ja znam, par hiljada. Hvala vam momci, bude li dugo trajalo "oživjeti" ću ovaj thread i galamiti. :) Hvala još jednom, poz.

[ djordje @ 17.01.2007. 18:22 ] @
par hiljada ti je gotovo nista za bazu.