Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30

Корзина товаров

25.02.2016, 21:25. Показов 5174. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.
Ну на cyberforum.ru прочитал несколько тем по созданию корзины. Конечно есть что взять из них, но если можно давайте соберем все что мне нужно, в этой теме.

И так...
Я тут обдумываю как мне корзину сконструировать, и надумал такое вот: (если чё не так, поправьте плз)

есть БД с товарами. id - основной идентификатор.

Планирую сделать так.
на каждом товаре кнопочка с добавлением в корзину. Для того что бы страница не перегружалась, мы посредством JS добавляем в переменную.

когда пользователь набрал товаров в переменную(в корзину). переходим на страницу корзины, и нужно при этом переходе превратить эту JS переменную , в переменную PHP.
Правильно?

(кстати подскажите как создать такую процедуру).
данные из mysql>>>переменная JS>>>переменная PHP>>>занесение в БД

ну далее, там вроде как понятно.

Вот если можно подскажите нюансы.

Добавлено через 58 секунд
сорри, вместо переменной,- массив.))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2016, 21:25
Ответы с готовыми решениями:

Корзина товаров
В общем, помогите реализовать корзину товаров. Подскажите как сделать. Я просто не вижу немного как это выполняется. Заренее благодарен. В...

Корзина отображает одинаковое число товаров на разных ПК
Я нуб. Сделала интернет магазин впервые. И с карзиной получилась лажа. Товары которые я выбрала на одном компьютере - отображаются и на...

Корзина товаров PHP ! :cry:
Я делаю интернет магазин - не получается сделать корзину : Сохранять то что в корзине в сессиях не получится (по крайней мере у меня) в...

22
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
25.02.2016, 21:46
Цитата Сообщение от sidor84 Посмотреть сообщение
набрал товаров в переменную
в сессию. $_SESSION['car'][] = $_POST['id'];
Цитата Сообщение от sidor84 Посмотреть сообщение
и нужно при этом переходе превратить эту JS переменную , в переменную PHP.
Не совсем, подгрузить аяксом выборку по id с базы данных. У вас же сессия будет содержать только id. по этому id выбирается из баззы даных товар что бы в корзине отображались название товара картинка и т.д.

Добавлено через 5 минут
Цитата Сообщение от sidor84 Посмотреть сообщение
(кстати подскажите как создать такую процедуру).
данные из mysql>>>переменная JS>>>переменная PHP>>>занесение в БД
на кнопке скажем так может быть id = " id из бд нашего товара" отслеживаем клик добавляем id в перменную в Js отправляем ajax запрос и добавляем таким образом без перезагрузки id в сессию
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 13:57  [ТС]
Во всем что я написал, и во всем что мне написали, есть масса недостатков при работе. Я честно говоря обдумывал сделать все через сессию, или через куки, но везде свои минусы.

побороздив просторы интернета, наткнулся на XMLHttpRequest. Мне кажется это лучший способ создать "корзину", ну или "избранные товары". Мы то при клике, сразу заносим в БД инфу, и страница при этом не перегружается . а это то что нужно.

так вот теперь вопрос по самой схеме возникает:
как мне по клику на chekbox отправить данные в массив который находится на отдельной странице(страница обработчик).

в обработчике находится массив с id товаров. она же сразу при обращении будет записывать этот массив в БД.

HTML5
1
2
3
4
5
<form method="post" action="obrabotchik.php">
   <input type="checkbox" value="id1">tovar 1<Br>
   <input type="checkbox" value="id2">tovar 2<Br>
   <p><input type="submit" value="Отправить"></p>
