Суть задания-написать счетчик, записывающий в таблицу бд: ip, количество посещений с этого ip за все время и дату последнего посещения.
есть таблица
попытался написать сам
цикл бегает, но возникает проблема, что for'ы работают при каждой строчке таблицы, а следовательно при проверке первой строчки и не совпадении с ip пользователя он вбивает новую строчку, не думая, что дальше в таблице может существовать нужная строчка...
как систематизировать/исправить/переделать цикл?
или есть какой другой вариант?
есть таблица
Код:
CREATE TABLE `ip_count`
(
'IP' varchar(500),
`Visits` int(255),
`Last` date,
);
цикл бегает, но возникает проблема, что for'ы работают при каждой строчке таблицы, а следовательно при проверке первой строчки и не совпадении с ip пользователя он вбивает новую строчку, не думая, что дальше в таблице может существовать нужная строчка...
Код:
<?php
echo 'IP<br>';
$h_name="localhost";//имя хоста
$b_name="counter";//имя табл
$u_name="root";//имя юзера
$today = date("Y-m-d");
$link=mysql_connect($h_name, $u_name, '');//подкл к мускл
$db=mysql_select_db($b_name, $link);//подкл к бд
$ip = $_SERVER["REMOTE_ADDR"];//получаем ип
$result=mysql_query("SELECT * FROM ip_count");//вытащили объект-таблицу
do
{ $ar=mysql_fetch_array($result);
if($ar[0]==$ip && $ar[2]==$today)
{
$vis=$ar[1];
$vis++;
mysql_query("UPDATE `ip_count` SET `Visits`=$vis WHERE `IP`='$ip',`Last`=CURRENT_DATE()");//visits++
};
if($ar[0]==$ip && $ar[2]!=$today)
{
$vis=$ar[1];
$vis++;
mysql_query("UPDATE `ip_count` SET `Visits`=$vis,`Last`=CURRENT_DATE() WHERE `IP`=$ip");//visits++ last=today
};
if($ar[0]!=$ip)
{
mysql_query("INSERT INTO `ip_count` VALUES ('$ip',1,CURRENT_DATE())");//insert
};
} while ($ar!=False);
?>
или есть какой другой вариант?