Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/SQL] Problem z warunkiem IF
Forum PHP.pl > Forum > Przedszkole
oi.
Mam kod, który powinien blokowac częstsze niż założone próby dodawania TXT do bazy przez userów:
  1. <?php
  2. $spam = 600;
  3. $czas = time();
  4. $time = $czas - $spam;
  5. $ip = $_SERVER['REMOTE_ADDR'];
  6.  
  7.  $pyt = mysql_query("SELECT count(*) FROM zakaz WHERE ip='$ip' AND time > '$time'");
  8.  $p = mysql_fetch_array($pyt);
  9.  $czy_zakaz = $p['count(*)'];
  10.  
  11. if ( $czy_zakaz > 0 )
  12. { echo "Za szybko próbujesz dodać kolejne ogłoszenie. Spróbuj ponownie za kilka min
    ut "
    ; }
  13.  
  14. else { WARUNEK DODAJĄCY TREŚĆ }
  15. ?>


Niestety nie działa prawidłwo tzn przepuszcza wszystko. Próbowałem już zmieniać warunki if ( $czy_zakaz > 0 ) na = ; != itp, zamieniałem kolejność if oraz else ale bez skutku.
Gdzie tkwi błąd ?
rafalp
A masz gdzieś w ogóle wysłanie zapytania do bazy? (powinno się znaleść po linijce 7)
mysql_query($pyt, $połączenie)
oi.
Jakie zapytanie questionmark.gif Przecież wspomniana przez ciebie funkcja jest w linijce 7 wiec nie powtarzam jej ponownie.
rafalp
A kurde rzeczywiście mnie się chyba w oczy stało hehe;)

edit:
ja bym się skupił na zapytaniu i tam poszukał błędu. Powiedz czy pole "time" w tabeli jest pełnym czasem unixowym o type INT? jeśli tak to do porównania spróbuj nie użyć cudzysłowiu czyli samo: (...) AND time > $time
nevt
  1. <?php
  2. // ZAMIAST
  3. $pyt = mysql_query("SELECT count(*) FROM zakaz WHERE ip='$ip' AND time > '$time'");
  4. $p = mysql_fetch_array($pyt);
  5. $czy_zakaz = $p['count(*)'];
  6. // SPRÓBUJ
  7. $pyt = mysql_query("SELECT count(*) AS `ile` FROM `zakaz` WHERE `ip`='$ip' AND `time` > '$time'");
  8. $p = mysql_fetch_array($pyt);
  9. $czy_zakaz = $p['ile'];
  10. ?>

powodzenia.
rafalp
Cytat(nevt @ 27.06.2008, 13:24:01 ) *
  1. <?php
  2. // ZAMIAST
  3. $czy_zakaz = $p['count(*)']; //(1)
  4. // SPRÓBUJ
  5. $czy_zakaz = $p[0]; //(2)
  6. ?>

powodzenia.


Użycie (1) i (2) daje ten sam pozytywny rezultat.
oi.
Czas pochodzi z funkcji time ()

  1. <?php
  2. $czas = time();
  3. $time = $czas - $spam;
  4. ?>
nevt
wiem smile.gif - ręka mi niechcący spadła na ENTER i zaraz to poprawiłem ... smile.gif
rzeczywistym powodem problemów jest odwołanie do pola `time` bez `` - słówko TIME jest zastrzeżone w MySQL ...
rafalp
Cytat(oi. @ 27.06.2008, 13:47:26 ) *
Czas pochodzi z funkcji time ()

  1. <?php
  2. $czas = time();
  3. $time = $czas - $spam;
  4. ?>


Tak, ale ja się pytałem o pole time już zapisane gdzieś wcześniej w TABELI.
Cytat
rzeczywistym powodem problemów jest odwołanie do pola `time` bez `` - słówko TIME jest zastrzeżone w MySQL ...[/
ano chyba rzeczywiście.
oi.
Zmieniłęm zmienn ana inna nazwe i nadal zle wskazuje :-(

Doszedłem do wniosku ze nei jest błąd w IF tylko w samej zmiennej
  1. <?php
  2. $czy_zakaz = $p['count(*)'];
  3. ?>
gdy wyswieltam sam wynik pokazuje mi 0 chociaz w bazie sa dane


Sam juz nie wiem co jest Źle.

Tabela ZAKAZ ma pola id | ip | czasoumilacz
ma ktos z was wlasny skrypt tego typu?
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.