Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Sprawdzanie czy rekord jest w bazie
Forum PHP.pl > Forum > Przedszkole
redelek
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 ?
porady-it.pl
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. ?>
redelek
Nie zapytanie jest dobre i ładnie zwraca to co chcę, tylko jakiś problem jest z tym if
piotrooo89
w zmiennej $M_TABELA i $ip masz coś?
redelek
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
piotrooo89
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. ?>
redelek
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
kefirek
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. ?>
piotrooo89
  1. <?php
  2. "SELECT COUNT(*) FROM $M_TABELA WHERE adres_ip='".$ip."'"
  3. ?>
redelek
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. ?>
piotrooo89
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. ?>
redelek
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ę
piotrooo89
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. ?>
redelek
Super dzięki smile.gif
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.