[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Интернет магазин.
vegasmoscow
Для создания корзины интернет магазина средствами PHP я использую следующий код:

PHP
<?php
session_start
();

if (isset(
$_POST['qty'])) {
    
$_SESSION['cart'][$_POST['name']] = $_POST['qty'];
}

if (isset(
$_SESSION['cart'])) {
    foreach (
$_SESSION['cart'] as $name => $qty) {
            
        echo 
"Название: $name Количество: $qty <br />\n";
    }
}



HTML
<form method="POST">
Товар 1<br/>
<input type="text" name="qty" />шт.
<input type="hidden" name="name" value="Товар 1" /><br/>
<input type="hidden" name="prc" value="450" /><br/>
<input name="submit" type="submit" value="Добавить" />
</form>


Помогите разобраться:

1. Что делает строчка? Если я правильно понял, то создает массив, в который заносится название и количество.

PHP
$_SESSION['cart'][$_POST['name']] = $_POST['qty'];


2. Как мне добавить третий параметр(цена) в данный массив (если это массив)?

3. Каким образом перебрать и отобразить массив с тремя значениями (названием, количеством и ценой)? По отдельности все получается, но как это сделать, применив цикл foreach только один раз?



Спустя 13 минут, 39 секунд (17.08.2009 - 17:15) Gabriel написал(а):
а что означают переменные ?
$cart, $name, $qty

Спустя 15 минут, 9 секунд (17.08.2009 - 17:30) vegasmoscow написал(а):
Gabriel, это переменные, которые получены методом POST из полей формы, только $cart я сам не понял откуда берется. Есть еще переменная $prc, которую и нужно внести в массив.

Спустя 10 минут, 43 секунды (17.08.2009 - 17:41) Gabriel написал(а):
ну наверное $cart ето корзинко, $name имя продукта, $qyt количество.
P.S.дай бох здоровья ученикам твина ибо расшифровывать переменные дело скучное.

Спустя 4 минуты, 41 секунда (17.08.2009 - 17:45) vegasmoscow написал(а):
Все переменные, кроме $cart, получены из формы:

HTML
<form method="POST">
Товар 1<br/>
<input type="text" name="qty" />шт.
<input type="hidden" name="name" value="Товар 1" /><br/>
<input type="hidden" name="prc" value="450" /><br/>
<input name="submit" type="submit" value="Добавить" />
</form>


А вот $cart, по всей видимости, задается в строке

PHP
$_SESSION['cart'][$_POST['name']] = $_POST['qty'];


только вот способ странный, поэтому и прошу знатоков помочь разобраться что к чему.

PS а кто такой твин?

Спустя 1 минута, 10 секунд (17.08.2009 - 17:46) SunSet написал(а):
Цитата
PS а кто такой твин?

laugh.gif laugh.gif laugh.gif
Насяльника))

Спустя 7 минут, 21 секунда (17.08.2009 - 17:54) Gradus написал(а):
а чё тут не понятного ?

PHP
if (isset($_POST['qty'])) {
    $_SESSION['cart'][$_POST['name']] = $_POST['qty'];
    $_SESSION['money'][$_POST['name']]=$_POST['money']*$_POST['qty'];
}

if (isset($_SESSION['cart'])) {
    foreach ($_SESSION['cart'] as $name => $qty) {
            
        echo 
"Название: $name Количество: $qty цена  $_SESSION['money'][$name]<br />\n";
    }
}

Не красиво может с ошибками но я к примеру smile.gif

Спустя 54 секунды (17.08.2009 - 17:55) Gabriel написал(а):
PHP
$_SESSION['cart'][$_POST['name']] = $_POST['qty'];

для меня нупа ета запись оч странная(непонимаю только догадываюсь). что ета переменная создаеться из имени и количетсва для занесения в корзину. попробуй так
$_SESSION['cart'] as $name => $quanty* цена
P.S.twin есть большой добрый и пуфыстый дядька.
P.S.S. чет пхп тег глючит

Спустя 5 минут, 31 секунда (17.08.2009 - 18:00) Krevedko написал(а):
скоро и я такое делать буду. только я тут логики не понял. я планирую прикрутить через аякс, при нажатии на товар в базу будет сразу писаться +1 штука

Спустя 2 минуты, 11 секунд (17.08.2009 - 18:02) Gradus написал(а):
Krevedko,ну так для зарегистрированных пользователей.А если просто гость,тут думаю как покупатель по ip его и базу довалять не стоит

Спустя 54 секунды (17.08.2009 - 18:03) Krevedko написал(а):
ну да проверка сессии естественно будет. а что там сложного-то ?

Спустя 47 секунд (17.08.2009 - 18:04) vegasmoscow написал(а):
Я пока без аякса и без базы и без регистрации пробую, только сессии. С аяксом. конечно, круче, но.. москва не сразу строилась!

