Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Zagadnienie z datą związane
andrzejlechniak
post 22.08.2019, 19:51:41
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

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


Cześć,

Piszę funkcję wyświetlającą informacje o określonej porze i wyskakuje mi błąd, tzn. jak chcę komunikat np. o 21:03 to dalej mam info, które powinno wyświetlać się od 08 rano do 20 lub 'błąd'.
mam taki oto kod:

  1. function pora_dnia()
  2. {
  3. $godzina = date('H:i');
  4. if(($godzina >= '08:00') && ($godzina <= '19:59'))
  5. {
  6. echo 'Komunikat od 08:00 rano do 20:00 wieczorem';
  7. }
  8. else if(($godzina >= '20:00') && ($godzina <= '07:59'))
  9. {
  10. echo 'Komunikat od 20:00 wieczorem do 08:00 rano';
  11. }
  12. else
  13. {
  14. echo 'Błąd';
  15. }
  16. }


Co tu jest nie tak?
Proszę o pomoc
Go to the top of the page
+Quote Post
sazian
post 22.08.2019, 20:08:18
Post #2





Grupa: Zarejestrowani
Postów: 1 043
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

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


Operatory <= >= działają na liczbach, godzina w formacie H:i to string.
Przelicz ten czas na minuty i wtedy porównuj.
  1. $godzina = date('H')*60+date('i');
Go to the top of the page
+Quote Post
dublinka
post 23.08.2019, 15:04:00
Post #3





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


druga sprawa to to ze bedzie blad bo warunek 2 sie nie wykona.

Wiec tak jak masz tylko dwie mozliwosci:

  1. <?php
  2.  
  3. function pora_dnia()
  4. {
  5. $godzina = date('H');
  6.  
  7.  
  8. if(($godzina >= '08') && ($godzina <= '19'))
  9. {
  10. echo 'Komunikat od 08:00 rano do 20:00 wieczorem';
  11. }
  12. else
  13. {
  14. echo 'Komunikat od 20:00 wieczorem do 08:00 rano';
  15. }
  16.  
  17. }
  18.  
  19. pora_dnia()
  20.  
  21. ?>


Albo z pomocą tablic. wtedy mozesz wiecej.

  1. <?php
  2.  
  3. function Hours($hour, $error){
  4.  
  5. $tb1 = array('20','21','22','23','00','01','02','03','04','05','06','07');
  6. $tb2 = array('08','09','10','11','12','13','14','15','16','17','18','19');
  7.  
  8.  
  9. if( in_array($hour, $tb1) ) {
  10.  
  11. return 'jest pomiedzy 20-07:59';
  12.  
  13. }elseif( in_array($hour, $tb2) ) {
  14.  
  15. return 'jest pomiedzy 8-20';
  16.  
  17. }else {
  18. return $error;
  19. }
  20. }
  21.  
  22. $get = Hours(date('H'), 'error');
  23.  
  24. print $get;
  25. ?>


wtedy mozes zrobic wiecej tablic z godzinami i wiecej warunkow.

Ten post edytował dublinka 23.08.2019, 15:36:00


--------------------
Go to the top of the page
+Quote Post
andrzejlechniak
post 24.08.2019, 14:08:19
Post #4





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

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


Hej, generalnie działa i DZIĘKI, ale mam małe drobne 2 pytanka:
- jak dostosować, aby wczytywał się plik .css?
Czy w poniższym fragmencie:
  1. if( in_array($hour, $tb1) ) {
  2.  
  3. return 'jest pomiedzy 20-07:59';
  4.  
  5. }


Zmienić na:
  1. if( in_array($hour, $tb1) ) {
  2.  
  3. return <link type="text/css" rel="stylesheet" href="style/style.css" />;
  4.  
  5. }


- jak zastosować taki kod do pór roku - chodzi mi o to, aby np. od 23.06 do 21.09 był komunikat o tym, że to LATO, a 21.09 że JESIEŃ. Myślę, że także można w tablicach.
Go to the top of the page
+Quote Post
dublinka
post 25.08.2019, 12:00:57
Post #5





Grupa: Zarejestrowani
Postów: 594
Pomógł: 66
Dołączył: 22.02.2008
Skąd: Dublin

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


  1. <?php
  2.  
  3. function poryRoku($dzisiaj, $wiosna, $lato, $jesien, $zima)
  4. {
  5.  
  6. switch(true) {
  7. case ($dzisiaj >= $wiosna && $dzisiaj < $lato):
  8.  
  9. return "<body style=\"background-color:lightgreen; color:white\">Jest wiosna</body>";
  10. break;
  11.  
  12. case ($dzisiaj >= $lato && $dzisiaj < $jesien):
  13. return "<body style=\"background-color:green; color:white\">Jest lato</body>";
  14. break;
  15.  
  16. case ($dzisiaj >= $jesien && $dzisiaj < $zima):
  17. return "<body style=\"background-color:rgb(139,0,0); color:rgb(255,255,255)\">Jest jesien</body>";
  18. break;
  19.  
  20. default:
  21. return "<body style=\"background-color:rgb(255,255,255); color:rgb(0,0,0)\">Jest zima</body>";
  22. break;
  23. }
  24.  
  25. }
  26. $get = poryRoku(time(), mktime(0,0,0, 3, 20, date('Y')), mktime(0,0,0, 6, 21, date('Y')), mktime(0,0,0, 9, 20, date('Y')), mktime(0,0,0, 12, 21, date('Y')));
  27.  
  28. echo $get;
  29.  
  30. ?>

Argumenty z funkcji przyjmuja wartosci dat:
20ty marzec
21wszy czerwiec
20ty wrzesien
21ty grudzien

Co do 1go pytania to dlaczego sam nie sprawdzisz.

Ten post edytował dublinka 25.08.2019, 12:05:55


--------------------
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 Wersja Lo-Fi Aktualny czas: 16.04.2024 - 23:15