Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Cессии. Несколько значений [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 »   

> Без описания
pome
Отправлено: 27 Мая, 2011 - 12:44:06
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Dezmonds пишет:
pome - так, вроде понятно, а как можно вывести это в нужном мне стиле.
Тоесть не так как выводит:

Array ( [id] => Array ( [Маргарита] => 1 [Гавайская] => 50 ) )
А скажем так:

Id Товар: Колличество: Сумма:
1 Маргарита 1 -
2 Гавайская 50 -



ну это ты спросилУлыбка
PHP:
скопировать код в буфер обмена
  1. foreach ($_SESSION['id'] as $tovar_id => $col) echo "$tovar_id=$col<br>";


Ну а остальное сам думаю осилишьУлыбка

Dezmonds пишет:

И вообще как управлять определенными данными в массиве.. Тоесть допусти по id /
Типа удалить товар где Id = 1


pome пишет:

unset($_SESSION['id'][1]);
 
 Top
Dezmonds
Отправлено: 27 Мая, 2011 - 13:07:04
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




А как добавить еще одно значение а массив?

Сделал так:

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($_POST as $key => $value)
  3. {
  4. if (!$_SESSION['tovar'])
  5. $_SESSION['tovar']=Array();
  6. $_SESSION['tovar'][$_POST['name']]=$_POST['count']=$_POST['price'];
  7. header ("Location: basket.php");
  8. }
  9.  
Вроде ошибок не выдает

С выводом все сложно.. вроде добавил значение цены в массив. пытаюсь вывести

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach ($_SESSION['tovar'] as $name => $count => $price) echo "
  3.  
  4. <tr>
  5.    <td>$name</td>
  6.    <td>$count</td>
  7.    <td>$price</td>
  8.    <td>&nbsp;</td>
  9.  </tr>
  10. ";
  11.  
  12. ?>
  13.  
  14.  

выдаешь ошибку: Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting )

Что то я совем запутался Нахмурился

(Отредактировано автором: 27 Мая, 2011 - 13:07:33)



-----
Колян! Я надыбал макароны!
 
 Top
Slavenin
Отправлено: 27 Мая, 2011 - 13:09:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




если честно, то на мой взгляд подход к хранению заказанных юзером товаров в переменной сессии несколько неправилен. Насколько я видел у вас используется бд. Что мешает завести в ней отдельную табличку в которой будет храниться информация о текущей сессии юзера и заказанных им товарах? устанавливаем каждому пришедшему юзеру в сессию уникальный идентификатор с помощью
, если юзер что-то заказывает, то пишем этот идентификатор вместе с инфой о товарах в таблицу, затем выбираем ее оттуда когда это нужно.
 
 Top
Dezmonds
Отправлено: 27 Мая, 2011 - 13:14:18
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Slavenin - это пока возможно слишком сложно для меня...
Да и цель . это изучение сессий.


-----
Колян! Я надыбал макароны!
 
 Top
pome
Отправлено: 27 Мая, 2011 - 13:20:10
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Dezmonds пишет:
А как добавить еще одно значение а массив?

Сделал так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['tovar'][$_POST['name']]=$_POST['count']=$_POST['price'];
  3.  


Вроде ошибок не выдает



И не будет выдавать. Эта строка сначала присваивает значение $_POST['price'] элементу $_POST['count'] а потом это значение присваевает элементу $_SESSION['tovar'][$_POST['name']], в итоге ты имеешь $_SESSION['tovar'][$_POST['name']]=$_POST['price'];

У тебя есть два вида решения проблеммы:
1) Хранить значение price в $_SESSION, но тебе нужно изменить структуру массива типа так
CODE (htmlphp):
скопировать код в буфер обмена
  1. $_SESSION['id']=Array {
  2.        [tovar_id]=Array {
  3.               ['name']=Конопля
  4.               ['col']=3
  5.               ['price']=20
  6.               ['еще одна ненужная переменная']=х.з.
  7.        }
  8. }

но тогда тебе и структуру вывода в корзине нужно поменять.

2) по ИД товара уже на страничке корзины запрашивать из базы данных все нужные данные, типа название, цена за единицу и т.д. и делать вывод.

3) Читай предыдущий постУлыбка

(Отредактировано автором: 27 Мая, 2011 - 13:22:19)

 
 Top
Slavenin
Отправлено: 27 Мая, 2011 - 13:35:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




Dezmonds пишет:
as $name => $count => $price


так писать нельзя
нужно что-то типа

PHP:
скопировать код в буфер обмена
  1.  
  2. $i=0;
  3. foreach ($_POST as $key => $value)
  4. {
  5. if (!$_SESSION['tovar'])
  6. $_SESSION['tovar']=Array();
  7. $_SESSION['tovar'][$i]=>array('imya'=>$_POST['name'], 'kolichestvo'=>$_POST['count'], 'tcena'=>$_POST['price']);
  8. $i++;
  9. }
  10. header ("Location: basket.php");
  11.  
  12. $j =0
  13. while($_SESSION['tovar'][$j])
  14. {
  15.   echo 'товар=' .$_SESSION['tovar'][$j]['imya'] .'<br/> количество=' .$_SESSION['tovar'][$j]['kolichestvo'] .'<br> 'цена=' .$_SESSION['tovar'][$j]['price']  '
  16. $j++;
  17. }
  18.  

