reimprospatare rezultate aleatoriu la un anumit interval de timp - mysql
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
sagap
- Mesaje:12
reimprospatare rezultate aleatoriu la un anumit interval de timp - mysql
Buna seara,
As dori sa stiu cum se poate reimprospata la un anumit timp (exemplu 1 ora) pagina cu rezultate aduse aleatoriu din mysql.
Folosesc urmatorul cod :
Cod: Selectaţi tot
$sql = "SELECT * FROM `nume` ORDER BY RAND() LIMIT $offset, $rowsperpage";
In acest moment se afiseza rezultatele aleatorii de fiecare data cand apas butonul de refresh chiar daca au trecut doar 10 secunde.
Multumesc.
MarPlo
Mesaje:4343
Salut
Poate sunt mai multe solutii /variante. Personal, din ce stiu iti pot da ca idee aceasta metoda:
1. Codul html cu rezultatele din acel Select sa fie salvat intr-un fisier pe server, intr-un director cu permisiuni de scriere (CHMOD 0755, SAU 0777).
2. Inainte de Select se verfifica acel fisier.
3. Daca diferenta dintre timpul curent si cel in care a fost salvat fisierul e mai mica de 1 ora, se adauga in pagina datele din fisier.
4. Altfel, se face Select, se defineste codul html cu rezultatele, se rescrie in fisier si se adauga in pagina.
- Cam asa:
Cod: Selectaţi tot
<?php
$fpath ='dir/rand_'. $offset .'-'. $rowsperpage .'.htm';
if(file_exists($fpath) && (time() - filemtime($fpath)) <3600) $pdata = file_get_contents($fpath);
else {
$sql = "SELECT * FROM nume ORDER BY RAND() LIMIT $offset, $rowsperpage";
//parse results and define in $pdata the html code that will be added in page
$pdata ='html with select results';
//save $pdata in file
if(!file_put_contents($fpath, $pdata)) echo 'Unable to save data in: '. $fpath;
}
echo $pdata;