PHP, если еще, чтобы проверить IPaddress против тех, которые хранятся в таблице - PullRequest
1 голос
/ 29 апреля 2011

У меня есть небольшой опрос и запрос, чтобы проверить, есть ли IP-адрес в таблице, чтобы узнать, проголосовал ли уже кто-то.Я уже создал таблицу, и она работает.

Мой вопрос с оператором if else не работает.Я пытаюсь сделать это

, если IP-адрес находится в таблице Показать строку еще Показать опрос

$ip=$_SERVER['REMOTE_ADDR'];

include("../db/config.php");
include("../db/opendb.php");

$result = mysql_query("SELECT * FROM Poll WHERE ip='$ip'");

if ($result==$ip) {
    echo "Thank you for voting.";
} else {
    echo "<form action=logvote.php method=post>" .
         "<input type=radio name=ans value=ans1> Answer1<br>" .
         "<input type=radio name=ans value=ans2> Answer2<br>" .
         "<input type=radio name=ans value=ans3> Answer3<br>" .
         "<input type=radio name=ans value=ans4> Answer4<br>" .
         "<input type=submit value=Submit>";

    echo "<input type=hidden name=ip value=";   
    echo "$ip>";

    echo "</form>";

 include("../db/closedb.php");

}

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 29 апреля 2011

Вы просто забыли сначала извлечь строку.Также вы можете получить необходимую информацию с простым подсчетом:

$result = mysql_query("SELECT COUNT(*) as 'count' FROM Poll WHERE ip='$ip'");
$row = mysql_fetch_assoc($result);

if ($row['count']) {
    // show string
} else {
    // show poll
}
0 голосов
/ 29 апреля 2011

mysql_query не возвращает данные напрямую, а скорее ссылается на результат.

Количество найденных строк для запроса можно получить с помощью:

$ num = mysql_numrows ($ result);

Так что вы можете проверить по:

$result = mysql_query("SELECT ip FROM Poll WHERE ip='$ip'");
if (mysql_numrows($result)) {
    // dostuff
} else {
    // do other stuff
}

// you can retrieve the ip like so:
$data = mysql_fetch_assoc($result);
$ip = $data['ip'];
0 голосов
/ 29 апреля 2011

Ваш код должен быть:

$query = mysql_query("SELECT ip FROM Poll WHERE ip='$ip'");
$info = mysql_fetch_object($query);
$result = $info->ip;

if($result == $ip)

mysql_query () возвращает ссылку, а не строку.

Кроме того, использование ip в операторе SELECT ускорит ваш код.

...