Autor Zpráva
S.
Profil *
Zdravím,

mám takový problém. Mám databázi o 60ti záznamech, kde mimo jiné ukládám i datum uložení záznamu. Chtěla bych vybrat posledních 5 záznamů (nejnovějších) a z těch pěti potom generovat jeden náhodně, který se uloží a později ho vypíšu. Asi nějak takhle:

$sql = mysql_query(SELECT * FROM rss WHERE id = ANY (ARRAY (SELECT random id FROM rss(1,5))) ORDER BY date DESC LIMIT 1");
$row = mysql_fetch_array($sql);


Tady toto samozřejmě nefunguje, ale nemůžu přijít na to, jak ten dotaz zapsat správně. Tak aby v té proměnné $row byla při každé aktualizaci stránky jiná hodnota (z těch 5ti posledních)... Neporadil byste mi někdo, prosím? Moc děkuju.
nightfish
Profil
select * from rss where id in (select id from rss order by `datum` desc limit 5) order by rand() limit 1

Tak aby v té proměnné $row byla při každé aktualizaci stránky jiná hodnota (z těch 5ti posledních)
1) $row bude obsahovat pole, ne jednu hodnotu
2) pokud chceš pokaždé jinou hodnotu, tak si zřejmě budeš muset pamatovat historii, pseudonáhodný generátor ti to nezaručí (a nejpozději v 6. aktualizaci se ti zobrazí už jednou dříve zobrazený záznam)
S.
Profil *
Jasne, v 6. aktualizaci se hodnota bude opakovat, s tím počítám. Tak geniání to zas být nemusí :-)

Ale když zadám:

$random = array();
		$sql = mysql_query("SELECT * FROM rss WHERE id IN (SELECT id FROM rss ORDER BY parse_date DESC LIMIT 5) ORDER BY rand() LIMIT 1");
		while ($row = mysql_fetch_array($sql)) {
			$random[] = $row;
		} 


Tak mi to vyhodí:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\web\www\libs\classes\class.MyRss.php on line 106

Nevíš kde by mohla být ještě chyba? Děkuju..
srigi
Profil
Tak si vytiahni iba 5 poslednych zaznamov do pola a pole zasuffluj (PHP maual) a vyber z pola vzdy prvy prvok. Takto sa ti zaisti randomizacia.
S.
Profil *
srigi
Perfektní, děkuju, už mi to jede! :-)
nightfish
Profil
S.
Nevíš kde by mohla být ještě chyba?
nevím, ale funkce mysql_error() to vědět bude, tak se jí zeptej
S.
Profil *
nightfish
Teď už to mám hotové, ale příště se jí určitě zeptám. Díky za radu ;-)

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:

0