Autor | Zpráva | ||
---|---|---|---|
Jimmy Hayek Profil |
#1 · Zasláno: 1. 8. 2009, 23:31:29 · Upravil/a: Jimmy Hayek
Ahoj,
potřeboval bych poradit, jak vypsat náhodný článek. Nechci ale, aby se vypsal po každém načtení nový, ale aby byl náhodný pouze pro daný den. To znamená, aby se po celý den vvypisoval nějaký článek a další den zase jiný. V podstatě by se měl ten náhodný článek nějakým způsobem vypočítat z data. Získat náhodné číslo pro daný den není pro mě zas takový problém, ale jak zařídit, aby to náhodné číslo dne odpovídalo nějakému ID článku? Děkuji předem za odpověď, či jakoukoliv pomoc... P.S. Potřebuji řešení bez zápisu náhodného čísla do databáze... |
||
Mastodont Profil |
#2 · Zasláno: 2. 8. 2009, 07:02:42
Co třeba nějaký plugin?
http://wasabi.pbworks.com/Random%20Posts%20and%20Random%20Excerpts |
||
Jimmy Hayek Profil |
#3 · Zasláno: 2. 8. 2009, 11:45:24 · Upravil/a: Jimmy Hayek
Mastodont
Ano, díval jsem se už na nějaké pluginy (a tento není výjimkou), ale ty dělají přesně to, co nechci — náhodný článek se mění při každém načtení stránky. Já vlastně ani nepotřebuji využívat random funkci... jen potřebuji poradit algoritmus (či jak to nazvat) pro výpočet unikátního čísla dne z jeho data, podle kterého by se vypsal nějaký článek. Zkusím to prakticky ukázat: Dnes máme 2. 8. 2009. Z tohoto data získám proměnné x, y, z: x = 2 y = 8 z = 2009 Následně proběhne nějaký výpočet z těchto proměnných, například dnes by vyšlo: ((x * z) / y) / ((x * y) - (2*x+1)) = 45,65909091 ≈ 46 Zítra by vyšlo zase číslo: 44 Pozítří by vyšlo opět 44 Popozítří: 43 Tenhle příklad jsem pouze z hlavy vymyslel a jde vidět, že není zrovna nejlepší (čísla například klesají). Potřeboval bych prostě vymyslet příklad, který by vyhazoval každý den více odlišná čísla ( 2, 157, 46, 91, 17, ...) a zároveň aby nějakým způsobem to dané číslo mohlo vybrat článek z databáze. |
||
Bubák Profil |
#4 · Zasláno: 2. 8. 2009, 15:35:47 · Upravil/a: Bubák
Koukni na tohle:
(Soubor jsem smazal) Udělal jsem v tabulkáči pár výpočtů, abych dostal desetinné "hausnumero", z toho jsem ponechal desetinnou část, tím jsem dostal pseudonáhodné číslo v rozsahu 0-1. Ostatní je klasika. |
||
Jimmy Hayek Profil |
#5 · Zasláno: 2. 8. 2009, 17:26:57 · Upravil/a: Jimmy Hayek
Tak jsem to nakonec vyřešil takto:
Nejprve dotazem na databázi zjistím, kolik je v ní publikovaných článků. Poté pomocí takovéhoto algoritmu vygeneruju unikátní číslo pro daný den (proměnná $p je počet článků v databázi): function datum_alg($d, $m, $r, $p) { return ((((($d^32)*($m^13)*$r)) - ($r/$m+$d)) * ($d/$m+$d))%$p ; } A nakonec vypíšu z databáze díky LIMIT $uni, 1 jeden článek, kde $uni je ono vygenerované unikátní číslo... Tak třeba se to někomu bude v budoucnu hodit. :-) |
||
Časová prodleva: 15 let
|
0