Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] jeśli zakres dat pomiędzy podanymi
dentopolis
post 31.03.2017, 13:40:20
Post #1





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


mam dzisiejszą datę:
  1. $dzisiaj = date("Y-m-d");


znam datę urodzin:
  1. $date=$row["urodziny"];
  2. $urodziny=date("d-m-Y", strtotime($date));


znam datę większą o 30 dni:
  1. $wkrotce = date('d-m-Y', strtotime("+30 days", strtotime($dzisiaj)));
  2. echo $wkrotce;


próbuję stworzyć pętlę która będzie wykonywana jeśli zbliża się data urodzin czyli $urodziny > $dzisiaj < $wkrotce
ale jest jakiś błąd. teraz kod nie uwzględnia tego żeby pozbyć się roku z daty urodzin.

  1. $sql = "SELECT * FROM pacjenci";
  2. $result = $conn->query($sql);
  3.  
  4. if ($result->num_rows > 0) {
  5. while($row = $result->fetch_assoc()) {
  6.  
  7. $dzisiaj = date("Y-m-d");
  8. $imie=$row["imie"];
  9. $nazwisko=$row["nazwisko"];
  10. $telefon=$row["telefon1"];
  11. $pesel=$row["pesel"];
  12.  
  13. $date=$row["urodziny"];
  14. $urodziny=date("d-m-Y", strtotime($date));
  15.  
  16. $wkrotce = date('d-m-Y', strtotime("+30 days", strtotime($dzisiaj)));
  17. echo $wkrotce;
  18.  
  19. if ($urodziny > $dzisiaj || $dzisiaj < $wkrotce) {
  20.  
  21. echo "<tr>";
  22. echo "<td align='center'>";
  23. echo $imie;
  24. echo " ";
  25. echo $nazwisko;
  26. echo "</td>";
  27. echo "<td align='center'>";
  28. echo "$urodziny";
  29. echo "</td>";
  30. echo "<td align='center'>";
  31. echo $telefon;
  32. echo "</td>";
  33. echo "</tr>";
  34. }
  35. }
  36. } else {
  37. echo "";
  38. }


Ten post edytował dentopolis 31.03.2017, 13:45:15
Go to the top of the page
+Quote Post
wolguy
post 31.03.2017, 13:49:43
Post #2





Grupa: Zarejestrowani
Postów: 219
Pomógł: 10
Dołączył: 9.01.2005

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


błąd jest w warunku: zamiast "lub" powinno być "oraz" i sprawdzana jest nie ta zmienna w drugim warunku: $urodziny > $dzisiaj and $urodziny < $wkrótce

Ten post edytował wolguy 31.03.2017, 13:58:05
Go to the top of the page
+Quote Post
kapslokk
post 31.03.2017, 13:58:35
Post #3





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Tutaj jest wiele błędów. Choćby to, że daty są porównywane jako stringi w różnych formatach. Jeśli by były zawsze w formacie Y-m-d to (chyba) by działały, ale tak jak teraz to w ogole nie ma sensu.

http://php.net/manual/en/class.datetime.php
Go to the top of the page
+Quote Post
dentopolis
post 3.04.2017, 11:32:17
Post #4





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


no dobrze, obecnie trzy daty są w tym samym formacie, więc jak powinna wyglądać pętla?

  1. $dzisiaj = date("Y-m-d");
  2. $urodziny=$row["urodziny"];
  3. $wkrotce = date('Y-m-d', strtotime("+30 days", strtotime($dzisiaj)));


  1. if ($urodziny > $dzisiaj && $urodziny < $wkrotce) {
  2.  
  3. echo "tabela......";
  4.  
  5.  
Go to the top of the page
+Quote Post
nospor
post 3.04.2017, 15:49:38
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




var_dump($dzisiaj);
var_dump($urodziny);
var_dump($wkrotce);

I pokaz co dokladnie to zwraca


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 18.05.2025 - 06:53