Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Porównywanie daty, a jeśli wychodzi fałsz to zmień rekord
-Xort-
post
Post #1





Goście







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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Ar2r
post
Post #2





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Jakiego typu jest pole data_vip? Czy to varchar?
Go to the top of the page
+Quote Post
-Xort-
post
Post #3





Goście







Data oczywiście.
Go to the top of the page
+Quote Post
Ar2r
post
Post #4





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


To skąd się wzięły '.' w dacie? Przecież standardowym rozdzielnikiem jest '-'.
Go to the top of the page
+Quote Post
-Xort-
post
Post #5





Goście







Oczywiście jest tam myślnik- mój błąd w przepisywaniu.
Go to the top of the page
+Quote Post
-gosc-
post
Post #6





Goście







a nie powinieneś mieć
current_date < $_data

zamiast
current_date < $data
?
Go to the top of the page
+Quote Post
-Xort-
post
Post #7





Goście







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ć? :/
Go to the top of the page
+Quote Post
Ar2r
post
Post #8





Grupa: Zarejestrowani
Postów: 140
Pomógł: 16
Dołączył: 12.06.2002
Skąd: Kielce

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


Skoro zwracasz wyniki w tablicy asocjacyjnej warunek powinien wyglądać następująco
  1. <?php
  2. if (current_date<$_data['data_vip'])
  3. ?>
Go to the top of the page
+Quote Post
Maxik
post
Post #9





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Rada: zrób to timestampem zamiast zwykłym date.


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
-Xort-
post
Post #10





Goście







@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. ?>
Go to the top of the page
+Quote Post
-Xort-
post
Post #11





Goście







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.
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 Aktualny czas: 22.08.2025 - 04:11