Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] jeśli zakres dat pomiędzy podanymi
Forum PHP.pl > Forum > Przedszkole
dentopolis
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. }
wolguy
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
kapslokk
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
dentopolis
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.  
nospor
var_dump($dzisiaj);
var_dump($urodziny);
var_dump($wkrotce);

I pokaz co dokladnie to zwraca
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.