Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+MySQL] losowy obraz... ale niech się wyświetla co kilka godzin
Forum PHP.pl > Forum > PHP
roobik
Witam!
Sprawa dotyczy losowego obrazka. Standardowo wygląda to tak:
  1. <?php
  2. $zap = "SELECT * FROM tabela ORDER BY RAND() LIMIT 1";
  3.  $wyn = mysql_query($zap);
  4. while($r = mysql_fetch_array($wyn)) {
  5. $id = $r['id'];
  6. $gfx = $r['gfx'];
  7. }
  8. ?>

Wsztystko, jak do tej pory działa bez zarzutu. Obrazki się wyświetlają poprawnie, a gdy odświeże jest inny itd...
Problem pojawia się taki:
Chciałbym uzyskać na podst powyższego efekt taki, by obrazki pojawiały się również losowo, lecz nie "każdorazowo po odświeżeniu strony", tylko na przykład co ustalony czas (na przykład co trzy godziny) lub co z góry ustaloną ilość odsłon danego obrazka (na przykład 30 wyświetleń i następny losowy).
Czy da sięcoś takiego w ogóle zrobić? Bardzo proszę o jakieś wskazówki... Bo nie wiem nawet jak siędo tego zabrać...
artega
Poniższy skrypt zapisuje id rekordu odczytywanego co trzy godziny lub 30 wyświetleń do pliku $cache
  1. <?php
  2.  
  3. function set_cache()
  4. {
  5. $sql  = "SELECT * FROM tabela ORDER BY RAND() LIMIT 1";
  6.  
  7. $result_id = mysql_query($sql);
  8.  
  9. $result = mysql_fetch_assoc($result_id);
  10.  
  11. file_put_contents($GLOBALS['cache'], $result['id']);
  12.  
  13. return $result['id'];
  14. }
  15.  
  16. $cache = "last_id";
  17.  
  18. $cache_mtime = @filemtime($cache);
  19.  
  20. if ($cache_mtime)
  21. {
  22. if ($cache_mtime < (time() - 60*60*3))
  23. {
  24. $last_id = set_cache();
  25. }
  26. else
  27. {
  28. $last_id = file_get_contents($cache);
  29. }
  30. }
  31. else
  32. {
  33. $last_id = set_cache();
  34. }
  35.  
  36. $sql  = "SELECT * FROM tabela WHERE id = $last_id";
  37.  
  38. $result_id = mysql_query($sql);
  39.  
  40. $result = mysql_fetch_assoc($result_id);
  41.  
  42. if ($result['displays'] > 30)
  43. {
  44. $last_id = set_cache();
  45. }
  46.  
  47. ?>

Kiedy oczekujesz tylko jednego rekordu nie ma sensu pisać pętli winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.