Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]sprawdzanie i porównywanie wartośći
Forum PHP.pl > Forum > Przedszkole
MnicH.
Witam,
znowu ja. Mam problem. Napisany mam kodzik:
  1. <?php
  2.  
  3. mysql_connect("localhost", "root", "");
  4. mysql_select_db ("testy2");
  5.  
  6. $data = '13-01-2009';
  7. $data2 = '13-01-2009';
  8.  
  9. $zapytanie = "SELECT * FROM pokoje WHERE pokoj=1";
  10. $rezultat = mysql_query($zapytanie);
  11. $pok1 = mysql_fetch_array($rezultat);
  12.  
  13. $przyjazdy = $pok1['przyjazdy'];
  14. $wyjazdy = $pok1['wyjazdy'];
  15.  
  16. $room1a = explode("#", $przyjazdy);
  17. $room1b = explode("#", $wyjazdy);
  18.  
  19. for($i=0;$i<count($przyjazdy);$i++){
  20. if(($data >= $room1a[$i])){
  21. for($j=0;$j<count($wyjazdy);$j++){
  22. if(($data2 >= $room1b[$j])){
  23.  
  24.  
  25. for($ii=0;$ii<count($przyjazdy);$ii++){
  26. if(($data >= $room1b[$ii])){
  27. for($j=0;$jj<count($wyjazdy);$jj++){
  28. if(($data2 <= $room1a[$jj])){
  29. echo'Pokój wolny. <a href="#">Rezerwacja</a><br>';
  30. }else{ echo 'W tym terminie pokój zajęty4!<br>'; }
  31. }
  32. }else{ echo 'W tym terminie pokój zajęty3!<br>'; }
  33. }
  34.  
  35.  
  36.  
  37. }else{ echo 'W tym terminie pokój zajęty2!<br>'; }
  38. }
  39. }else{ echo 'W tym terminie pokój zajęty1!<br>'; }
  40. }
  41.  
  42. ?>


I do tego baza danych: http://wklej.to/XWI2

Skrypt ma za zadanie sprawdzić czy w bazie, w kolumnie dojazdy i wyjazdy nie ma dat które są w zmiennych $data i $data2.

Problem polega na tym że funkcja if nie przepuszcza wartości ze zmiennej $data = '13-01-2009'; mimo iż w bazie nie ma takiej wartości. Dalej skrypt miał sprawdzać czy daty nie nachodzą na siebie. Ale to też nie chce działać. Zwraca złe wartości.
Czyli w bazie są daty:
dojazdy: 11-01-2009 14-01-2009 20-01-2009
wyjazdy: 12-01-2009 16-01-2009 22-01-2009

Czyli data 13-01-2009 powinna być uznana że nie ma jej w bazie. Ale tak nie jest.
Tak samo jeśli data jest np: $data = 16-01-2009 a $data2 = 21-01-2009 ma rozpoznać że styka się z datą w bazie i zabronić dalszy dostęp.

Co tu jest źle?
sannin
Ja bym to zamienił na ilość dni które upłynęły od epoki uniksowej
http://pl.php.net/time

  1. <?php
  2. $dataExplode = explode('-', '17-02-2009');
  3. $timeStamp = mktime (1, 0, 0, $dataExplode[1], $dataExplode[0], $dataExplode[2]);
  4. $date = floor($timeStamp/86400); // ilość dni od 1 stycznia 1970 00:00:00
  5. ?>

teraz możesz to porównywać w if
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.