</form>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function loadXMLDoc()
{
if (window.XMLHttpRequest)
  {// код для IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// код для IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","stranica.php",true);
xmlhttp.send();
}
это то код который я нашел

как мне переделать этот код чтоб данные id передавались в обработчик?

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

Добавлено через 34 минуты
Вот еще кое что:
HTML5
1
2
3
4
5
6
7
8
9
<form action="new.php" method="post"> 
    <p>
        <input type="checkbox" name="id_tovar[]" value="id1"> id1
        <input type="checkbox" name="id_tovar[]" value="id2"> id2
        <input type="checkbox" name="id_tovar[]" value="id3"> id3 
        <input type="checkbox" name="id_tovar[]" value="id4"> id4
    </p> 
        <input type="submit"> 
</form>
PHP
1
2
3
4
5
6
7
8
<?php
$id_tovar = $_POST["id_tovar"];
if (is_array($id_tovar))   {
foreach ($id_tovar as $key => $value)   {
print "$value.<br>";
}
}
?>
тут при выборе нескольких checkbox я отправляю в массив эти данные.
а как сделать чтоб предидущие не затирались?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
27.02.2016, 14:39
Цитата Сообщение от sidor84 Посмотреть сообщение
мы посредством JS добавляем в переменную.
А если юзер решит перейти на другую страницу - его корзина удаляется?
Цитата Сообщение от sidor84 Посмотреть сообщение
Мне кажется это лучший способ создать "корзину", ну или "избранные товары". Мы то при клике, сразу заносим в БД инфу
Для зарегистрированных пользователей. А если юзер - гость, не прошедший никаких регистраций? Даже если придумаете механизм идентификации гостей (те же сессии/куки), хранение их корзин в БД создаст кучу лишнего мусора, поскольку удалив куки, юзер для сервера станет новым, а его старая корзина останется навсегда лежать в базе (хотя можно придумать автоочистку по крону, но как-то это не комильфо, для такой простой задачи и таблица в БД, и автоочистка).

Цитата Сообщение от sidor84 Посмотреть сообщение
давайте соберем все что мне нужно, в этой теме.
Всё давно собрано и обсосано, тем и стандартных решений куча. Зачем изобретать уже давно придуманное?
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 15:39  [ТС]
А если юзер решит перейти на другую страницу - его корзина удаляется?
---
Данные не удалятся, поскольку уже находятся в БД, и в корзине они отражаются именно из БД.


________________________________________ __________________________________
Для зарегистрированных пользователей. А если юзер - гость, не прошедший никаких регистраций? Даже если придумаете механизм идентификации гостей (те же сессии/куки), хранение их корзин в БД создаст кучу лишнего мусора, поскольку удалив куки, юзер для сервера станет новым, а его старая корзина останется навсегда лежать в базе (хотя можно придумать автоочистку по крону, но как-то это не комильфо, для такой простой задачи и таблица в БД, и автоочистка).

---
Структура моего сайта именно такая что все должны быть зарегистрированы. по сути это сайт не всеобщий, а для конкретной группы людей, которые полюбому будут зареганы. (но это уже другой вопрос)
________________________________________ ______________________________________

Всё давно собрано и обсосано, тем и стандартных решений куча. Зачем изобретать уже давно придуманное?
---
Для лучшего понимания темы. Понимаете, когда человек что то просто вычитывает на форумах, это одно, а когда он индивидуально понимает и вникает в каждую деталь в коде, плюс задает вопросы, это другое.

И вообще:
Я считаю что подобные комментарии к вопросу не уместны. Вы в данном случае ничем не помагаете, а только засоряете нормальный форум своей болтавней.

Добавлено через 15 минут
Подскажите пжлст.

есть небольшая таблица
SQL
1
2
3
id - 1
user_id - 12 
goods - 5,8,12
в goods, будут занесены id товаров через запятую (или лучше выбрать какой-то другой символ?)
как мне их вывести из БД поотдельности?

Спасибо)
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.02.2016, 15:55
sidor84, в данном случае сессии и куки - для гостей, БД - для региных. Почему? Догадаться не сложно.
Цитата Сообщение от sidor84 Посмотреть сообщение
Я считаю что подобные комментарии к вопросу не уместны. Вы в данном случае ничем не помагаете, а только засоряете нормальный форум своей болтавней.
Цитата Сообщение от sidor84 Посмотреть сообщение
давайте соберем все что мне нужно, в этой теме.
Полагаете, что щас все подорвутся и начнут копипастить другие темы и вставлять в эту?
Цитата Сообщение от sidor84 Посмотреть сообщение
Для лучшего понимания темы. Понимаете, когда человек что то просто вычитывает на форумах, это одно, а когда он индивидуально понимает и вникает в каждую деталь в коде, плюс задает вопросы, это другое.
Для лучшего понимания ЛЮБОЙ темы надо посидеть и поизучать самостоятельно. А вот когда действительно поймете, что вы в тупике - обрашаться за помощью.
Цитата Сообщение от sidor84 Посмотреть сообщение
как мне их вывести из БД поотдельности?
Поизучайте
Удачи!
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 16:07  [ТС]
та это я все понимаю, но как то лучше дается посредством общения)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    
                $result = mysql_query ("SELECT * FROM izbrannoe WHERE user_id='12'", $db);
        $myrow = mysql_fetch_array($result);
        $goods = $myrow['goods'];
        $goods  = explode(",", $goods);
        
        
        
        $result_st = mysql_query ("SELECT * FROM partner WHERE id='$goods'",$db);
        $myrow_st = mysql_fetch_assoc($result_st);
        
        do   
    {
        printf ("%s, %s", $myrow_st['id'], $myrow_st['description']);
          }
     while ($myrow_st = mysql_fetch_assoc($result_st));

Вот я взял из таблицы где хранятся избранные товары, строку с их id.
далее делаю массив
$goods = explode(",", $goods);

и при попытке в цикле вывести, ничего не происходит (ошибок тоже нет)
что я тут делаю не так.

Если можно, по сути давайте, а то Sрачь получается!
Спасибо.
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.02.2016, 16:19
Вместо
PHP
1
$result_st = mysql_query ("SELECT * FROM partner WHERE id='$goods'",$db);
напишите
PHP
1
mysql_query("SELECT * FROM partner WHERE id='$goods'",$db) or die (mysql_error());
Какую ошибку выдаст?
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 16:35  [ТС]
понятно!
________________________________

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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
        $result = mysql_query ("SELECT * FROM izbrannoe WHERE user_id='12'", $db);
        $myrow = mysql_fetch_array($result);
        $goods = $myrow['goods'];
        $goods  = explode(",", $goods);
        
        
        foreach($goods as $value){
            
        $result_st = mysql_query ("SELECT * FROM partner WHERE id='$value'",$db)  or die (mysql_error());
        $myrow_st = mysql_fetch_assoc($result_st);
            
        }
где я туплю постоянно?
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.02.2016, 16:39
Цитата Сообщение от sidor84 Посмотреть сообщение
PHP
1
$result_st = mysql_query ("SELECT * FROM partner WHERE id='$value'",$db) or die (mysql_error());
В id данные в каком виде лежат?

Добавлено через 1 минуту
Какой то определенный товар из перечня $goods = $myrow['goods'];?
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 16:47  [ТС]
не знаю правильно ли понял вопрос:

id в таблице partner это идентификатор товара (автоинкремент),
а goods в таблице izbrannoe это список id через запятую (1,18,34,48)

Добавлено через 2 минуты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$result = mysql_query ("SELECT * FROM izbrannoe WHERE user_id='12'", $db);
        $myrow = mysql_fetch_array($result);
        $goods = $myrow['goods'];
        $goods  = explode(",", $goods);
        
        
        foreach($goods as $value){
            
        $result_st = mysql_query ("SELECT * FROM partner WHERE id='$value'",$db)  or die (mysql_error());
        $myrow_st = mysql_fetch_assoc($result_st);
        
        
        printf ("
        %s
    " ,$myrow_st['id']);
                
        }

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


НО у меня еще будет масса вопросов, тему не закрывайте пока...
я пока недобью результат, неотстану))
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.02.2016, 16:52
PHP
1
2
3
4
5
6
foreach($goods as $value){      
    $result_st = mysql_query ("SELECT * FROM partner WHERE id='$value'",$db)  or die (mysql_error());
    $myrow_st = mysql_fetch_assoc($result_st);
    $id = $myrow_st['id'];//или как у вас столбец называется
    echo $id.'<br />';
}
так что выведет?

Добавлено через 2 минуты
Цитата Сообщение от sidor84 Посмотреть сообщение
Вот видите, посредством общения, и на мысль наталкиваете. Этож хорошо)
Могу сказать, как человек, прошедший через это: ВЫ САМИ ДО ЭТОГО ДОДУМАЛИСЬ. Я ТУТ НИ ПРИЧЕМ...
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 17:06  [ТС]
да все чётко, я просто ПРИНТФ пишу потому что у меня там немножко другой вывод. Кароче чтоб не засорять, пишу сокращенно. А вообще вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
foreach($goods as $value){      
    $result_st = mysql_query ("SELECT * FROM partner WHERE id='$value'",$db)  or die (mysql_error());
    $myrow_st = mysql_fetch_assoc($result_st);
    $id = $myrow_st['id'];
    $img_mini = $myrow_st['img_mini'];
    $price = $myrow_st['price'];
    $description = $myrow_st['description'];
    printf ("
        <a href='product_page.php?id=%s&cat=%s'>
            <div id='spisok_tovarov'>
                <div id='img_spisok_tovarov'>
                    <img src='%s' />
                </div>  
                <div id='price'>
                    <strong>%s</strong> рос. руб
                </div>
                <div id='tekst_spisok_tovarov'>
                         %s
                </div>
            </div>
        </a>
    " ,$id, $_GET['cat'], $img_mini ,$price ,$description);
          };
Добавлено через 1 минуту
я сам додумался????
та нифига, еслиб не общался, сидел бы тут у компа, тупил бы)))

