Автор Тема: Массив сессии - все время ошибка (  (Прочитано 5768 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив сессии - все время ошибка (
« : 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());
}

Помогите плиз удержать массив без ошибок.

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Массив сессии - все время ошибка (
« Ответ #1 : 12 Апреля 2006, 16:28:40 »
Цитировать
Turok:
Wrong datatype for second argument и Warning:


PHP тебе орет во всю что второй аргумент функции in_array содержит не правильный тип данных !
[off]Безработный[/off]

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив сессии - все время ошибка (
« Ответ #2 : 12 Апреля 2006, 16:36:25 »
т.е. $_SESSION[\'countid\'] такая запись для in_array и array_push неприемлема?

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив сессии - все время ошибка (
« Ответ #3 : 12 Апреля 2006, 16:46:52 »
если в начале определяю $_SESSION[\'countid\']=array();
то ошибка пропадает но в сессии не сохраняются посещенные ИД, массив содержит только одно значение просто меняет его на новое ((

Оффлайн html_coder

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 427
  • +0/-0
  • 0
    • Просмотр профиля
Массив сессии - все время ошибка (
« Ответ #4 : 12 Апреля 2006, 17:14:33 »
А почему бы просто не использовать 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: код не проверял

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Массив сессии - все время ошибка (
« Ответ #5 : 12 Апреля 2006, 17:22:28 »
Цитировать
Turok:
если в начале определяю $_SESSION[\'countid\']=array(); то ошибка пропадает


Turok
in_array() - функция которое ищет значение в массиве так ?
первый аргумент mixed. второй array.
делаем выводы!


Вот тебе руководство:
PHP.NET::in_array()
[off]Безработный[/off]

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Массив сессии - все время ошибка (
« Ответ #6 : 12 Апреля 2006, 17:47:14 »
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 спасибо, я просто весь запутался в типах данных

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28