проверка IP на повторы

afterburner

Новичок
Всем привет.
Подскажите в каком направлении копать ?
есть простая таблица с названиями книг и ip адресами пользователей которые оставляют комментарии.

Без-имени-1.jpg


нужно проверить ip адреса. если пользователь уже оставлял комментарий выделить его красным например, если 2 и более раз зелёным и т.д.

К базе подключился. Дальше foreach думал использовать. Или в запросе можно отфильтровать что-то ?

Код:
    $db = mysql_connect("localhost","root","root") OR DIE ('Ошибка подключения');
    mysql_select_db("books", $db);
    $query = mysql_query("SELECT ipaddress FROM book_comments, $db);
    $res = mysql_fetch_array($query);
 
Последнее редактирование:

Sufir

Я не волшебник, я только учусь
А проблема-то в чём? Подсчитать кол-во комментариев или условный вывод сделать? И для чего именно "foreach думал использовать"?
 

afterburner

Новичок
зайти в каждую книгу ( name ) и проверить ip на повторы.
foreach - думал по массиву пройтись и каждую книгу проверить. но это я так догадываюсь )
я только погружаюсь в php и бд.


наверно условный вывод т.к. количество не важно.
 

fixxxer

К.О.
Партнер клуба
я только погружаюсь в php и бд.
Тогда начни с простого - написать sql-запрос, который выведет для каждого из ip-адресов, имеющихся в базе, сколько раз он встречается.

Если не знаешь как - читай в документации по mysql про group by и count.
 

afterburner

Новичок
я читал об этом (вчера))) - но c 1 ip можно же оставить кометарий и в 1 книге и во 2й . а у меня все ip в одной таблице book_comments.
group by и count могут выборку сделать для name1 , name2 и т.д.
 
Последнее редактирование:

afterburner

Новичок
так бы я сделал :

но тогда ip пользователя будет выделятся даже если он оставлял комментарии к разным книгам. а мне нужна проверка в каждой категории name => 1, name => 2 и т.д.
 
Последнее редактирование:

afterburner

Новичок
Отлично спасибо !
И еще вопросик: допустим я проверил что ip повторяется 2 раза. А если мне нужно еще проверить на 3 , 4 , 5 и т.д., нужно новые запросы делать под каждое количество повторений ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
а если они у тебя могут повторяться бесконечно, запросы ты тоже бесконечно делать будешь?
 

afterburner

Новичок
а если они у тебя могут повторяться бесконечно, запросы ты тоже бесконечно делать будешь?
Нет ) планировал до 5, а все что больше выделять как 5й повтор. Мне нужно еще классы добавить разные к каждому повтору
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Да, отличная мысль. Иди уже читай про группировки и т.д.
 

afterburner

Новичок
вот такой запрос вырисовался , но это для одной (name). поправьте плиз, чтобы в каждой name проверяло независимо.

Код:
$db = mysql_connect("localhost","root","root") OR DIE ('Ошибка подключения');
mysql_select_db("books", $db);
$query = mysql_query(SELECT ipaddress, count(ipaddress) nb FROM comments WHERE name=1 GROUP BY ipaddress HAVING nb>1, $db);
$res = mysql_fetch_array($query);

if ($comment['User']['ipaddress'] == $res['ipaddress'])
echo 'ваш ip повторяется';
else
echo 'ваш ip уникален';
 

afterburner

Новичок
чтобы повтор ip проверялся в каждой name независимо,
если пользователь написал коммент в name1 , то чтобы в name2 не "светилось" что его ip повторяется.
толко если пользователь написал 2 коммента с одного ip в одном name - отображать повтор.
код подправил ещё вот так.

Код:
SELECT ipaddress, count(ipaddress) nb FROM comments GROUP BY name HAVING nb>1
 
Сверху