Добавлено через 7 минут
но тут предстоит вообще страшная работа.
Помогите понять логику... ну или структуру.

я в ту область где html код идет, должен добавить chekbox с id товаром.
и при клике, этот айдишник передается в этот массив и через обработчик попадает в goods в таблице izbrannoe

ну а при снятии этой галочки, удалять этот id

кароче у меня мозг ща взорвется!
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.02.2016, 17:20
Да в общем, ничего сложного.
Добавляете чекбокс с name = "id[]" value = "$id".//передаем массивом
Цитата Сообщение от sidor84 Посмотреть сообщение
и при клике, этот айдишник передается в этот массив и через обработчик попадает в goods в таблице izbrannoe
PHP
1
2
3
foreach($_POST['id'] as $id){
    //запрос в БД
}
Цитата Сообщение от sidor84 Посмотреть сообщение
ну а при снятии этой галочки, удалять этот id
это как? уже после добавления в БД? При правке списка товаров?
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 17:46  [ТС]
PHP
1
2
3
4
5
6
7
8
$id_tovar = $_POST["id_tovar"];
if (is_array($id_tovar))   {
foreach ($id_tovar as $key => $value)   {
     array_push($id_tovar, $key); 
     mysql_query ("UPDATE izbrannoe SET goods='$value' WHERE user_id='12'",$db) ;
print "<strong>.$value.</strong><br>";
}
}
вроде как работает, но при этом не добавляет в строку, а затирает данные.
как сделать так что бы дописывало в БД
(к удалению позже вернусь)
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.02.2016, 17:49
Цитата Сообщение от sidor84 Посмотреть сообщение
как сделать так что бы дописывало в БД
PHP
1
2
$data = 'то, что есть';
$data .= 'то, что дописать';
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 18:19  [ТС]
чё та не въехал я!
куда именно добавлять точку.

и есть еще проблема.
я добавляю в БД id ($value,)
PHP
1
mysql_query ("UPDATE izbrannoe SET goods='$value,' WHERE user_id='12'",$db)
ставлю запятую что бы их разделить. а как быть с последним?. там то запятая не нужна. или если это один товар.
получается в goods записывается "8," а надо без запятой
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.02.2016, 18:22
PHP
1
if(end($value)) echo '';
0
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 30
27.02.2016, 20:31  [ТС]
а вопрос по точке. Можете объяснить куда её внедрять.
да и с
PHP
1
if(end($value)) echo '';
тоже не пойму куда вставлять

Добавлено через 1 минуту
Я так понимаю всё это тут должно происходить???

PHP
1
2
3
4
5
6
7
8
9
10
11
12
if (isset($_POST["id_tovar"])) {
        $id_tovar = $_POST["id_tovar"];
            if (is_array($id_tovar))   {
            foreach ($id_tovar as $key => $value)   {
                
                 $value = array_push($id_tovar, $key);
                
                 mysql_query ("UPDATE izbrannoe SET goods='$value,' WHERE user_id='12'",$db) ;
            print "<strong>.$value.</strong><br>";
            }
            }
        }
Добавлено через 1 час 45 минут
ну подскажите!
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.02.2016, 20:47
Оператор .=
PHP
1
2
3
$data = 'Hello';
$data .= ', world';
echo $data//Hello, world
Тернарный оператор:
PHP
1
$value = (end($value)) ? $value.'.' : $value.', ';
Добавлено через 1 минуту
Надеюсь, что сейчас все понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2016, 20:47
Помогаю со студенческими работами здесь

Спарсить: 12 ссылок на изображении товаров, 12 ссылок на товары, 12 цен товаров (html dom)
Начал учится парсить (с php_html_dom), но не могу вникнуть в процесс (как это работает?). Помогите понять, напишите пример для ссылки:...

Корзина
Привет друзья. Нужно создать Корзина для интернет магазина при щелчок &quot;Добавит в корзину&quot; продукт должен добавляться в корзину

Корзина
Пишу интернет-магазин. Осталась только корзина. Мучаюсь, не могу придумать. Без JS. &lt;?php $link =...

Корзина пользователя
Всем привет. Сделал регистрацию и авторизацию пользователей для интернет-магазина. После авторизации пользователя кидает в категории с...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru