![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| kyc0k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Я начинающий в ПХП, но вот нужно сделать мне слдеующее:
Для интернет магазина нужно написать корзину покупок, осуществлять буду с помощью сессий без использования БД. Работать будет примерно так: Есть некая форма, где отображены товары, рядом с каждым товаром имеется кнопка и текстовой поле(количество выбранного товара). Пользователь вписывает в соответствующее поле количество и нажимает кнопку эти данные улетают в массив сессии. Отображается это будет в таком виде с верху каждой страницы, где разумеется будет стартовать сессия Вот так примерно: Ваша корзина: Чемоданы кол-во: 3 Удалить Прищепки кол-во: 8 Удалить И еще кнопка удалить будет удалять товар полностью, а не поодноому! Кто может помочь в осуществлении данной корзины какими либо ссылками и полезной инфой, если кто-то подобное делал, то подскажите что к чему и насколько это сложно! Заранее спасибо!)))) |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Не сложнее, чем любой другой скрипт.
Все сводится к работе с формами. Добавить - форма. Удалить - форма. Ты умеешь обрабатывать формы? Сессия - это массив. Если ты умеешь выводить содержимое массива в цикле, то никаких проблем не возникнет Это сообщение отредактировал(а) Feldmarschall - 3.5.2008, 19:32 |
|||
|
||||
| kyc0k |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
В этом то и проблема, не получается у меня(((,
ну вот на стряпал, я вот такой код, а дальше не едит ни чего, не понимаю я как несколько кнопок в массив класть!
Это сообщение отредактировал(а) MoLeX - 4.5.2008, 05:59 |
||||||
|
|||||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
С таким подходом и гостевую не напишешь - не то что корзину.
Почему не писать честно - "научите меня программировать с нуля" Торопиться со сложением уже лежащего в корзине товара не надо. Научись хотя бы просто класть. То есть, просто присваивать $_SESSION['id']=$_GET['count']; Дальше надо ввести идентификатор товара, и передавать его вместе с количеством. Верно? |
|||
|
||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Ну да, согласен
ну что то вроде того, как я понял передаем идентификатор по нажатию кнопки, самим идентификатором служит name кнопки или её id, ну а количеством будет value текстового поля вроде так или нет??? |
||||
|
|||||
| Feldmarschall |
|
||||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
ну, можно и так, да.
Хотя если идентификатор цифровой, то в качестве имени использовать не получится. поэтому лучше добавить скрытое поле
а в скрипте, соответственно:
в сессию мы кладем не прямо, а в массив cart потому, что в сессии тоже нельзя цифровые ключи Это сообщение отредактировал(а) Feldmarschall - 3.5.2008, 22:21 |
||||
|
|||||
| kyc0k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
спасибо конечно за небольшой пример, но ведь это только для одной пары субмита и текстового, а вот если их будет много, в этом то и основная проблема !
|
|||
|
||||
| Cache |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 6.11.2007 Репутация: нет Всего: нет |
kyc0k
у каждого товара своя форма и везде она одинакова, кроме name, в который записан уникальный артикул товара |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
kyc0k, в этом случае id товара можно передавать в имени поля count
А в скрипте в цикле перебирать массив $_POST['count'] |
|||
|
||||
| kyc0k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Вот к примеру есть три формы, своя для каждого товара. И вот не получается у меня сделать так, указать количество, потом нажать кнопку в форме "q" в сесиию пришло такое: Утюг кол-во: 3 если указать количество во второй форме "w" и нажать в ней же кнопку, то стало так: Утюг кол-во: 3 Чемодан кол-во: 1 и т.д. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Ну я же писал выше, с примером.
где у тебя скрытое поле со словом утюг? |
|||
|
||||
| kyc0k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Ну вот и скрытое поле, правильно?? Тогда в ПХП что с сессиями делать? |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
И код я тоже писал.
Какой смысл задавать вопросы, если ответы ты не читаешь? |
|||
|
||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Эх... Читал я ответы, вот такой код получается, вот если я нажимаю кнопку в первой форме, то количество заносится, после вписываю количество в другой форме и нажимаю на кнопку, то значение из первой формы затирается последним! Это сообщение отредактировал(а) kyc0k - 4.5.2008, 10:23 |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Во-первых, какую смысловую нагрузку несет простое написание имени переменной, которое ты везде добавляешь в свои скрипты:
во-вторых, ничего не затирается. просто своим эхом ты выводишь только то, что добавил этой формой. А для вывода массива надо использовать цикл. |
|||
|
||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Ну, а как тогда?
А каким циклом foreach ?? И как выводить массив с помощью цикла? |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Да никак! Просто не писать эту бессмысленную строчку. Об этом написано во всех документациях и учебниках. Язык надо учить по учебнику, а не на форуме
Это сообщение отредактировал(а) Feldmarschall - 4.5.2008, 11:16 |
|||
|
||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Теперь ругается на эту строчку:
Что тут может быть? Когда первый раз обновил страницу с этим скриптом, то вывелись все значения массива в строчку, когда попытался добавить товар, то показал выше указанную ошибку Вот код
Это сообщение отредактировал(а) kyc0k - 4.5.2008, 12:10 |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
при чем тут $_GET, если форма у тебя методом пост?
что за бессмысленные у тебя все время куски кода? теперь это присвоение переменных $id и $count, да ещё и по два раза. |
|||
|
||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Не форма у меня как раз ГЕТом передает!
Да я там по одному ставил, просто при копирование само как то влезло! Я вообще их уберал, всё равно одно и тоже, а когда первый раз скрипт запустил, то всё чики пики было, тока все товары в одну строчку, а когда решил добавить товар, то ошибка и вылезла! |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Плохо, что ГЕТом.
Разбирайся, в общем. Вся информация у тебя есть. То, что с первого раза не получается - это ничего страшного. |
|||
|
||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Вот что получилось, теперь без ошибки, но выводится всё только последняя запись((( |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
вот не понимаю я, что ж тебя тянет все время на какие-то странные телодвижения
я пишу один код - ты переписываешь по-своему. я пишу нормальный код - ты переписываешь с ошибками, и приходишь жаловаться, что он не работает. такое ощущение, что ты пишешь чтобы просто поболтать. |
|||
|
||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Ну а вот где тут ошибка?? почему массив целиком не выводится, а только последняя запись??
Нет это не так! |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
да потому что ты его уродуешь, как бог черепаху.
$a=array($_SESSION['cart']); - это зачем? $_SESSION['cart']=$_POST['count'];- это зачем? почему код вывода корзины не такой, как я тебе писал? почему код добавления в корзину не такой, как я писал? Добавлено через 1 минуту и 37 секунд Что ты хочешь? пример? А они тебе помогают - примеры эти? Какой смысл писать тебе пример, если ты все равно все по-своему переписываешь? |
|||
|
||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
; не там
Это сообщение отредактировал(а) americanets - 4.5.2008, 16:39 -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Форму туже оставил, вот ПХПшник вроде как ты говорил, с ним тоже ни чего не работает!
Согласен пример мало чем поможет для понимания! |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
americanets, id товара забыл в корзину положить
и цену вычислять не имеет смысла - все ранво в корзину она не попадает. kyc0k, ну так у тебя обратно POST уже. |
|||
|
||||
| kyc0k |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Да я и гет и пост пробовал всё равно одно и тоже((( |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Пробовать не надо. Надо осмысленные действия совершать.
для начала учись класть в корзину. без вывода. и, без, блин, суммы. ты, не успев сделать одно, хватаешься за другое. сначала делай добавление. а проверяй содержимое корзины так, как написал американец: print_r($_SESSION['cart']); и поменьше бессмысленных присвоений! пиши в код только то, что имеет смысл и потом используетсядальше в скрипте! |
|||
|
||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Feldmarschall, это код kyc0k, только поправлен чтоб все печатал а не только последнее
-------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
| americanets |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Это сообщение отредактировал(а) americanets - 4.5.2008, 17:29 -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
americanets, нафига такие сложности?
Парень в двух-то строчках умудряется сделать три ошибки, а ты ему целую библиотеку накатал. Чтобы понять принцип, кода должно быть как можно меньше. |
|||
|
||||
| americanets |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
Удалять товар
Добавлено @ 17:26 Feldmarschall, а он и меньше , но поясню Тут функция добавить по Id , делает сессию id товара и его количество
активируем функцию если POST есть , на будущее для empty 0 - это не есть
тут мы печатаем то что есть в сессии $key это Id $val количество $name это массив с данными можно сделать массив с ценой и прочим, если работать с базой то массив всегда готов
Это сообщение отредактировал(а) americanets - 4.5.2008, 17:28 -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||||||
|
|||||||||
| kyc0k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 3.5.2008 Репутация: нет Всего: нет |
Всем кто помогал спасибо!
Вроде получается прям, то что нужно Вроде только осталось всего два вопроса, как сделать отдельную кнопку удалить для каждого товара, ну и подсчет общей суммы всех товаров. Кнопка "Удалить товар" у меня работает, но только удаляет после второго нажатия и сразу весь товар, чему я не удивлен т.к. она уничтожает сессию. unset($_SESSION['tovar'][$Id]), вот это как прикрутить?? А вот с общей суммой товара вообще труба какаято! Получается что то такое:
а вот форма
Это сообщение отредактировал(а) kyc0k - 5.5.2008, 13:33 |
||||
|
|||||
| americanets |
|
||||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1100 Регистрация: 27.9.2006 Репутация: 5 Всего: 12 |
кнопка удалить
Общая сумма Делаешь массив price соответственно товарам
... потом считаешь все
Добавлено через 3 минуты кнопки уменьшить и увеличить количество
соответственно -------------------- Пусть популярную музыку слушают те, среди кого она популярна |
||||||||||
|
|||||||||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
kyc0k, скажи, а зачем тебе эта корзина? Это какая-то лабораторная, которую надо сдать и забыть?
Обращался бы сразу в центр помощи. Ведь от такой корзины, которую за тебя написал амераканский империализм, и в которой ты самостоятельно не можешь изменить ни сточки, поскольку ни одной строчки не понимаешь - пользы никакой. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |