Autor Zpráva
daveho
Profil
zdravim, da se pouzit select pro vypis z tabulky pri "nahodilem" razeni ?
pri normalnim pristupu se mi napr. zobrazi trideni 1,2,3,4,5,6,7,8,9 atd..
Jde to i nahodile? napr. 2,8,4,5,3,1,9,7, atd.. a pri pristim dotazu zase jinak ?
diky
nightfish
Profil
máš na mysli toto?
select sloupec1, sloupec2 from tabulka order by rand()
joe
Profil
daveho
viz. nightfish, ale lepší by to bylo možná přes PHP a pak vybrat určité id ;-)
nightfish
Profil
ale lepší by to bylo možná přes PHP a pak vybrat určité id
nemyslím si... a s tím výběrem určitého id jsem to nepochopil, můžeš trochu rozvést?
jansfabik
Profil
no třeba nějak takhle:

$res = mysql_query ('SELECT sloupec1,sloupec2 FROM tabulka');
$array = array ();
$count = 0;
while ($array[] = mysql_fetch_array ($res))
    $count ++;
$count2 = $count;
for ($i = 0; $i < $count2; $i++) {
    do {
        $rand = rand (0, $count-1);
    } while (!array_key_exists ($rand, $array));
    $current = $array [$rand];

    ... nějaké věci s $current ...

    unset ($array [$rand]);
    $count --;
}


ale nevím, jestli je to rychlejší než v MySQL funkce rand ()
Nox
Profil
Má to nějakou přednost kromě toho že to je 16 řádků vs 3 slova?
daveho
Profil
upresneni:
v tab je treba 100 obrazku oznacenych 1 az 100 s ty se selectem zobrazuji (1-30). (31-60). atd.
tudiz vzdy je jako prvni obrazek 1 a hnedle za nim obr 2, 3, 4. No a ja bych chtel, aby pri zobrazovani razeni probihalo nahodile, tzn. jednou bude prvni napr.5 a za nim 8, 56, 48, 2 atd a jindy zase jinak. V podstate aby se ta zobrazeni stran menilo a nebyla vzdy stejne.
nightfish
Profil
daveho
v tom případě si akorát k dotazu, kterým vybíráš obrázky z databáze, přidej to order by rand()
akorát nechápu, k čemu je tam to stránkování - protože to vybere náhodně obrázky při každém načtení stránky, takže se může jeden obrázek objevit jak na stránce 1-30, tak i na další stránce po kliknutí na 31-60...
joe
Profil
nightfish
Myslel jsem to tak, aby si napsal nějakou svou funkci za pomoci například rand() / mt_rand();

Někam si bude ukládat počet záznamů a potom použije rand(), tím vybere určité id a pak napíše jednoduchý dotaz, kde právě toto id bude vybírat.

RAND() v MySQL se mi moc neosvědčilo a zdá se mi pomalé - například 3s, místo 0,0005s je docela rodíl... Ale pokud je v tabulce málo dat, pak je to asi lepší použít.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: