Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlanie wg godziny
Forum PHP.pl > Forum > PHP
Domin
Witam,

Mam problem. Mianowicie chciałbym aby do bazy SQL wprowadzić np. takie dane:
- Imie np. Dominik
- Jakiś tekst np. Pozdrowienia dla znajomych
- Dzień tygodnia np. poniedziałek
- Godzina np. od 20:00 do 22:00

i jakiś tam skrypt sprawdzał aktualną date i godzinę na serwerze i czy jest to np. poniedziałek i godzina podana w rekordzie. Jeżeli dzień tygodnia i godzina się zgadza np. jest poniedziałek godz. 21:03, to skrypt wyświetla Imię i tekst. Wie ktoś może jak to zrobić, lub ma jakiś pomysłquestionmark.gif Nie wiem jak zrobić żeby sprawdzał godzinę i dzień. Może wy wiecie?? Pomóżcie...

Słyszałem, że można użyć czegoś takiego:
  1. <?php
  2. WHERE 'pole' = ''.date("Y-M-D").'\'
  3. ?>

... ale nie wiem jak to wykorzystać...
Levabul
Ja bym to zrobił przy użyciu funkcji time" target="_blank. Najpierw za pomocą mktime obliczasz ile sekund upłynie od początku epoki uniksowej do daty w której ma być wyświetlony tekst, i dodajesz to do bazy. Później gdy odpalasz skrypt który ma wyświetlac pozdrowienia sprawdzasz jaka jest wartość funkcji time() i pobierasz dane gdzie czas jest podobny to uzyskanego funkcją time(). Musiałbyś tylko jakoś uwzględnić różnice w sekundach ponieważ jeżeli pozdrowienia mają zostac wyświetlone np. o godz. 22:47 10.12.2005, a skrypt zostanie uruchomiony chociażby o godzinie 22:47:01 10.12.2005 tekst niezostanie wyświetlony.

Jeżeli jesteś zainteresowany to za drobną opłatą mogę napisac ci taki srypt. tongue.gif Wrazie czego PM lub email.
mike
@Levabul foum.php.pl jest w pełni otwarte dla wszystkich a celem jego istnienia jest pamaganie innych za darmo i szerzenie wiedzy. Jeśli chcesz zarobić to ogłoś swoje usługi w działach do tego przeznaczonych. Wszelkie tego typu propozycje będą następnym razem usuwane.

@Domin za darmo znajdziesz odpowiedź na forum.
Speedy
  1. <?php
  2.  
  3. $tablica = array(
  4. "Jun 01, 2005 4:28:46 pm",
  5. "Jan 03, 1988 8:53:47 am",
  6. "Feb 01, 2003 4:28:46 pm",
  7. "Apr 01, 2005 4:28:46 pm",
  8. "Jun 01, 2005 3:18:46 pm",
  9. "Jun 01, 2005 5:18:46 pm"
  10. );
  11.  
  12. function cmp($a, $b)
  13. {
  14.  return ((strtotime($a)) < (strtotime($b)));
  15.  
  16. }
  17.  
  18. usort($tablica, "cmp");
  19.  
  20. for($i = 0, $count = count($tablica); $i <= $count; $i++) {
  21.  
  22. echo $tablica[$i]."<br />n";
  23.  
  24. }
  25.  
  26. ?>


Wyświetli od najnowszej daty do najstarszej.
Domin
Speedy chyba źle mnie zrozumiałeś! Nie chcę aby mi sortował wg godziny. Tylko wyświetlił rekord w danej godzinie.

Np. wpisuję zakres wyswietlanych godzin jako 20:00-21:30 i dzień poniedziałek, to funkcja sprawdza rekordy w bazie danych i porównuje z dniem i godziną. A kiedy dzień tygodnia się zgadza a godzina jest np. 20:37 lub 21:00 więc mieści się wjednym z rekordów. Czyli od godz. 20:00 do 21:30 w poniedziałek będzie wyświetlany tekst z imieniem i jakimś tam podpisem.
A jeżeli jest np. wtorek i godzina 17:00 a w bazie danych nie ma nic to wyświetla np. imie => Kamil, tekst => puste pozdrowienia.

Chciałbym aby skrypt porównywał aktualną godzinę i dzień tygodnia z serwera z rekordami w bazie danych i jeżeli któryś rekord się mieści w aktualnym dniu i godzinie to jest wyświetlany.

Chyba wiecie o co chodzi... ale kto mi pomoże to zrobić...
Hacker
hmmm... Czy chcesz wyświetlać tekst co tydzień tj. (zgodnie z przykładem) w każdy poniedziałek od 21 do 22?? jeżeli tak to
  1. <?php
  2. $q = 'SELECT * FROM cośtam WHERE dzien='.date('w').' AND godzina<='.date('G').' AND godzina2>='.date('G');
  3. ?>
jeżeli tytko raz to
  1. SELECT *
  2. FROM cośtam WHERE time<=NOW() AND time1>=NOW()
Domin
Chcem wyświetlać tekst co tydzień, o tej samej porze. Tylko że te teskty są różne i będą różnie ale zawsze będą wyświetlane tego samego dnia tygodnia o tej samej porze...
Ale trzeba jakoś sprawdzić aktualną datę i godzinę i to jakoś połączyć, tylko jak.
maciejkiner
Witam

Ja to robie mniej wiecej tak. Date bierzaca pobieram jako $d=date("YmdHis"). W bazie trzymalbym nastepujace pola czas_start i czas_koniec o wartosciach np
20051211200000 i 20051211213000 co okreslaloby godzine poczatkowa na 20:00 11 grudnia a koncowa na 21:30. I teraz wystarczy zrobic:

Kod
SELECT * FROM pozdrowienia WHERE czas_start>=$d AND czas_koniec<$d


I to wszystko. Czesto wykorzystuje to rozwiazanie i zawsze dziala, wiec tu tez powninno zadzialac smile.gif

EDIT: Nie zawuwazylem, ze co tydzien to samo, to bym pobieral:
date("wHis") i w bazie tez zapisywal w "wHis" (moze jedynie bym konwertowal niedziele z 0 na 7 bo nie mam do tego 0 zaufania winksmiley.jpg ). Reszta koncepcji bez zmian.

pzdr
maciejkiner
Domin
Cześć!

Skrypt mam już gotowy, jednak mam pewien problem... Mianowicie mimo iż w bazie danych są wprowadzone audycje, skrypt wyświetla, że nie ma nic w ramówce, tak jak by nic nie było wprowadzone, ale nawet jak by nie było nic wprowadzone to powininien wyświetlać że gra Autopilot. Chciałbym też, aby skrypt wyświetlał ramókę na cały tydzień, a on wyświetla tylko na dzień dzisiejszy od godziny która teraz jest, ewentualnie na jutro. A jak zrobić żeby wyświetlał coś takiego:

Poniedziałek:
godz. 00:00-01:00 - Dj Domin - Techno
godz. 01:00-02:00 - Dj Pamel - Pop
godz. 02:00-03:00 - Autopilot - Dobra muza
...
godz. 23:00-24:00 - Dj Domin - Pop
itd.

Wtorek:
......
i tak aż do niedzieli.

Oczywiscie wszystko jest umieszczone bazie danych, a tam gdzie nic nie psize automatycznie powinien wyświetlać sie autopilot

Ponizej umieszczam skrypt odpowiedzialny za wyświetlanie, kto wie jak rozwiązać ten problem?? Co trzeba zmienić??

  1. <?php
  2. global $ile, $dzien;
  3.  
  4. //okreslamy date i godziny by korzystac z bazy danych
  5.  
  6. $dzisiaj=strtolower(date("l"));
  7. $jutro_data=mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
  8. $jutro=strtolower(date("l",$jutro_data));
  9. $godzina=date("H");
  10.  
  11. //okreslamy czy wyciagac z bazy puste pola (czy jest autopilot)
  12.  
  13. if($ust['autopilot']!="1")
  14. {
  15. $wyciag="AND `dj`!='' AND `audycja`!=''";
  16. }
  17. else
  18. {
  19. $wyciag="";
  20. }
  21.  
  22. //na jaki dzień? na dzisiaj czy na jutro? wszystko czy tylko na najbliższe godziny?
  23.  
  24. if($dzien=="jutro")
  25. {
  26. $dzien=$jutro;
  27. $godzina="00";
  28. }
  29. else
  30. {
  31. $dzien=$dzisiaj;
  32.  
  33. if($ile=="wiecej")
  34. {
  35. $ile="";
  36. }
  37. else
  38. {
  39. $ile="LIMIT 0, 4";
  40. }
  41.  
  42. }
  43.  
  44.  
  45. $query = "SELECT * FROM ramowka_$dzien WHERE `godzina`>='$godzina' " . $wyciag . $ile;
  46.  
  47. if($result = @mysql_query($query))
  48. {
  49. while($row = mysql_fetch_array($result))
  50. {
  51. $godz = $row[0];
  52. $dj = $row[1];
  53. $audycja = $row[2];
  54. $godzi = $godz+1;
  55.  
  56. if($ust['autopilot']=="1")
  57. {
  58. if(!$dj)
  59. {
  60. $dj=$ust['autopilot_nazwa'];
  61. }
  62. if(!$audycja)
  63. {
  64. $audycja=$ust['autopilot_audycja'];
  65. }
  66. }
  67. //wyswietlamy biggrin.gif
  68. print($godz . ':00 - ' . $godzi . ':00<br />' . $audycja . ' prowadzi: ' . $dj . '<br />');
  69. }
  70. }
  71. else
  72. {
  73. print('Aktualnie nie mamy nic w ramówce!!');
  74. }
  75.  
  76. ?>
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.