Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP/SQL] Problem z warunkiem IF
oi.
post
Post #1





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


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 ?
Go to the top of the page
+Quote Post
rafalp
post
Post #2





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


A masz gdzieś w ogóle wysłanie zapytania do bazy? (powinno się znaleść po linijce 7)
mysql_query($pyt, $połączenie)

Ten post edytował rafalp 27.06.2008, 11:42:07
Go to the top of the page
+Quote Post
oi.
post
Post #3





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


Jakie zapytanie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Przecież wspomniana przez ciebie funkcja jest w linijce 7 wiec nie powtarzam jej ponownie.
Go to the top of the page
+Quote Post
rafalp
post
Post #4





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


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

Ten post edytował rafalp 27.06.2008, 12:19:45
Go to the top of the page
+Quote Post
nevt
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


  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.
Go to the top of the page
+Quote Post
rafalp
post
Post #6





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


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





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


Czas pochodzi z funkcji time ()

  1. <?php
  2. $czas = time();
  3. $time = $czas - $spam;
  4. ?>
Go to the top of the page
+Quote Post
nevt
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


wiem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) - ręka mi niechcący spadła na ENTER i zaraz to poprawiłem ... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
rzeczywistym powodem problemów jest odwołanie do pola `time` bez `` - słówko TIME jest zastrzeżone w MySQL ...
Go to the top of the page
+Quote Post
rafalp
post
Post #9





Grupa: Zarejestrowani
Postów: 224
Pomógł: 18
Dołączył: 4.02.2003
Skąd: Częstochowa

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


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.

Ten post edytował rafalp 27.06.2008, 12:54:17
Go to the top of the page
+Quote Post
oi.
post
Post #10





Grupa: Zarejestrowani
Postów: 145
Pomógł: 1
Dołączył: 12.07.2006

Ostrzeżenie: (10%)
X----


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?

Ten post edytował oi. 27.06.2008, 13:55:09
Go to the top of the page
+Quote Post

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: 15.09.2025 - 04:35