Спустя 3 минуты, 39 секунд (17.08.2009 - 18:08) Gabriel написал(а):
дело не в том что москва несразу строилась а в том что аяксом (с моей тз ефективнее).

Спустя 1 минута, 48 секунд (17.08.2009 - 18:09) Gradus написал(а):
Я бы не стал ajax в этой стороне применять.Дело конешно каждого...

Спустя 55 секунд (17.08.2009 - 18:10) vegasmoscow написал(а):
Gabriel, на сколько я понимаю, с аяксом база данных необходима? Ну или куки.

Спустя 4 минуты, 57 секунд (17.08.2009 - 18:15) Gabriel написал(а):
а тут я незнаю но вродь бд ненужна. мне ето сейчас предстоит делать

Спустя 2 минуты, 3 секунды (17.08.2009 - 18:17) Krevedko написал(а):
с аяксом можно не перегружать страницу. обновление на лету

Спустя 43 минуты, 45 секунд (17.08.2009 - 19:01) vegasmoscow написал(а):
Господа, кто нибудь знает как перебрать и отобразить массив не с двумя, а с тремя значениями, используя цикл foreach один раз? Это будет название, количество и стоимость.

PS Метод, который предложил Gradus, не работает.

Спустя 25 минут, 30 секунд (17.08.2009 - 19:27) Gradus написал(а):
Вы поставили в html форму money ?
Всё должно работать,напиши что не получаеться может ошибка выскакивает или что ?

Спустя 5 минут, 40 секунд (17.08.2009 - 19:32) vegasmoscow написал(а):
Gradus, мне проще было изменить один раз слово money на слово prc, с этим все нормально, выдает следующее сообщение:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in T:\home\localhost\shop2_php\index.php on line 62

Спустя 6 минут, 28 секунд (17.08.2009 - 19:39) Gradus написал(а):
ну блин я же говорил что с ошибка мог написать,просто для примера показал
Вот правильно
PHP
echo "Название: ".$name." Количество: ".$qty." цена  ".$_SESSION['money'][$name]."<br />\n";

Спустя 11 минут, 33 секунды (17.08.2009 - 19:50) vegasmoscow написал(а):
Gradus, спасибо, теперь все работает. Не могли бы вы подробно объяснить, что делают строчки:

PHP
$_SESSION['cart'][$_POST['name']] = $_POST['qty'];
    
$_SESSION['prc'][$_POST['name']]=$_POST['prc']*$_POST['qty'];


и откуда берется цена, если foreach ем перебираются только название и количество? Откуда берется цена именно для данного товара?

PHP
if (isset($_SESSION['cart'])) {
    foreach (
$_SESSION['cart'] as $name => $qty) {
            
        echo 
"Название: ".$name." Количество: ".$qty." цена  ".$_SESSION['prc'][$name]."<br />\n";
    }
}

Спустя 12 минут, 44 секунды (17.08.2009 - 20:03) Gradus написал(а):
PHP
$_SESSION['cart'][$_POST['name']] = $_POST['qty'];

$_SESSION['cart']['имя товара'] далее к этому массиву присваиваете значение в виде количества товара.
Тоесть echo $_SESSION['cart'][капуста]; Покажет сколько вы купили капусты
Аналогично с prc

PHP
foreach ($_SESSION['cart'] as $name => $qty)

foreach идёт по массиву где он выдаёт $name это название вашего товара,а $qty это его значение,тобеж количество товара

$_SESSION['prc'][$name]-думаю теперь это не надо обьяснять smile.gif

Спустя 13 минут, 57 секунд (17.08.2009 - 20:17) vegasmoscow написал(а):
Gradus, то есть, если я правильно понял, то получается два массива? Первый: Название->количество, а второй: название->стоимость, верно?

PS возможен ли один массив Название->Количество->Стоимость? (это для общего развития).

Спустя 6 минут, 30 секунд (17.08.2009 - 20:23) Gradus написал(а):
Правильно понял smile.gif
Можно,но мне пока в голову не приходит как тогда foreach один раз воспользоваться

Спустя 10 минут, 9 секунд (17.08.2009 - 20:34) vegasmoscow написал(а):
Смысл уже не в этом, задача решена. Это на заметку взять на будущее.

А разве не получится перебрать трехмерный массив той же конструкцией?

PHP
foreach ($_SESSION['cart'] as $name => $qty) {
            
        echo 
"Название: ".$name." Количество: ".$qty." цена  ".$_SESSION['cart'][$name]."<br />\n";
    }


... хотя нет наверное, натупил я что то.

Спустя 4 минуты, 41 секунда (17.08.2009 - 20:38) Krevedko написал(а):
рекурсию использовать )

Спустя 8 минут, 49 секунд (17.08.2009 - 20:47) Gradus написал(а):
ну это будет аналог повторного написания foreach
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.