Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Sprawdzanie czy rekord jest w bazie
redelek
post
Post #1





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cześć,

Dziś napotkałem na mały problemik, tak wygląda mój skrypt

  1. <?php
  2. if ($opcja=="ban_ip") {
  3.    
  4.    $ip=$_POST['ip'];
  5.    $opis=$_POST['opis'];
  6.    $komunikat=$_POST['komunikat'];
  7.    //echo $ip.'<br />';
  8.    //echo $opis.'<br />';
  9.    //echo $komunikat.'<br />';
  10.    polacz_db();
  11.    $zapytanie2 = mysql_query("SELECT * FROM $M_TABELA WHERE `adres_ip`=$ip");
  12.    if (mysql_num_rows($zapytanie2)==1){
  13.        echo "Taki adres IP jest w bazie wystarczy go zablokować";
  14.        echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  15.        } else {
  16.        echo "IP dodany do bazy<br />";
  17.        $zapytanie = mysql_query("INSERT INTO $M_TABELA VALUES ('', '$ip', NOW(), '$opis', '$komunikat', 1)") or die (mysql_error());
  18.        echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  19.    }
  20. }
  21. ?>


Robiłem tak zawsze i działało dobrze
  1. <?php
  2. if (mysql_num_rows($zapytanie2)==1){ // LINIJKA 118
  3.        echo "Taki adres IP jest w bazie wystarczy go zablokować";
  4.        echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  5.        } else {
  6.        echo "IP dodany do bazy<br />";
  7.        $zapytanie = mysql_query("INSERT INTO $M_TABELA VALUES ('', '$ip', NOW(), '$opis', '$komunikat', 1)") or die (mysql_error());
  8.        echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  9.    }
  10. ?>


A tu dziś komunikat,

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in E:\WebServ\httpd\TESTY-MODULOW\ban_ip_addres\dd.php on line 118

Dlaczego tak się stało i o co mu chodzi. Skrypt ma za zadanie sprawdzić czy dany adres IP jest w bazie, jeśli jest to mamy komunikat, jeśli nie ma do dodajemy go do bazy.
Możecie mi pomóc ?


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
porady-it.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 89
Pomógł: 20
Dołączył: 13.05.2007
Skąd: Warszawa

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


Może to jest błędem:

  1. <?php
  2. mysql_query("SELECT * FROM $M_TABELA WHERE `adres_ip`=$ip");
  3. ?>


a spróbuj tak:

  1. <?php
  2. mysql_query("SELECT * FROM $M_TABELA WHERE `adres_ip`='{$ip}' ");
  3. ?>


--------------------
Kurs Video PHP i MySQL, porady-it.pl - gotowe rozwiązania dla webmasterów
Go to the top of the page
+Quote Post
redelek
post
Post #3





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Nie zapytanie jest dobre i ładnie zwraca to co chcę, tylko jakiś problem jest z tym if


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
piotrooo89
post
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




w zmiennej $M_TABELA i $ip masz coś?


--------------------
Go to the top of the page
+Quote Post
redelek
post
Post #5





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cytat(piotrooo89 @ 28.04.2009, 07:20:35 ) *
w zmiennej $M_TABELA i $ip masz coś?


Tak jak zrobię sobie echo SELECTA to mam tak

  1. SELECT * FROM db_ban_ip WHERE `adres_ip`=127.0.0.1


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
piotrooo89
post
Post #6


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a spróbuj tak:

  1. <?php
  2. $zapytanie2 = mysql_query("SELECT COUNT(*) FROM $M_TABELA WHERE adres_ip=$ip") or die (mysql_error());
  3. if (mysql_result($zapytanie2, 0)==1)
  4. {
  5.    echo "Taki adres IP jest w bazie wystarczy go zablokować";
  6.    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  7. }
  8. else
  9. {
  10.    echo "IP dodany do bazy<br />";
  11.    $zapytanie = mysql_query("INSERT INTO $M_TABELA VALUES ('', '$ip', NOW(), '$opis', '$komunikat', 1)") or die (mysql_error());
  12.    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  13. }
  14. ?>


--------------------
Go to the top of the page
+Quote Post
redelek
post
Post #7





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Jak dodaję adres IP który istnieje zwraca mi

Something is wrong in your syntax obok '.0.1' w linii 1

A jeśli dodaję nowy to zwraca

Something is wrong in your syntax obok '.1.230' w linii 1

W obu przypadkach nie dodaje IP sad.gif


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
kefirek
post
Post #8





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


