Forum Webscript.Ru
Программирование => PHP => Тема начата: Turok от 12 Апреля 2006, 15:50:48
-
Приветствую вас!
Помогите плиз с кодом. Задумка такая: есть каталог товаров в БД, нужно чтобы велась статистика показов товара. Счетчик увеличивается только если смотрящий "уникальный".
Делаю при помощи сессий (особая уникальность не требуется), но никак не получается без ошибок. т.е. либо ошибки (Warning: in_array(): Wrong datatype for second argument и Warning: array_push(): First argument should be an array) постоянны либо только при просмотре первого любого товара( а далее все работает как нужно).
вот код: так ошибки постоянно
session_start();
setcookie(session_name(),session_id(), time()+3600, "/");
$id=(int)$id;
$id="".$_GET["id"];
if (!session_is_registered(\'countid\')) session_register(\'countid\');
if (in_array($id, $_SESSION[\'countid\']))
{
}else {
array_push($_SESSION[\'countid\'], $id);
$scount = mysql_query("UPDATE Tovar SET t_count=t_count+1 WHERE t_id=\'$id\'") or die("Error: ".mysql_error());
}
а так ошибка только при первом просмотре:
session_start();
setcookie(session_name(),session_id(), time()+3600, "/");
$id=(int)$id;
$id="".$_GET["id"];
$_SESSION[\'countid\'];
$countid[]=0;
$countid=array_unique($countid);
$countid=array_values($countid);
if (in_array($id, $_SESSION[\'countid\']))
{
}else {
array_push($_SESSION[\'countid\'], $id);
$scount = mysql_query("UPDATE Tovar SET t_count=t_count+1 WHERE t_id=\'$id\'") or die("Error: ".mysql_error());
}
Помогите плиз удержать массив без ошибок.
-
Turok:
Wrong datatype for second argument и Warning:
PHP тебе орет во всю что второй аргумент функции in_array содержит не правильный тип данных !
-
т.е. $_SESSION[\'countid\'] такая запись для in_array и array_push неприемлема?
-
если в начале определяю $_SESSION[\'countid\']=array();
то ошибка пропадает но в сессии не сохраняются посещенные ИД, массив содержит только одно значение просто меняет его на новое ((
-
А почему бы просто не использовать array_push, а просто делать так $_SESSION[\'countid\'][] = $id а в самом начале просто проверять массив это или нет
if(is_array($_SESSION[\'countid\']))
{
if(!in_array($id, $_SESSION[\'countid\']))
{
$_SESSION[\'countid\'][] = $id;
}
}
else
{
$_SESSION[\'countid\'] = array();
}
P.S: код не проверял
-
Turok:
если в начале определяю $_SESSION[\'countid\']=array(); то ошибка пропадает
Turok
in_array() - функция которое ищет значение в массиве так ?
первый аргумент mixed. второй array.
делаем выводы!
Вот тебе руководство:
PHP.NET::in_array() (http://www.php.net/manual/en/function.in-array.php)
-
html_coder и зачем я заморачивался с array_push =) Спасибо, пока работает посмотрим как себя покажет после потери сессии
session_start();
setcookie(session_name(),session_id(), time()+3600, "/");
$id=(int)$id;
$id="".$_GET["id"];
if (!session_is_registered(\'countid\')) session_register(\'countid\');
if(is_array($countid))
{
if(!in_array($id, $countid))
{
$countid[] = $id;
$scount = mysql_query("UPDATE Tovar SET t_count=t_count+1 WHERE t_id=\'$id\'") or die("Error: ".mysql_error());
}
}
else
{
$countid = array();
}
for_i_0 спасибо, я просто весь запутался в типах данных