Не происходит обновление поля в БД

ForCasy

Новичок
Не происходит обновление поля в БД

Есть скрипт:

function getip()
{
if(isset($HTTP_SERVER_VARS)) {
if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) {
$realip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}elseif(isset($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])) {
$realip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}else{
$realip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
}else{
if(getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
$realip = getenv( 'HTTP_X_FORWARDED_FOR' );
}elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
$realip = getenv( 'HTTP_CLIENT_IP' );
}else {
$realip = getenv( 'REMOTE_ADDR' );
}
}
if((getenv('REMOTE_PORT'))) {
$realip.=":".getenv('REMOTE_PORT');
}
return $realip;
}

$brow = getenv("HTTP_USER_AGENT");
$ref = getenv('HTTP_REFERER');
$my_urls = getenv('QUERY_STRING');
$ip=getip();


$result = db_query("SELECT * FROM mg_counter");
$num_rows = mysql_num_rows($result);

function searchID($id)
{
$result = db_query("SELECT * FROM mg_counter WHERE user_id LIKE '".$id."'") or die ("Query failed");
$num_rows = mysql_num_rows($result);
mysql_free_result($result);
if ($num_rows>0) return True;
else return False;
}

function Update($id,$pages)
{
$c=count(explode("\r\n",$pages));
if ($c<150){
$result = db_query("UPDATE mg_counter SET `pages` = '".$pages."' WHERE `user_id` = '".$id."'") or die ("Query failed");
return $result;
}
}

function IncCounter()
{
$brow = getenv("HTTP_USER_AGENT");
$ref = getenv('HTTP_REFERER');
$my_urls = getenv('QUERY_STRING');
$ip=getip();
if (eregi("module=users",$my_urls)==false)
{
if (searchID($_SESSION['user'])==false)
{
$result = db_query("INSERT INTO `mg_counter` ( `user_id` , `url` , `my_url` , `pages` , `date` , `IP_PORT` , `brouser` ) VALUES ('".$_SESSION['user']."' , '".$ref."' , '".$my_urls."', '".trim($my_urls)."' , NOW( ) , '".$ip."' , '".$brow."');");
}
else
{
$result = db_query("SELECT * FROM mg_counter WHERE `user_id` LIKE '".$_SESSION['user']."'") or die ("Query failed");
list ($user_id, $url, $my_url, $pages , $date, $IP_PORT, $brouser) = mysql_fetch_row ($result);
Update($user_id,trim($pages."\r\n".$my_urls));
}
@mysql_free_result($result);
}
}
IncCounter();


Есть проблемы с данном скрипте!
1) Не могу разобраться - скрипт должен проверят значение user_id например 12345, и если такое значение есть то просто обновлять данные, а если нет значения 12345, то добовлять новое. А получается, так что он не проверяет и просто добовляет новое значение!

Пример:

775085449 | 2009-02-05 17:59:09 | 127.0.0.1:3203 | Opera/9.61 (Windows NT 5.1; U; ru)
775085449 | pose | pose | 2009-02-05 17:59:31 | 127.0.0.1:3225 | Opera/9.61 (Windows NT 5.1; U; ru)
775085449 | prog_list | price_list 2009-02-05 | 19:05:29 | 127.0.0.1:3525 Opera/9.61 (Windows NT 5.1; U; ru)


А должно быть что-то типа этогокод PHP
775085449 | pose prog_list | pose price_list | 2009-02-05 17:59:09 2009-02-05 17:59:31 | 127.0.0.1:3203 127.0.0.1:3225 | Opera/9.61 (Windows NT 5.1; U; ru)


В чем проблема не пойму?

2) Проблема в том, что почти каждый раз записывается разные порты
Пример:

127.0.0.1:3203
127.0.0.1:3525
127.0.0.1:3643
и т.д

Прошу помощи!
 

Фанат

oncle terrible
Команда форума
скрипт должен проверять значение user_id
ну так проверь - проверяет или нет.
сам. никто за тебя это делать не будет

Проблема в том, что почти каждый раз записывается разные порты
проблема в том, что ты зачем-то решил себе записывать REMOTE_PORT. Для начала попробуй ответить на вопрос, нафига он тебе сдался.

Функцию getip() записать в виде:
function getip()
{
return getenv( 'REMOTE_ADDR' );
}
 

ForCasy

Новичок
со скриптом разобрался! Проблема была в запросе - вместо db_query пришлось ставить mysql_query! Тему можно закрывать!
 
Сверху