Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Корзина для магазина 
:(
    Опции темы
kyc0k
Дата 3.5.2008, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Я начинающий в ПХП, но вот нужно сделать мне слдеующее:
Для интернет магазина нужно написать корзину покупок, осуществлять буду с помощью сессий без использования БД.
Работать будет примерно так:
Есть некая форма, где отображены товары, рядом с каждым товаром имеется кнопка и текстовой поле(количество выбранного товара).
Пользователь вписывает в соответствующее поле количество и нажимает кнопку эти данные улетают в массив сессии.
Отображается это будет в таком виде с верху каждой страницы, где разумеется будет стартовать сессия
Вот так примерно:

Ваша корзина:
Чемоданы кол-во: 3 Удалить
Прищепки кол-во: 8 Удалить

И еще кнопка удалить будет удалять товар полностью, а не поодноому!
Кто может помочь в осуществлении данной корзины какими либо ссылками и полезной инфой, если кто-то подобное делал, то подскажите что к чему и насколько это сложно!
Заранее спасибо!))))
PM MAIL   Вверх
Feldmarschall
Дата 3.5.2008, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Не сложнее, чем любой другой скрипт.
Все сводится к работе с формами. Добавить - форма. Удалить - форма. Ты умеешь обрабатывать формы? 
Сессия - это массив. Если ты умеешь выводить содержимое массива в цикле, то никаких проблем не возникнет


Это сообщение отредактировал(а) Feldmarschall - 3.5.2008, 19:32
PM   Вверх
kyc0k
Дата 3.5.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Цитата(Feldmarschall @ 3.5.2008,  19:27)

Сессия - это массив. Если ты умеешь выводить содержимое массива в цикле, то никаких проблем не возникнет

В этом то и проблема,  не получается у меня(((,


Код

<?
session_start();
$_SESSION['id'];
if($_GET['id']){
if($_SESSION['id'][$_GET['id']]){
$_SESSION['id'][$_GET['id']]=$_GET['count'];
}

else{
$_SESSION['id'][$_GET['id']]=$_GET['count'];
}
}

echo "".$_SESSION['id'][$_GET['id']];
?>
<form method="GET">

<input type="text" name="count" ><br>
<input type="submit" name="id" value="Положить"><br>

</form>


ну вот на стряпал, я вот такой код, а дальше не едит ни чего, не понимаю я как несколько кнопок в массив класть!


M
MoLeX
Модератор: пользуемся кнопкой код


Это сообщение отредактировал(а) MoLeX - 4.5.2008, 05:59
PM MAIL   Вверх
Feldmarschall
Дата 3.5.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



С таким подходом и гостевую не напишешь - не то что корзину.
Почему не писать честно - "научите меня программировать с нуля"

Торопиться со сложением уже лежащего в корзине товара не надо. Научись хотя бы просто класть.
То есть, просто присваивать $_SESSION['id']=$_GET['count'];
Дальше надо ввести идентификатор товара, и передавать его вместе с количеством. Верно?
PM   Вверх
kyc0k
Дата 3.5.2008, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Цитата

С таким подходом и гостевую не напишешь - не то что корзину.
Почему не писать честно - "научите меня программировать с нуля"

Ну да, согласен smile 

Цитата

Дальше надо ввести идентификатор товара, и передавать его вместе с количеством. Верно? 

ну что то вроде того, как я понял передаем идентификатор по нажатию кнопки, самим идентификатором служит name кнопки или её id, ну а количеством будет value текстового поля вроде так или нет???
PM MAIL   Вверх
Feldmarschall
Дата 3.5.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



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

<input type="text" name="count" ><br>
<input type="hidden" name="id" value="12">
<input type="submit"  value="Положить"><br>


а в скрипте, соответственно:
Код

$_SESSION['cart'][$_GET['id']]=$_GET['count'];


в сессию мы кладем не прямо, а в массив cart потому, что в сессии тоже нельзя цифровые ключи



Это сообщение отредактировал(а) Feldmarschall - 3.5.2008, 22:21
PM   Вверх
kyc0k
Дата 4.5.2008, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



спасибо конечно за небольшой пример, но ведь это только для одной пары субмита и текстового, а вот если их будет много, в этом то и основная проблема !
PM MAIL   Вверх
Cache
Дата 4.5.2008, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 6.11.2007

Репутация: нет
Всего: нет



kyc0k
у каждого товара своя форма
и везде она одинакова, кроме name, в который записан уникальный артикул товара
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



kyc0k, в этом случае id товара можно передавать в имени поля count
Код

<input type="text" name="count[11]"><br>
<input type="text" name="count[12]"><br>
<input type="text" name="count[13]"><br>
<input type="submit"  value="Положить"><br>

А в скрипте в цикле перебирать массив $_POST['count']
PM   Вверх
kyc0k
Дата 4.5.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Код

<form name="q" method="GET">
<input type ="text" name="count"><br>
<font>Утюг</font>
<input type ="submit" value ="Положить"><br>
</form>
<form name="w" method="GET">
<input type ="text" name="count"><br>
<font>Чемодан</font>
<input type ="submit" value ="Положить"><br>
</form>
<form name="e" method="GET">
<input type ="text" name="count"><br>
<font>Чехол</font>
<input type ="submit" value ="Положить"><br>
</form>  

Вот к примеру есть три формы, своя для каждого товара. И вот не получается у меня сделать так,
 указать количество, потом нажать кнопку в  форме "q" в сесиию пришло такое:
Утюг кол-во: 3
если указать количество  во второй форме "w" и нажать в ней же кнопку, то стало так:
Утюг кол-во: 3
Чемодан кол-во: 1

и т.д.
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Ну я же писал выше, с примером.
где у тебя скрытое поле со словом утюг?
PM   Вверх
kyc0k
Дата 4.5.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Код

<form name="q" method="GET">
<input type ="text" name="count"><br>
<font>Утюг</font>
<input type="hidden" name="id" value="Утюг">
<input type ="submit" value ="Положить"><br>
</form>
<form name="w" method="GET">
<input type ="text" name="count"><br>
<font>Чемодан</font>
<input type="hidden" name="id" value="Чемодан">
<input type ="submit" value ="Положить"><br>
</form>
<form name="e" method="GET">
<input type ="text" name="count"><br>
<font>Чехол</font>
<input type="hidden" name="id" value="Чехол">
<input type ="submit" value ="Положить"><br>
</form> 

Ну вот и скрытое поле, правильно??
Тогда в ПХП что с сессиями делать?
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



И код я тоже писал.
Какой смысл задавать вопросы, если ответы ты не читаешь?
PM   Вверх
kyc0k
Дата 4.5.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Код

<?
session_start();
$_SESSION['cart'][$_GET['id']];
$_SESSION['cart'][$_GET['id']]=$_GET['count'];

echo "".$_SESSION['cart'][$_GET['id']];
?>


Код

<form name="q" method="GET">
<input type ="text" name="count"><br>
<font>Утюг</font>
<input type="hidden" name="id" value="Утюг">
<input type ="submit" value ="Положить"><br>
</form>
<form name="w" method="GET">
<input type ="text" name="count"><br>
<font>Чемодан</font>
<input type="hidden" name="id" value="Чемодан">
<input type ="submit" value ="Положить"><br>
</form>
<form name="e" method="GET">
<input type ="text" name="count"><br>
<font>Чехол</font>
<input type="hidden" name="id" value="Чехол">
<input type ="submit" value ="Положить"><br>
</form> 

Эх... Читал я ответы, вот такой код получается, вот если я нажимаю кнопку в первой форме, то количество заносится, после вписываю количество в другой форме и нажимаю на кнопку, то значение из первой формы затирается последним!

Это сообщение отредактировал(а) kyc0k - 4.5.2008, 10:23
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 10:39 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Во-первых, какую смысловую нагрузку несет простое написание имени переменной, которое ты везде добавляешь в свои скрипты:
Цитата(kyc0k @  4.5.2008,  10:19 Найти цитируемый пост)
$_SESSION['cart'][$_GET['id']];


во-вторых, ничего не затирается.
просто своим эхом ты выводишь только то, что добавил этой формой.
А для вывода массива надо использовать цикл.


PM   Вверх
kyc0k
Дата 4.5.2008, 11:01 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Цитата

Во-первых, какую смысловую нагрузку несет простое написание имени переменной, которое ты везде добавляешь в свои скрипты:

Ну, а как тогда?

Цитата

во-вторых, ничего не затирается.
просто своим эхом ты выводишь только то, что добавил этой формой.
А для вывода массива надо использовать цикл.

А каким циклом foreach ??
И как выводить массив с помощью цикла?
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(kyc0k @  4.5.2008,  11:01 Найти цитируемый пост)
Ну, а как тогда?

Да никак! Просто не писать эту бессмысленную строчку.

Цитата(kyc0k @  4.5.2008,  11:01 Найти цитируемый пост)
как выводить массив с помощью цикла? 

Об этом написано во всех документациях и учебниках.
Язык надо учить по учебнику, а не на форуме
Код

foreach ($_SESSION['cart'] as $id => $count) {
  echo "$id кол-во $count";
}


Это сообщение отредактировал(а) Feldmarschall - 4.5.2008, 11:16
PM   Вверх
kyc0k
Дата 4.5.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Теперь ругается на эту строчку:
Цитата

Invalid argument supplied for foreach() in C:\Program Files\Apache Group\Apache2\htdocs\abc\page.php on line 11

Что тут может быть? Когда первый раз обновил страницу с этим скриптом, то вывелись все значения массива в строчку, когда попытался добавить товар, то показал выше указанную ошибку

Вот код
Код

<?
session_start();
$q=$_SESSION['cart'];

$id=$_GET['id'];
$count=$_GET['count'];

if (!empty($_GET['id'])){
$_SESSION['cart']=$_GET['count'];

}

foreach ($_SESSION['cart'] as $id => $count) {
  echo "$id кол-во: $count <br>";
}
?> 


Это сообщение отредактировал(а) kyc0k - 4.5.2008, 12:10
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



при чем тут $_GET, если форма у тебя методом пост?

что за бессмысленные у тебя все время куски кода?
теперь это присвоение переменных $id и $count, да ещё и по два раза.


PM   Вверх
kyc0k
Дата 4.5.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Цитата

при чем тут $_GET, если форма у тебя методом пост?

Не форма у меня как раз ГЕТом передает!
Цитата

теперь это присвоение переменных $id и $count, да ещё и по два раза.

Да я там по одному ставил, просто при копирование само как то влезло!
Я вообще их уберал, всё равно одно и тоже, а когда первый раз скрипт запустил, то всё чики пики было, тока все товары в одну строчку, а когда решил добавить товар, то ошибка и вылезла!
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Плохо, что ГЕТом.
Разбирайся, в общем. 
Вся информация у тебя есть. То, что с первого раза не получается - это ничего страшного.

PM   Вверх
kyc0k
Дата 4.5.2008, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Код

<?
session_start();
$a=array($_SESSION['cart']);
$id=$_POST['id'];
$count=$_POST['count'];
$many=$_POST['many'];// переменная за одну ед. товара
$dol=$many*$count;// переменная за весь вид товара цены
if (!empty($_POST['id'])){
$_SESSION['cart']=$_POST['count'];
}
foreach ($a as $id => $count ) ;{
  echo $id."      кол-во  ".$count."     цена".$dol."руб."."\n\r";
  ;
}
?>

Код

<form name="q" method="POST">
<input type ="text" name="count"><br>
<font>Утюг цена 100 руб.</font>
<input type="hidden" name="id" value="Утюг">
<input type="hidden" name="many" value="100">
<input type ="submit" value ="Положить"><br>
</form>
<form name="w" method="POST">
<input type ="text" name="count"><br>
<font>Чемодан цена 120 руб</font>
<input type="hidden" name="id" value="Чемодан">
<input type="hidden" name="many" value="120">
<input type ="submit" value ="Положить"><br>
</form>
<form name="e" method="POST">
<input type ="text" name="count"><br>
<font>Чехол цена 70 руб</font>
<input type="hidden" name="id" value="Чехол">
<input type="hidden" name="many" value="70">
<input type ="submit" value ="Положить"><br>
</form> 

Вот что получилось, теперь без ошибки, но выводится всё только последняя запись(((
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



вот не понимаю я, что ж тебя тянет все время на какие-то странные телодвижения
я пишу один код - ты переписываешь по-своему.

я пишу нормальный код - ты переписываешь с ошибками, и приходишь жаловаться, что он не работает.
такое ощущение, что ты пишешь чтобы просто поболтать. 


PM   Вверх
kyc0k
Дата 4.5.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Код

<?
session_start();
$a=array($_SESSION['cart']);
$id=$_POST['id'];
$count=$_POST['count'];
$many=$_POST['many'];// переменная за одну ед. товара
$dol=$many*$count;// переменная за весь вид товара цены
if (!empty($_POST['id'])){
$_SESSION['cart']=$_POST['count'];
}
foreach ($a as $id => $count ) ;{
  echo $id."      кол-во  ".$count."     цена".$dol."руб."."\n\r";
  ;
}
?>

Ну а вот где тут ошибка?? почему массив целиком не выводится, а только последняя запись??


Цитата

что ты пишешь чтобы просто поболтать

  Нет это не так!  smile
 smile 
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



да потому что ты его уродуешь, как бог черепаху.
$a=array($_SESSION['cart']); - это зачем?
$_SESSION['cart']=$_POST['count'];- это зачем?

почему код вывода корзины не такой, как я тебе писал?
почему код добавления в корзину не такой, как я писал?

Добавлено через 1 минуту и 37 секунд
Цитата(kyc0k @  4.5.2008,  16:23 Найти цитируемый пост)
 smile   

Что ты хочешь? пример? А они тебе помогают - примеры эти?
Какой смысл писать тебе пример, если ты все равно все по-своему переписываешь?


PM   Вверх
americanets
Дата 4.5.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



;  не там

Код

$a=$_SESSION['cart'];
$id=$_POST['id'];
$count=$_POST['count'];
$many=$_POST['many'];// переменная за одну ед. товара
$dol=$many*$count;// переменная за весь вид товара цены
if (!empty($_POST['id'])){

  $_SESSION['cart'][]=$_POST['count'];

}
print_r($a );
foreach ($a as $id => $count ) {
  echo $id."      кол-во  ".$count."     цена".$dol."руб."."\n\r";
  
}


Это сообщение отредактировал(а) americanets - 4.5.2008, 16:39


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
kyc0k
Дата 4.5.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Код

<?
session_start();
$_SESSION['cart'];

$_SESSION['cart'][$_GET['id']]=$_GET['count'];

foreach ($_SESSION['cart'] as $id => $count) {
  echo "$id кол-во $count";
}
?>

Форму туже оставил, вот ПХПшник вроде как ты говорил, с ним тоже ни чего не работает!
Цитата


Что ты хочешь? пример? А они тебе помогают - примеры эти?
Какой смысл писать тебе пример, если ты все равно все по-своему переписываешь?

Согласен пример мало чем поможет для понимания!
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



americanets, id товара забыл в корзину положить
и цену вычислять не имеет смысла - все ранво в корзину она не попадает.

kyc0k, ну так у тебя обратно POST уже. 
PM   Вверх
kyc0k
Дата 4.5.2008, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Цитата

ну так у тебя обратно POST уже

Да я и гет и пост пробовал всё равно одно и тоже(((
PM MAIL   Вверх
Feldmarschall
Дата 4.5.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Пробовать не надо. Надо осмысленные действия совершать.

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

сначала делай добавление.
а проверяй содержимое корзины так, как написал американец:
print_r($_SESSION['cart']);

и поменьше бессмысленных присвоений! 
пиши в код только то, что имеет смысл и потом используетсядальше в скрипте!
PM   Вверх
americanets
Дата 4.5.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Feldmarschall, это код kyc0k,  только поправлен чтоб все печатал а не только последнее smile


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 4.5.2008, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Код

$name = array();
$name[1] = 'Товар 1';
$name[2] = 'Товар 2';
$name[3] = 'Товар 3';
$name[4] = 'Товар 4';
$name[5] = 'Товар 5';
$name[6] = 'Товар 6';
$name[7] = 'Товар 7';
$name[8] = 'Товар 8';

function AddToList($Id){

  if (isset($_SESSION['tovar'][$Id])) {


      $_SESSION['tovar'][$Id]++;

    }


  else {


      $_SESSION['tovar'][$Id] = 1;


    }

}

if(!empty($_POST)){

  AddToList($_POST['id']);

}

while (list($key, $val) = each ($_SESSION['tovar'])) {

        print $name[$key].' - '.$val.' шт<br/>';

        
}

//print_r($_SESSION['tovar']);

//print_r(array_keys($_SESSION['tovar'][]));
ob_end_flush();
?>


<form name="q" method="POST">
<input type=text name=id>

<input type=submit>
</form> 





Это сообщение отредактировал(а) americanets - 4.5.2008, 17:29


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Feldmarschall
Дата 4.5.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



americanets, нафига такие сложности?
Парень в двух-то строчках умудряется сделать три ошибки, а ты ему целую библиотеку накатал.
Чтобы понять принцип, кода должно быть как можно меньше.
PM   Вверх
americanets
Дата 4.5.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Удалять товар

Код

unset($_SESSION['tovar'][$Id]);


Добавлено @ 17:26
Feldmarschall, а он и меньше , но поясню

Тут функция добавить по Id , делает сессию id товара и его количество
Код

function AddToList($Id){
  if (isset($_SESSION['tovar'][$Id])) {

      $_SESSION['tovar'][$Id]++;

    }

  else {

      $_SESSION['tovar'][$Id] = 1;

    }
}


активируем функцию если POST есть , на будущее для empty 0 - это не есть
Код

if(!empty($_POST)){
  AddToList($_POST['id']);
}


тут мы печатаем то что есть в сессии $key это Id $val количество 
$name это массив с данными
можно сделать массив с ценой и прочим, если работать с базой то массив всегда готов
Код

while (list($key, $val) = each ($_SESSION['tovar'])) {
        print $name[$key].' - '.$val.' шт<br/>';  
}






Это сообщение отредактировал(а) americanets - 4.5.2008, 17:28


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
kyc0k
Дата 5.5.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 3.5.2008

Репутация: нет
Всего: нет



Всем кто помогал спасибо!
Вроде получается прям, то что нужно smile .
Вроде только осталось всего два вопроса, как сделать отдельную кнопку удалить для каждого товара, ну и подсчет общей суммы всех товаров.
Кнопка "Удалить товар" у меня работает, но только удаляет после второго нажатия и сразу весь товар, чему я не удивлен т.к. она уничтожает сессию. unset($_SESSION['tovar'][$Id]), вот это как прикрутить??
 А вот с общей суммой товара вообще труба какаято!
Получается что то такое:
Код

<?
session_start();
$name = array();
$name[1] = 'Утюг';
$name[2] = 'Чемодан';
$name[3] = 'Чехол';
$name[4] = 'Тяпка';

function AddToList($Id){
  if (isset($_SESSION['tovar'][$Id])) {
     // $_SESSION['tovar'][$Id]++;
     $many=$_POST['nam']*$_POST['many'];
    $_SESSION['tovar'][$Id]=$_POST['nam'].'..шт......цена:'.$many;
    
    }
  else {
  $many=$_POST['nam']*$_POST['many'];
      $_SESSION['tovar'][$Id] = $_POST['nam'].'..шт......цена:'.$many;
    }
}

if(!empty($_POST)){
  AddToList($_POST['id']);
}

while (list($key, $val) = each ($_SESSION['tovar'])) {
        print $name[$key].' - '.$val.' рублей<br/>';
        
}
//print_r($_SESSION['tovar']);
//print_r(array_keys($_SESSION['tovar'][]));
ob_end_flush();

echo ""."<form method='post'><input type='submit' name='del' value='очистить'></form>";
if (!empty($_POST['del'])){
session_destroy();
}
?>

а вот форма
Код

<table border="1">
<tr>
<td>
<form name="q" method="POST">

<font>Утюг цена 100 руб.</font>
<input type="text" name="nam" value="">
<input type="hidden" name="id" value="1">
<input type="hidden" name="many" value="100">
<input type ="submit" value ="Положить"><br>
</form>

    </td>
    <td>
<form name="w" method="POST">
<font>Чемодан цена 120 руб</font>
<input type="text" name="nam" value="">
<input type="hidden" name="id" value="2">
<input type="hidden" name="many" value="120">
<input type ="submit" value ="Положить"><br>
</form>

        </td>
        </tr>
        <tr>
        <td>
<form name="e" method="POST">
<font>Чехол цена 70 руб</font>
<input type="text" name="nam" value="">
<input type="hidden" name="id" value="3">
<input type="hidden" name="many" value="70">
<input type ="submit" value ="Положить"><br>
</form> 
            </td>
            <td>
<form name="r" method="POST">
<font>Тяпка цена 70 руб</font>
<input type="text" name="nam" value="">
<input type="hidden" name="id" value="4">
<input type="hidden" name="many" value="70">
<input type ="submit" value ="Положить"><br>
</form> 
            </td>
                </tr>
</table>
<br><a href="page2.php">В корзину</a>


Это сообщение отредактировал(а) kyc0k - 5.5.2008, 13:33
PM MAIL   Вверх
americanets
Дата 5.5.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



кнопка удалить

Код

<a href="?delete=тутId">Удалить товар</a>


Код

if(isset($_GET['delete']){

unset($_SESSION['tovar'][intval($_GET['delete'])]);

}



Общая сумма 

Делаешь массив price соответственно товарам

Код

$price = array();
$price[1] = 25;

... 


потом считаешь все

Код

$allprice = 0;

while (list($key, $val) = each ($_SESSION['tovar'])) {

   print $name[$key].' - '.$val.' шт'.$price[$key].' за шт<br/>';  

   $allprice = $allprice+$price[$key]*$val;
}

echo $allprice;


Добавлено через 3 минуты
кнопки уменьшить и увеличить количество 

Код

$_SESSION['tovar'][intval($_GET['Id'])]--;
$_SESSION['tovar'][intval($_GET['Id'])]++;

соответственно


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Feldmarschall
Дата 5.5.2008, 14:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



kyc0k, скажи, а зачем тебе эта корзина? Это какая-то лабораторная, которую надо сдать и забыть? 
Обращался бы сразу в центр помощи.
Ведь от такой корзины, которую за тебя написал амераканский империализм, и в которой ты самостоятельно не можешь изменить ни сточки, поскольку ни одной строчки не понимаешь - пользы никакой.
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.