A zobacz tak
  1. <?php
  2. if ($opcja=="ban_ip") {
  3.  
  4.   $ip=$_POST['ip'];
  5.   $opis=$_POST['opis'];
  6.   $komunikat=$_POST['komunikat'];
  7.   //echo $ip.'<br />';
  8.   //echo $opis.'<br />';
  9.   //echo $komunikat.'<br />';
  10.   polacz_db();
  11.   $zapytanie2 = mysql_query("SELECT * FROM $M_TABELA WHERE `adres_ip`=".$ip."");
  12.   if (mysql_num_rows($zapytanie2) != 0 ){
  13.       echo "Taki adres IP jest w bazie wystarczy go zablokować";
  14.       echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  15.       } else {
  16.       echo "IP dodany do bazy<br />";
  17.       $zapytanie = mysql_query("INSERT INTO $M_TABELA VALUES ('', '$ip', NOW(), '$opis', '$komunikat', 1)") or die (mysql_error());
  18.       echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  19.   }
  20. }
  21. ?>
Go to the top of the page
+Quote Post
piotrooo89
post
Post #9


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  1. <?php
  2. "SELECT COUNT(*) FROM $M_TABELA WHERE adres_ip='".$ip."'"
  3. ?>


--------------------
Go to the top of the page
+Quote Post
redelek
post
Post #10





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Teraz dodaje mi za każdym razem czy jest ip czy go nie ma. komunikat o błędzie ten sam

  1. <?php
  2. if ($opcja=="ban_ip") {
  3.    
  4.    $ip=$_POST['ip'];
  5.    $opis=$_POST['opis'];
  6.    $komunikat=$_POST['komunikat'];
  7.    //echo $ip.'<br />';
  8.    //echo $opis.'<br />';
  9.    //echo $komunikat.'<br />';
  10.    polacz_db();
  11.    $zapytanie2 = mysql_query("SELECT COUNT(*) FROM $M_TABELA WHERE adres_ip=".$ip."");
  12.    
  13.  if (mysql_num_rows($zapytanie2) != 0 ){
  14.      echo "Taki adres IP jest w bazie wystarczy go zablokować";
  15.      echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  16.      } else {
  17.      echo "IP dodany do bazy<br />";
  18.      $zapytanie = mysql_query("INSERT INTO $M_TABELA VALUES ('', '$ip', NOW(), '$opis', '$komunikat', 1)") or die (mysql_error());
  19.      echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  20.  }
  21.  
  22.  
  23. }
  24. ?>


Ten post edytował redelek 28.04.2009, 08:50:59


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
piotrooo89
post
Post #11


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




coś się tak uparł na to mysql_num_rows. toż to nie wydajne jak cholera... no ale jak chcesz.

tak spróbuj musi działać.

  1. <?php
  2. $zapytanie2 = mysql_query("SELECT * FROM $M_TABELA WHERE adres_ip='".$ip."'");
  3.  
  4. if (mysql_num_rows($zapytanie2) != 0 )
  5. {
  6.    echo "Taki adres IP jest w bazie wystarczy go zablokować";
  7.    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  8. }
  9. else
  10. {
  11.    echo "IP dodany do bazy<br />";
  12.    $zapytanie = mysql_query("INSERT INTO $M_TABELA VALUES ('', '$ip', NOW(), '$opis', '$komunikat', 1)") or die (mysql_error());
  13.    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  14. }
  15. ?>


--------------------
Go to the top of the page
+Quote Post
redelek
post
Post #12





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Cytat(piotrooo89 @ 28.04.2009, 07:54:23 ) *
coś się tak uparł na to mysql_num_rows. toż to nie wydajne jak cholera... no ale jak chcesz.


Super działa i nie ma błędu . Ja jestem otwarty. Podpowiesz mi jak można inaczej sprawdzić czy rekord jest w bazie ?
Będę bardzo zobowiązany za inną wiedzę


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
piotrooo89
post
Post #13


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




lepiej wszelkie liczenia przerzucić na serwer SQL, niż katować nimi PHP.

  1. <?php
  2. $zapytanie2 = mysql_query("SELECT COUNT(*) FROM $M_TABELA WHERE adres_ip='".$ip."'");
  3.  
  4. if (mysql_result($zapytanie2, 0) == 1)
  5. {
  6.    echo "Taki adres IP jest w bazie wystarczy go zablokować";
  7.    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  8. }
  9. else
  10. {
  11.    echo "IP dodany do bazy<br />";
  12.    $zapytanie = mysql_query("INSERT INTO $M_TABELA VALUES ('', '$ip', NOW(), '$opis', '$komunikat', 1)") or die (mysql_error());
  13.    echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=dd.php\">";
  14. }
  15. ?>


--------------------
Go to the top of the page
+Quote Post
redelek
post
Post #14





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Super dzięki smile.gif


--------------------
Pozdrawiam
Piotrek R
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: 21.08.2025 - 22:50