Autor Zpráva
SwimX
Profil
na dotaz
SELECT q.otazka, q.id_otazka, r.odpoved, r.id_odpoved FROM odpovedi r JOIN otazky q ON q.id_otazka = r.id_otazka WHERE q.id_test = $id ORDER BY q.id_otazka, RAND() LIMIT 10

se mi vrátí
Array ( [otazka] => O jakou rovnici se jedná? [id_otazka] => 15 [odpoved] => logaritmickou [id_odpoved] => 95 ) 
Array ( [otazka] => O jakou rovnici se jedná? [id_otazka] => 15 [odpoved] => lineární [id_odpoved] => 96 ) 
Array ( [otazka] => O jakou rovnici se jedná? [id_otazka] => 15 [odpoved] => exponenciální [id_odpoved] => 94 ) 
Array ( [otazka] => Jakou barvu má tendle obdélník? [id_otazka] => 17 [odpoved] => hnědou [id_odpoved] => 69 ) 
Array ( [otazka] => Jakou barvu má tendle obdélník? [id_otazka] => 17 [odpoved] => černou [id_odpoved] => 67 ) 
Array ( [otazka] => Jakou barvu má tendle obdélník? [id_otazka] => 17 [odpoved] => fialovou [id_odpoved] => 68 ) 
Array ( [otazka] => Tvé jméno? [id_otazka] => 18 [odpoved] => kája [id_odpoved] => 83 ) 
Array ( [otazka] => Tvé jméno? [id_otazka] => 18 [odpoved] => mája [id_odpoved] => 82 ) 
Array ( [otazka] => Tvé jméno? [id_otazka] => 18 [odpoved] => jája [id_odpoved] => 84 )

odpovedi se přehazují díky RAND() ale nejde mi zpřeházet otázky, ale tak, aby stejné otázky zůstaly u sebe.

Nevíte jak na to?
__construct
Profil
Zlúč si polia s rovnakými otázkami a zamiešaj ich potom cez shuffle
Osobne odporúčam nepoužívať v dotazoch na MySQL databáze vstavanú funkciu RAND() pretože je to pre tieto DB náročná operácia (MySQL vykoná funkciu na každý jeden riadok v tabuľke pred tým ako ich zoradí a nakoniec Ti vráti iba 10 riadkov - pri veľkých DB je to dosť náročné)
Pokiaľ chceš vytiahnuť náhodné otázky najprv by som si zistil koľko je v DB riadkov a potom napr. cez mt_rand() vyberal náhodné čísla
SwimX
Profil
__construct:
ano shuffle mě napadla použít, ale mám radši když se o většinu věcí stará DB.
Ale dobrá, udělám to tak. Díky
SwimX
Profil
Heh, shuffle je pěkné záludná funkce, která mění také klíče zamíchaného pole. Takže pokud někdo chce zamíchat pole, kde klíčem je id otázky, bude muset použít funkci shuffle_assoc

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0