Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Kod ważny czasowo
stefan_precz
post
Post #1





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


  1. <?php
  2. include &#092;"config.php\";
  3.  
  4. $limi_czasu=900; //podajemy czas w sekundach
  5.  
  6. $zapytanie = &#092;"select * from kody_czas where kod = '\".$kod.\"'\";
  7. $wynik = mysql_query($zapytanie);
  8. $ilosc = mysql_num_rows($wynik);
  9. if ($ilosc == 0 && $ilosc[czas]<=time()) {
  10. echo &#092;"zly kod\";
  11. }
  12. elseif ($ilosc == 1) {
  13. $zapytanie1=&#092;"UPDATE kody_czas SET czas = \".(time()+$limit_czasu).\" WHERE kod = '\".$kod.\"'\";
  14. $wynik = mysql_query($zapytanie1);
  15. echo &#092;"kod jest dobry\";
  16. }
  17.  }
  18. ?>


w tym kodzie chodzi o to że ktoś podaje kod przez formularz kod jest sprawdzany i nadawany jest mu limit czasowy przekazywany przez zmienną $limit_czasu za pomocą time() no i moj problem polega na tym że jak ktoś pisze drugi raz ten kod a będzie on nada wazny to znów zostanie nadana mu poczatkowa wartość zmiennej $limit_czasu trzeba zrobić w tym zapytaniu UPDATE coś w stylu że jeśli pole czas != 0 to nie dodawaj już do niego nic Smile ale nie mam pojęcia jak to zrealizować

Ten post edytował stefan_precz 18.04.2005, 10:40:34
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




odchodząc od Twojego pytania:
Co miałeś na myśli w linijce:
if ($ilosc == 0 && $ilosc[czas]<=time()) {
przecież $ilość to liczba, nie tabela. Nie możesz zrobić $ilosc[czas]
Go to the top of the page
+Quote Post
stefan_precz
post
Post #3





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


wiem tutaj jest błąd ale zapomniałem tego poprawić, no ale nie to jest probelem tylko moje wcześniejsze pytanie
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




  1. <?php
  2.  
  3. $zapytanie1=&#092;"UPDATE kody_czas SET czas = \".(time()+$limit_czasu).\" WHERE kod = '\".$kod.\"' and czas!=0\";
  4.  
  5. ?>
Go to the top of the page
+Quote Post
stefan_precz
post
Post #5





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


loozik działa,

czyli aby sprawdzić czy czas nie został przekroczony dla danego kodu muszę zrobić
  1. <?php
  2.  
  3. $zapytanie = &#092;"select * from kody_czas where kod = '\".$kod.\"'\";
  4. $wynik = mysql_query($zapytanie);
  5. $ilosc = mysql_num_rows($wynik);
  6. if ($ilosc == 0 && $wynik[czas]<=time()) {
  7. echo &#092;"zly kod\";
  8. }
  9. elseif ($ilosc == 1) {
  10. $zapytanie1=&#092;"UPDATE kody_czas SET czas = \".(time()+$limit_czasu).\" WHERE kod = '\".$kod.\"' and czas==0\";
  11. $wynik = mysql_query($zapytanie1);
  12. echo &#092;"kod jest dobry\";
  13. }
  14.  }
  15. ?>


tylko że takie rozwiazanie cuś nie chce działać

Ten post edytował stefan_precz 18.04.2005, 15:10:07
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




nie wiem co ci nie dziala, ale napewno taki warunek jest bledny logicznie:
if ($ilosc == 0 && $wynik[czas]<=time()) {
gdyż jesli ilosć ==0 to $wynik jest pusty i napewno nie ma elemntu czas.
Jeżeli już to powinno być
if ($ilosc == 0 || $wynik['czas']<=time()) {

PS. Pamiętaj o ciapkach

edit: że już nie wspomnę że $wynik to nigdy nie będzie tablicą. Poczytaj se o mysql_query

Ten post edytował nospor 18.04.2005, 15:14:18
Go to the top of the page
+Quote Post
stefan_precz
post
Post #7





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


  1. <?php
  2. if ($ilosc == 0 || $wynik['czas']<=time()) {
  3. ?>
przy takim układzie zawsze wskazuje ze kod jest zły

Ten post edytował stefan_precz 18.04.2005, 15:15:00
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




bo $wynik to nie wynik zapytania, tylko "uchwyt" do wyniku. poczytaj se o mysql_query. Na podstawie $wynik musisz jeszcze odebrac dane np. mysql_fetch_array
Go to the top of the page
+Quote Post
stefan_precz
post
Post #9





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


  1. <?php
  2. $zapytanie = &#092;"select * from kody_czas where kod = '\".$kod.\"'\";
  3. $wynik = mysql_query($zapytanie);
  4. $sprawdz = mysql_fetch_array($wynik);
  5. $ilosc = mysql_num_rows($wynik);
  6. if ($ilosc == 0 || $sprawdz['czas']<=time()) {
  7. ?>
zrobiłem tak i to samo
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




oznacza to, że albo $ilość=0 (czyli nic nie spełnia twego zapytania) albo $sprawdz['czas']<=time(). To już nie moja wina że masz takie dane.
Daj echo $ilosc; echo $sprawdz['czas']; i zobacz co ci zwraca i przeanalizuj se to
Go to the top of the page
+Quote Post
stefan_precz
post
Post #11





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


$ilosc zwraca 1
"$sprawdz['czas']"; zwraca zawartość pola czas
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




czyli $sprawdz['czas']<=time() czyli kod jest zły, tak? to już nie moja wina (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Lecę domciu
Go to the top of the page
+Quote Post
stefan_precz
post
Post #13





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


ma porowanać czas obecny z czasem dodania i jeśli ten jest większy od tych 900 sekund przekazanych w zmiennej limit_czasu to kod nie wazny, brakuje więc w tym tego przyrówniania, a ja nie mam pojęcia jak to zapisać inaczej

Ten post edytował stefan_precz 18.04.2005, 17:08:51
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




to może tak:
if ($ilosc == 0 || $sprawdz['czas']+$limit_czasu<=time()) {//kod niewazny

nie wiem czy oto ci chodzi, bo później w update i tak zwiekszasz czas o $limit_czasu
Go to the top of the page
+Quote Post
stefan_precz
post
Post #15





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


update nie zwiększy bo jest zrobione
Kod
$zapytanie1="UPDATE kody_czas SET czas = ".(time()+$limit_czasu)." WHERE kod = '".$kod."' and czas=0";
czyli jeśli kod jest już raz ruszony to update go juz nie rusza (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jeśli chodzi o twoje rozwiązanie nada nie działa,
  1. <?php
  2.  echo &#092;"<form action=\"kod_czas.php\" method=\"post\">\";
  3.  echo &#092;"Podaj kod:<br><input name=\"kod\" type=\"text\"><br>
  4.  <input type=&#092;"submit\" value=\"Dalej>>\">
  5.  </form>&#092;";
  6.  
  7. if ($_POST['kod']) {
  8. include &#092;"config.php\";
  9.  
  10. $limit_czasu=900; //czas w sekundach
  11.  
  12. $zapytanie = &#092;"select * from kody_czas where kod = '\".$kod.\"'\";
  13. $wynik = mysql_query($zapytanie);
  14. $sprawdz = mysql_fetch_array($wynik);
  15. $ilosc = mysql_num_rows($wynik);
  16.  if ($ilosc == 0 || $sprawdz['czas']+$limit_czasu<=time()) {
  17. echo &#092;"zly kod <br>\";
  18. echo &#092;"$ilosc <br>\";
  19. echo &#092;"$sprawdz[czas]\";
  20. }
  21. elseif ($ilosc == 1) {
  22. $zapytanie1=&#092;"UPDATE kody_czas SET czas = \".(time()+$limit_czasu).\" WHERE kod = '\".$kod.\"' and czas = 0\";
  23. $wynik = mysql_query($zapytanie1);
  24. echo &#092;"kod jest dobry\";
  25. }
  26.  }
  27.  
  28.  
  29. ?>
Sprawdziłem i wiem że porblem polega na tym że jeśli kod jest nowy czyli pole czas ma wartość 0 to przy tym porównianiu zawsze go odrzuci trzeba zrobić aby kod najpier update odznaczał a potem weryfikował ale nie wiem jak to zrealizwoać gdyż kod musi być najpierw sprawdzony czy jest w bazie

Ten post edytował stefan_precz 19.04.2005, 10:16:20
Go to the top of the page
+Quote Post
nospor
post
Post #16





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




to może tak:
  1. <?php
  2.  
  3. if ($ilosc == 1 && $sprawdz['czas']==0) {
  4. $zapytanie1=&#092;"UPDATE kody_czas SET czas = \".(time()+$limit_czasu).\" WHERE kod = '\".$kod.\"' and czas = 0\";
  5. $wynik = mysql_query($zapytanie1);
  6. echo &#092;"kod jest dobry\";
  7. }
  8. else {
  9. echo &#092;"zly kod <br>\";
  10. echo &#092;"$ilosc <br>\";
  11. echo &#092;"$sprawdz[czas]\";
  12.  
  13. }
  14.  
  15.  
  16. ?>
Go to the top of the page
+Quote Post
stefan_precz
post
Post #17





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


no tak ale gdzie tutaj dalej sprawdzanie czy limit czasu dla kodu upłynął ? Poza tym jeśli kody są wazne czasowo np. przez dwa dni to ktoś kto na drugi dzień wpisze kod zostanie zablokowany przez to sprawdz['czas']==0

Ten post edytował stefan_precz 19.04.2005, 10:38:42
Go to the top of the page
+Quote Post
nospor
post
Post #18





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




ups. zapomnialem:
  1. <?php
  2.  
  3. if ($ilosc == 1 && $sprawdz['czas']==0) {
  4. $zapytanie1=&#092;"UPDATE kody_czas SET czas = \".(time()+$limit_czasu).\" WHERE kod = '\".$kod.\"' and czas = 0\";
  5. $wynik = mysql_query($zapytanie1);
  6. echo &#092;"kod jest dobry\";
  7. }
  8. elseif ($sprawdz['czas']<=time()) {
  9. echo &#092;"zly kod <br>uplynal czas\";
  10. }
  11. else
  12. {
  13. echo &#092;"zly kod <br>cos innego\";
  14. }
  15.  
  16. ?>
Go to the top of the page
+Quote Post
stefan_precz
post
Post #19





Grupa: Zarejestrowani
Postów: 134
Pomógł: 0
Dołączył: 2.01.2005

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


no cóż teraz jest tak wpisuje nowy kod działa, odznacza go po czym gdy wpisuje go ponownie zwraca błąd zły kod czyli to echo "zly kod <br>cos innego"; tutaj dalej jest to $sprawdz['czas']==0 wywaliłem to i kod działa powinien działać przez 15 minut trzeba poczekać

Ten post edytował stefan_precz 19.04.2005, 10:56:51
Go to the top of the page
+Quote Post
nospor
post
Post #20





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




dużo masz tych rekordów w tabeli? pokaż je jak możesz.
Bo albo w tabeli masz kilka rekordów o tych samych kodach, albo ci update nie działa.
No jak może ci wyskoczyć że zly kod cos innego i jednoczesnie czas=0? Musi w związku z tym bbyć więcej rekordów o tych samych kodach. No bo przecież jesli czas=0 i jest ilosc=1 to jest sprawdzane na początku.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:09