Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php+MySQL] losowy obraz... ale niech się wyświetla co kilka godzin, Losowy obraz wyświetla się standardowo "co przeładowanie".Jak
roobik
post
Post #1





Grupa: Zarejestrowani
Postów: 410
Pomógł: 5
Dołączył: 25.01.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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ć...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
artega
post
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 42
Dołączył: 22.07.2007
Skąd: /dev/random

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 03:16