Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: $_SESSION - не получается увеличить массив
 
 автор: jetty   (29.05.2006 в 21:16)   письмо автору
 
 

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{ $j=count($_SESSION);echo ' j='.$j;$j++;
$k='k'.$j;
$_SESSION['k']=$_POST['uin'];
$k='k'.$j++;
$_SESSION['k']=$_POST['kol'];
foreach($_SESSION as $value){
echo '<tr><td>'.$value.'</td></tr>';
}
echo count($_SESSION);
}

Суть: простой интернет-магазин. При щелчке на кнопке в массив SESSION товары добавляются только 1 раз. А далее только обновляются.
То есть при следующем щелчке count($_SESSION) почему-то опять равен 2 :(
Что я делаю не так?

   
 
 автор: Boss   (29.05.2006 в 21:37)   письмо автору
 
   для: jetty   (29.05.2006 в 21:16)
 

Может:


echo count($_SESSION['k']);

   
 
 автор: jetty   (29.05.2006 в 22:07)   письмо автору
 
   для: Boss   (29.05.2006 в 21:37)
 

хмм. что это даст?
там элементы массива k1, k2,... ..., k15,... их количество растёт с увеличением количества заказанных товаров.
или нельзя испльзовать в качестве переменных цифры ВООБЩЕ?

   
 
 автор: Trianon   (29.05.2006 в 23:43)   письмо автору
 
   для: jetty   (29.05.2006 в 22:07)
 

Массив $_SESSION не растет потому, что каждый раз Вы присваиваете один и тот же элемент с индексом 'k'.
С другой стороны, это и к лучшему, мало ли что еще захочется в сессии хранить - что ж теперь всю сессию под корзину пустить?
Я бы сделал так.

<?
echo '<table>';
$car = array();
if (isset(
$_POST['uin']))
{
  
session_start(); // без этого вообще сессии не откроются.
  
if(isset($_SESSION['car']))
        
$car =  $_SESSION['car'];
  
  
$uin intval($_POST['uin']);
  
$kol = empty($_POST['kol']) ? intval($_POST['kol']);
  
$car[] = array('uin' => $uin'kol' $kol);
  
$_SESSION['car'] = $car
}
foreach(
$car as $row)
   echo 
'<tr><td>'.$row['uin'] . '  x '$row['kol'].'</td></tr>';
echo 
'<t/able>';
?>

   
 
 автор: ec_stasis   (29.05.2006 в 23:44)   письмо автору
 
   для: jetty   (29.05.2006 в 22:07)
 

присваивание идет в один и тот же элемент массива с индексом 'k' (это строка, ее значение не меняется при изменении $k

<?
$j
++;
$k 'k'.$j;
$_SESSION[$k]

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования