Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2009, 02:04   #1
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
Вопрос Счетчик ip с применением mysql

Помогите, сломал себе шею! Нужно написать php счетчик с использованием mysql. Счетчик срабатывает на уникальные ip адреса. Т.е, когда гость заходит на страницу, то счетчик увеличивается на 1, но если этот же пользователь зайдет на страницу второй раз, то счетчик не увеличится.
база состоит из таблицы с двумя столбцами. Один id , а второй ip_adres
Код:
<?php require_once("config.php");//тут файл с подключением к базе
	// $_SERVER[REMOTE_ADDR];
	$ip_adres=$REMOTE_ADDR;
	$result=mysql_query ("SELECT ip_adres FROM ip_user");
	 while ($row=mysql_fetch_array($result)){$row[ip_adres]} //ну тут у меня крепкий маразм попер
     if($ip_adres==$row[ip_adres]) 
	 	 {echo "000";}
	 else {$query="INSERT INTO ip_user values (0, '$ip_adres', '1')"or die ("error"); $result = mysql_query($query) or die ("error");}
echo "$REMOTE_ADDR";
Не доходит. Вот я вытянул все ip адреса $result=mysql_query ("SELECT ip_adres FROM ip_user"); А как сравнить, $REMOTE_ADDR с адресами базы?
------------------------------
Ум без разума –это беда!

Последний раз редактировалось veter_s_morya; 01.03.2009 в 02:09.
veter_s_morya вне форума Ответить с цитированием
Старый 01.03.2009, 09:25   #2
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

можно сделать поле с адресом ключевым и использовать REPLACE вместо INSERT
свободен...
wall66 вне форума Ответить с цитированием
Старый 01.03.2009, 10:29   #3
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Цитата:
использовать REPLACE вместо INSERT
А зачем?
Поправьте меня, если я ошибаюсь! $result теперь хранит массив ip адресов. По логике массив надо вытянуть и сравнить с переменной $ip_adres. Как это сделать?
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 01.03.2009, 10:43   #4
wall66
Участник клуба
 
Аватар для wall66
 
Регистрация: 04.10.2008
Сообщений: 1,485
По умолчанию

Цитата:
Сообщение от veter_s_morya Посмотреть сообщение
А зачем?
Поправьте меня, если я ошибаюсь! $result теперь хранит массив ip адресов. По логике массив надо вытянуть и сравнить с переменной $ip_adres. Как это сделать?
я всего лишь предложил заменить весь ваш код одним-единственным запросом, но если вы не хотите простоты - вам поможет функция in_array($ip_adres,$ip_adresses_arr ay) после конструкции while ($row=mysql_fetch_array($result)){$ ip_adresses_array[]=$row['ip_adres'];}

PHP код:
<?php require_once("config.php");//тут файл с подключением к базе
    // $_SERVER[REMOTE_ADDR];
    
$ip_adres=$REMOTE_ADDR;
    
$result=mysql_query ("SELECT ip_adres FROM ip_user");
         
$ip_adresses_array=array();
     while (
$row=mysql_fetch_array($result)){$ip_adresses_array[]=$row['ip_adres'];} //ну тут у меня крепкий маразм попер
     
if(in_array($ip_adres,$ip_adresses_array)) 
          {echo 
"000";}
     else {
$query="INSERT INTO ip_user values (0, '$ip_adres', '1')"or die ("error"); $result mysql_query($query) or die ("error");}
echo 
"$REMOTE_ADDR";
?>
свободен...
wall66 вне форума Ответить с цитированием
Старый 01.03.2009, 20:53   #5
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,714
По умолчанию

Цитата:
По логике массив надо вытянуть и сравнить с переменной $ip_adres. Как это сделать?
По логике проще сделать это средствами СУБД
Код:
'SELECT ip_adres FROM ip_user where ip_adres='$ip_adres''
Если результат запроса будет равен null, то пишем новую запись, если нет то ничего не делаем.
СУБД сработает с таблицами в разы быстрее, чем вы получите массив и сравните его. А если записей будет на 100мб? Вы будете хранить их в памяти?
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 01.03.2009, 21:39   #6
13th
Форумчанин
 
Аватар для 13th
 
Регистрация: 31.12.2008
Сообщений: 634
По умолчанию

Jam прав, проще найти , чем обрабатывать всё и только потом заносить
Возможно всё
Пишу обо всем
13th вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счетчик посещений Рустам PHP 7 21.10.2009 09:38
счетчик на ПХП! inetexer Помощь студентам 4 08.05.2008 17:18
MySQL нужна библ. для Visual C++ (MySql++) Alexoid Visual C++ 8 07.05.2008 18:29
Счетчик трафика Black DeviL Работа с сетью в Delphi 2 04.02.2008 18:00