Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Porównywanie daty
Forum PHP.pl > Forum > Przedszkole
Xort
Witam.
Mam więc tabelę w której są m.in. pola "vip" oraz "data_vip". Mam też skrypt który jeśli użytkownik ma vipa (wartość > 1) to następnie sprawdza czy dzisiejsza data jest datą "mniejszą" od tej z pola "data_vip". Jeśli jest to prawdą to działa dalej a jeżeli nie to zmienia wartość "vip" na 0.
I tu pojawia się problem.
Oto fragmenty mojego kodu:
  1. <?php
  2. $data = mysql_query("select data_vip from auth where `name`='$uzytkownik'");
  3. $_data = mysql_fetch_assoc($data);
  4. if (current_date<$data){
  5. reszta kodu
  6. }else{
  7. mysql_query("update auth set vip = 0 where `name`='$uzytkownik'");
  8. reszta kodu}
  9. ?>

Problem polega na tym że kod ten poprostu nie dopuszcza do wiadomości tego że może wyjść prawda (nie wykonuje pierwszego polecenia) mimo tego że data_vip = 2008.08.21 a dziś jak wiemy jest 2008.08.15.
Jestem początkujący w PHP i MySQL ale wydaje mi się że błąd powoduje sposób wywołania rekordu. Możecie mi wyjaśnić mój błąd?
Ar2r
Jakiego typu jest pole data_vip? Czy to varchar?
Xort
Data oczywiście.
Ar2r
To skąd się wzięły '.' w dacie? Przecież standardowym rozdzielnikiem jest '-'.
Xort
Oczywiście jest tam myślnik- mój błąd w przepisywaniu.
gosc
a nie powinieneś mieć
current_date < $_data

zamiast
current_date < $data
?
Xort
Wtedy dostaję wiadomość:
  1. <?php
  2. Vipstatus = Jesteś VIPem
  3. ?>

Mimo tego że:
  1. <?php
  2. Twój VIP skończy się 2008-08-02
  3. ?>

Co robić? :/
Ar2r
Skoro zwracasz wyniki w tablicy asocjacyjnej warunek powinien wyglądać następująco
  1. <?php
  2. if (current_date<$_data['data_vip'])
  3. ?>
Maxik
Rada: zrób to timestampem zamiast zwykłym date.
Xort
@AR2R
Niestety nie działa :/
@Maxik
Zrobiłem timestamp ale tym razem zawsze wychodzi prawda(czyli np.
"
  1. <?php
  2. Vipstatus = Jesteś VIPem
  3. Twój VIP skończy się 2008-08-10
  4. ?>
")... Kod:
  1. <?php
  2. $datae = strtotime($_data['data_vip']);
  3. $_date = date("m-d-Y");
  4. $current_date = strtotime($_date);
  5. if ($current_date<$datae){
  6. ?>
Xort
Dobra już mam ; D. Zły format daty dałem... Zamiast date(Y-m-d) to (d-m-Y)... Taki prosty błąd. Ale już wszystko działa więc dzięki ludzie ; D.
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.