написал примерно, проверить негде, но смысл такой.
?>

(Отредактировано автором: 27 Мая, 2011 - 13:40:26)

 
 Top
Dezmonds
Отправлено: 27 Мая, 2011 - 13:57:22
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Slavenin - T_DOUBLE_ARROW
Где то тут :
PHP:
скопировать код в буфер обмена
  1. $_SESSION['tovar'][$i]=>array('imya'=>$_POST['name'], 'kolichestvo'=>$_POST['count'], 'tcena'=>$_POST['price']);


-----
Колян! Я надыбал макароны!
 
 Top
pome
Отправлено: 27 Мая, 2011 - 14:03:27
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Dezmonds пишет:
Slavenin - T_DOUBLE_ARROW
Где то тут :
PHP:
скопировать код в буфер обмена
  1. $_SESSION['tovar'][$i]=>array('imya'=>$_POST['name'], 'kolichestvo'=>$_POST['count'], 'tcena'=>$_POST['price']);


убери > после [PHP]$_SESSION['tovar'][$i]=
 
 Top
Dezmonds
Отправлено: 27 Мая, 2011 - 14:18:53
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Это бред какой то ей богу... ничего не могу сообразить..
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['submit']))
  2. {
  3. $i=0;
  4. foreach ($_POST as $key => $value)
  5. {
  6. if (!$_SESSION['tovar'])
  7. $_SESSION['tovar']=Array();
  8. $_SESSION['tovar'][$i]=array('id'=>$_POST['id'],'imya'=>$_POST['name'], 'kolichestvo'=>$_POST['count'], 'tcena'=>$_POST['price']);
  9. $i++;
  10. }
  11. header ("Location: basket.php");
  12. }

1 раз нажимаю на 1 товар у меня просто его повторяет немеренное колличество раз:

Array ( [tovar] => Array ( [0] => Array ( [id] => 1 [imya] => Маргарита [kolichestvo] => 1 [tcena] => 600 ) [1] => Array ( [id] => 1 [imya] => Маргарита [kolichestvo] => 1 [tcena] => 600 ) [2] => Array ( [id] => 1 [imya] => Маргарита [kolichestvo] => 1 [tcena] => 600 ) [3] => Array ( [id] => 1 [imya] => Маргарита [kolichestvo] => 1 [tcena] => 600 ) [4] => Array ( [id] => 1 [imya] => Маргарита [kolichestvo] => 1 [tcena] => 600 ) ) )


-----
Колян! Я надыбал макароны!
 
 Top
pome
Отправлено: 27 Мая, 2011 - 14:27:28
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Dezmonds пишет:
Это бред какой то ей богу... ничего не могу сообразить..


все верноУлыбка Ты еще больше переменных отправь в $_POST у тебя еще больше повторений будетУлыбка Я же тебе давно написал - убери foreach ($_POST as $key => $value), не надо там цикл.

Да там ваще все не так!

CODE (htmlphp):
скопировать код в буфер обмена
  1. if(isset($_POST['submit']))
  2. {
  3. if (!$_SESSION['tovar'])
  4. $_SESSION['tovar']=Array();
  5. $_SESSION['tovar'][$_POST['id']]=array('imya'=>$_POST['name'], 'kolichestvo'=>$_POST['count'], 'tcena'=>$_POST['price']);
  6. header ("Location: basket.php");
  7. }


$i убрал потому что у тебя все время в одно значение будут записываться разные товары. Ты мне вот что лучше поясни: когда ты кнопку "в корзину" нажимаешь - у тебя передается в post произвольное количество товаров или 1?

(Отредактировано автором: 27 Мая, 2011 - 14:32:20)

 
 Top
Dezmonds
Отправлено: 27 Мая, 2011 - 14:30:26
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Все я в конец запутался... Огорчение Огорчение Огорчение

Почему сессия перезаписывается ?!
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST['submit']))
  2. {
  3. $i=0;
  4. if (!$_SESSION['tovar'])
  5. $_SESSION['tovar']=Array();
  6. $_SESSION['tovar'][$i]=array('id'=>$_POST['id'],'imya'=>$_POST['name'], 'kolichestvo'=>$_POST['count'], 'tcena'=>$_POST['price']);
  7. $i++;
  8.  
  9. header ("Location: basket.php");
  10. }

(Отредактировано автором: 27 Мая, 2011 - 14:30:49)



-----
Колян! Я надыбал макароны!
 
 Top
pome
Отправлено: 27 Мая, 2011 - 14:34:50
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Dezmonds пишет:
Все я в конец запутался...

Почему сессия перезаписывается ?!


на это я тебе уже ответил. Ты не можешь использовать никакое другое число для индекса $_SESSION кроме ид товара, иначе у тебя каша получится.

Тот код что я тебе написал работает при последовательном добавлении товаров по одному

если хочешь по несколько сразу добавлять - сначала дай листинг массива print_r($_POST) с несколькими товарами, попробую тебе объяснить что да как.

(Отредактировано автором: 27 Мая, 2011 - 14:36:58)

 
 Top
Dezmonds
Отправлено: 27 Мая, 2011 - 14:46:41
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Тогда почему вот этот код
PHP:
скопировать код в буфер обмена
  1. foreach ($_POST as $key => $value)
  2. {
  3. if (!$_SESSION['id'])
  4. $_SESSION['id']=Array();
  5. $_SESSION['id'][$_POST['name']]=$_POST['count'];
  6. }

добавляет значения сколько угодно.. не перезаписывая сессию..

Я нажал на1 товар, потом на другой, потом 3. он просто добавляет в массив данные..все успешно и собственно как и нужно. только не хватает полей


-----
Колян! Я надыбал макароны!
 
 Top
Slavenin
Отправлено: 27 Мая, 2011 - 17:00:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010  
Откуда: Тверь


Помог: 4 раз(а)




Dezmonds пишет:
Тогда почему вот этот код
PHP:
скопировать код в буфер обмена
  1. foreach ($_POST as $key => $value)
  2. {
  3. if (!$_SESSION['id'])
  4. $_SESSION['id']=Array();
  5. $_SESSION['id'][$_POST['name']]=$_POST['count'];
  6. }

добавляет значения сколько угодно.. не перезаписывая сессию..

Я нажал на1 товар, потом на другой, потом 3. он просто добавляет в массив данные..все успешно и собственно как и нужно. только не хватает полей


потому что у тебя в качестве ключа массива выступает код товара, если ты дважды добавишь один и тот же товар то он у тебя перезапишется.
ИМХО учись работать с базой. ну и подтяни циклы заодно, особенно с символьными ключами

(Отредактировано автором: 27 Мая, 2011 - 17:04:31)

 
 Top
Dezmonds
Отправлено: 27 Мая, 2011 - 18:18:35
Post Id



Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




index.php
PHP:
скопировать код в буфер обмена
  1. <?
  2. include("bd/bd.php");
  3.  
  4. if(isset($_POST['id'])){$id = $_POST['id'];     }
  5. if(isset($_POST['count'])){$count = $_POST['count'];    }
  6.  
  7. if(isset($_POST['submit']))
  8. {
  9. foreach ($_POST as $key => $value)
  10. {
  11. if (!$_SESSION['id'])
  12. $_SESSION['id']=Array();
  13. $_SESSION['id'][$_POST['id']]=$_POST['count'];
  14. }
  15. header ("Location: basket.php");
  16. }
  17. ?>
  18.  




basket.php
PHP:
скопировать код в буфер обмена
  1. <?
  2.   if(!@$_SESSION['id']) {
  3.                 echo "<div class='error'>В корзине нет товаров!</div>" ;
  4.         } else {
  5.                 $cart = $_SESSION['id'] ;
  6.      
  7.  echo " <table width='500' align='center' class ='table_item' cellpadding='0' cellspacing='0' >";
  8.  echo "   <tr>
  9.    <th >Наименование</td>
  10.    <th >Вес</td>
  11.    <th >Цена</td>
  12.    <th >Колличество</td>
  13.    <th >Управление</td>
  14.         </tr>" ;
  15. foreach($cart as $id=>$count){ //Цикл по товарам в корзине
  16.                         $query = mysql_query("SELECT * FROM product WHERE id='".$id."' LIMIT 1") or die(mysql_error()) ; //запрашиваем инфу о товаре из БД
  17.                         $result = mysql_fetch_assoc($query) ;
  18.    
  19.     if($count>1)
  20.     {
  21.        
  22.         $summ_porice = $count * $result["price"];
  23.     }
  24.     else {$summ_porice = $result["price"];}
  25.    
  26.    
  27.   echo "
  28.  <tr>
  29.    <td >$result[name]</td>
  30.    <td >$result[wight] гр.</td>
  31.    <td >$summ_porice руб.</td>
  32.    <td >$count шт.</td>
  33.    <td>
  34.    
  35. <a href='unset.php?item_delete=$id'>Убрать</a>
  36.  
  37.    </td>
  38.  </tr>
  39. </td></tr>" ;
  40.                 }
  41.                 echo " <tr>
  42.    <td colspan='3' >Общая стоимость товаров:</td>
  43.    <td colspan='2' align='center'>". $ter = $coll * $summ_porice ."</td>
  44.  </tr>";
  45.                 echo "</table>" ;
  46.                 }
  47. ?>


2 Вопроса: помогите решить
1) Как удалить определенный элемент массива из сессии по id, где id = товару из бд
2) как посчитать несколько определенных элеметов массива (для общей стоимости товаров)
Прикреплено изображение (Нажмите для увеличения)
3.jpg


-----
Колян! Я надыбал макароны!
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB