Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118

Не получается передать значение select в корзину

06.12.2020, 10:24. Показов 3150. Ответов 40

Студворк — интернет-сервис помощи студентам
Всем привет! Бьюсь над этим кодом:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form action="index.php" method="get">
<input type="hidden" name="view" value="add_to_cart">
<input type="hidden" name="id" value="<?=$product['id']?>">
<?
$sql="SELECT * FROM sizes WHERE `sizes`.`id_boot`='$id' ";;
$a=mysqli_query($link, $sql);
while ($b = mysqli_fetch_array($a ))
{
      echo "<option  value='$b[0]' >  $b[2] </option>";
} 
?>
</select>
<input type="submit" name="go" value="Добавить в корзину">
</form>
Если в option стоит value, то в корзину попадает id_boot, а если value урать и оставить только $b[0], то в корзину попадает выбранный размер.
Это корзина:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<tr>    
            <th>N п/п</th>
            <th>Товар</th>
            <th>Размер</th>
            <th>Цена</th>
            <th>Кол-во</th>
            <th>Всего</th>
            <th>Удалить</th>
</tr>
      
      <?php 
      $i = 1;   
      foreach ($_SESSION['cart'] as $id => $quantity):
         $product = get_product($id);
         
         $b =  $_SESSION['cart_size'];
                  
            if (isset($_GET['size'])) {$b=  $_GET['size'];} else {echo "NOT?????!!!!";}   
       ?>
      <tr>
          <td align="center"><?=$i;?></td>
          <td align="center"><?=$product['title']; ?></td>
          <td align="center">   <?=$b; ?> </td>
          <td align="center">   <?=number_format($product['price'],2); ?> руб</td>
          <td align="center"><input type="text" size="2" name="<?=$id; ?>" maxlength="2" value="<?=$quantity; ?>" /></td>
          <td align="center">  <?=number_format($product['price'] * $quantity ,2); ?> руб</td>
      </tr>

Эта проверка показывает, что в $b $_GET не попадает:
PHP
1
if (isset($_GET['size'])) {$b=  $_GET['size'];} else {echo "NOT?????!!!!";}
И если по очереди выбрать у одного ботинка два разных размера, то корзина записывает только последний в одной строчке, а вот две строчки с одинаковым ботинком и двумя разными размерами никак не получается вывести.

Можете помочь?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.12.2020, 10:24
Ответы с готовыми решениями:

Не получается передать значение из <select>
Доброго времени суток. Сразу извиняюсь перед всеми - я оч. слаб в asp.net. Поэтому не гнобите сильно :) Суть такая, есть форма обратной...

Как при выборе значения в select выполнить функцию php и передать в ей аргумент (значение select)
Вообще, я хочу сделать выборку в таблице. После выбора в &lt;select&gt;, в таблице должны остаться запись только с подходящим значением. Вот моя...

Передать выбранное значение select
Здравствуйте, создаю форму добавления товара на сайт. на нем есть 2 выпадающих списка: тип товара и бренд. как сделать, чтобы элементы...

40
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
09.12.2020, 00:06  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от vinikon Посмотреть сообщение
может этот пример вам как-то поможет. потому что ваш код весь надо проверять.
Весь вечер пытаюсь перебрать ваш код, но одни ошибки

Массив я правильно представил из функций?:
PHP
1
2
 $db_goods = get_product($id);
$db_sizes = get_sizes($id);
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$db_goods = get_product($id);
$db_sizes = get_sizes($id);
foreach ($db_goods as $item => $info) {
    ?><h3><?= $info['title'] ?></h3><form action="index.php" method="get">
<input type="hidden" name="view" value="add_to_cart">
<input type="hidden" name="id" value="<?= $item ?>">
<select name="size" size="1">
<?
foreach ($db_sizes as $id => $param) {
    if ($param['id'] != $item) {
        continue;
    }
    ?><option value="<?= $param['size'] ?>"><?= $param['size'] ?></option>
</select> <? } ?>
Здесь не определяются ни $info, ни $param, ни $item.......
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
09.12.2020, 18:31
вот смотрите в чем ваша ошибка. вы не учитываете структуру, которую возвращает get_product($id). вы почти уже правильно сделали, только это для того формата данных, какой я показал чисто для примера, а не для вашего случая.
осталось только настроить вывод данных по вашему варианту. только есть еще непонятные моменты, например:
вы выводите только один товар? почему у вас get_product($id), вы что продаете только один вид товара, но разных размеров? если взглянуть на мой пример, то там два товара и id=10 и 20. а get_product($id) выберет один только, например id=20 и только 1 будет выводить. поэтому ваш код и не работает, потому у что него не массив продуктов, а один элемент.
в-общем для одного товара - то что у вас, надо примерно так
1 - удаляете foreach ($db_goods as $item => $info) {. у вас только один товар там в цикле нечего выводить. вместо $info надо $db_goods, например $db_goods['title']
2 - вместо $item оставьте $id
3 - массив $db_sizes вы получили из бд , если не ошибаюсь, таким запросом
PHP
1
$sql="SELECT * FROM sizes WHERE `sizes`.`id_boot`='$id' ";
после fetch_all должен быть примерно такой формат id, id_product, size (индекс поля с размером = 2)
PHP
1
2
3
4
[
    [2, 3, 41],
    [3, 3, 44],
]
поэтому второй foreach надо переписать вот так
PHP
1
2
3
foreach ($db_sizes as $size) {
    ?><option value="<?= $size[2] ?>"><?= $size[2] ?></option>
</select> <? } ?>
если же хотите выводить несколько продуктов, то надо их всех считать из базы запросом типа get_products() или выбрать нужные из категории или там по своим каким-то планам, тут уж вам самому решать надо. и тогда использовать цикл foreach
PHP
1
2
foreach ($products as $product) {
    // и тут вставлять в зависимости от структуры данных название продукта, id продукта
Добавлено через 3 часа 37 минут
вот этот скрипт немного усложненный http://emptycart.rf.gd/
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
09.12.2020, 20:31  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
вот этот скрипт немного усложненный http://emptycart.rf.gd/

Благодарю за кучу полезной информации!

А это что за чудо такое???

Добавлено через 1 час 18 минут


Как я понял весь код записан в одном файле index.php?

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

Code
1
2
select name="size" id="size" size="1">
<option value="40">40</option><option value="41">41</option><option value="43">43</option><option value="44">44</option></select>
По идее легче в БД записать или удалить размер, чем каждый раз в этот код залезать?
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
09.12.2020, 22:48
они и у меня выводятся циклом. )). это html код, сформированный скриптами php.
код своей страницы гляньте - там тоже не увидите скриптов.
Цитата Сообщение от arhat Посмотреть сообщение
Как я понял весь код записан в одном файле index.php?
список товаров в файле index.php, корзина в файле cart/index.php. код тот же самый как у вам показывал, только добавил редактирование числа товаров в корзине и их удаление оттуда

Добавлено через 19 минут
там можно, если в корзине есть товары, щелкнуть по количеству товаров и перейти в корзину

Добавлено через 52 секунды
простенькая обычная корзина
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
15.12.2020, 00:04  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
там можно, если в корзине есть товары, щелкнуть по количеству товаров и перейти в корзину

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

Добавлено через 4 часа 13 минут
До такой степени намудрил, что теперь номер размера вообще не попадает в выпадающий список! Что с новыми изменениями, что старые варианты кодов вставляю...
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
15.12.2020, 11:14
вам надо научиться обрабатывать массивы и работать с базой данных. в частности представлять, в каком формате оттуда получаете данные.
покажите весь ваш код, поищем, что там не работает
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
15.12.2020, 12:15  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
вам надо научиться обрабатывать массивы и работать с базой данных. в частности представлять, в каком формате оттуда получаете данные.
покажите весь ваш код, поищем, что там не работает
Я тут в больничку намедни попал, почти на неделю выбыл из строя Времени было много, пытался немного подтянуть знания

Даже в этом старом коде перестали размеры в список попадать :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form action="index.php" method="get">
<input type="hidden" name="view" value="add_to_cart">
<input type="hidden" name="id" value="<?=$product['id']?>">
<select name="size" size="1">
<?
$sql="SELECT * FROM sizes WHERE `sizes`.`id_boot`='$id' ";
$a=mysqli_query($link, $sql);
while ($b = mysqli_fetch_array($a ))
{
      echo "<option  value='$b[0]' >  $b[2] </option>";
} 
?>
</select>
<input type="submit" name="go" value="Добавить в корзину">
</form>
Подумал ещё так вывести, но куча ошибок выскочила:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?  $product = get_products($id);
         $size = get_sizes($id);
      foreach ($product as $item => $id) {
    ?>
    <h3><?= $product['title'] ?></h3>                                    
 <form action="index.php" method="get">
<input type="hidden" name="view" value="add_to_cart">
<input type="hidden" name="id" value="<?=$product['id']?>">
<select name="size" size="1">
<?
   $size = get_sizes($id);
   foreach($size as $item)?>
    <option  value="<?= $item['size'] ?>" > <?= $item['size'] ?> </option>   //  Здесь две ошибки Notice: Undefined index: size
<? } ?>
</select>
<input type="submit" name="go" value="Добавить в корзину">
</form>
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
15.12.2020, 12:57
arhat, выздоравливайте, берегите себя.

1 покажите все появившиеся ошибки
2 функция get_products у вас что выводит - один товар или список? я пока не буду примеры приводить - вы их слишком буквально понимаете. ваш код настроим.
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
15.12.2020, 15:16  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
выздоравливайте, берегите себя.
1 покажите все появившиеся ошибки
2 функция get_products у вас что выводит - один товар или список? я пока не буду примеры приводить - вы их слишком буквально понимаете. ваш код настроим.
Благодарю!
1. Одну ошибку нашёл, исправил - здесь <h3><?= $product['title'] ?></h3> изначально поставил почему-то $id.
2. В другом файле эти функции лежат.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function get_products($start, $num)
    {
        global $link;
        
        $query = "SELECT * FROM products ORDER BY title DESC  LIMIT $start, $num ";
        
        if(!$result = mysqli_query($link, $query))
        return false;
        $items = mysqli_fetch_all($result,MYSQLI_ASSOC);
        mysqli_free_result($result);
        return $items; 
    }
 
function get_sizes($id)
  {
    global $link;
    
    $query = ("SELECT * FROM `sizes` WHERE `sizes`.`id_boot`='$id'   ");
    
    $result = mysqli_query($query);
    
    $row = mysqli_fetch_array($result);
    return $row;
    }
Добавлено через 1 час 30 минут
Но здесь получается, что если убрать
PHP
1
foreach ($product as $item => $id)
, то в
PHP
1
<h3><?= $product['title'] ?></h3>
всё равно выводит из БД название товара, значит вытягивает значения со страницы с функциями... А вот $size никак не хочет вытягивать....
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
15.12.2020, 17:29
попробуйте пока так:
PHP
1
2
$products = get_products($start, $num); // ТУТ ПОСТАВЬТЕ РЕАЛЬНЫЕ ПЕРЕМЕННЫЕ $start и $num
foreach ($products as $product) { // ЭТА СТРОЧКА ВМЕСТО foreach ($product as $item => $id) {
вы по какому источнику весь этот код пишите? что за учебник?
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
15.12.2020, 17:41  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
попробуйте пока так:
PHP
1
2
$products = get_products($start, $num); // ТУТ ПОСТАВЬТЕ РЕАЛЬНЫЕ ПЕРЕМЕННЫЕ $start и $num
foreach ($products as $product) { // ЭТА СТРОЧКА ВМЕСТО foreach ($product as $item => $id) {

вы по какому источнику весь этот код пишите? что за учебник?
Функция get_product выдаёт данные в $product, а вот get_sizes не передаёт данные в $size, хоть ты тресни.

Раньше так выдавал размеры, а сейчас даже так перестал, я уже молчу про ваш сложный код....:
PHP
1
2
3
4
$query = "SELECT * FROM `sizes` WHERE `sizes`.`id_boot`='$id'   ";
    $result = mysqli_query($link, $query); // Если здесь убрать $link (соединение с БД), то даже ошибок не пишет, хотя раньше сразу выскакивали.....  
    $row = mysqli_fetch_array($result); 
      echo "<option  value='$row[2]' > $row[2]  </option>";
Я учебные видеокурсы смотрю, старые в основном. Нашёл из бауманки, толковый дядька, но там долго ещё смотреть, вникать......
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
15.12.2020, 21:09
Цитата Сообщение от arhat Посмотреть сообщение
ваш сложный код
что ж в нем сложного. азы для начинающих. вам бы какие-то другие курсы, по-понятней найти. а то с этими расшибетесь в лепешку - а толку никакого не будет.
вы посмотрите внимательней на запрос. что ж за вас что ли додумывать? что такое там $id, откуда взялось? зачем вы $id поставили? наверное там должен быть $product['id']
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
15.12.2020, 22:52  [ТС]
Это вы про какую строчку говорите? В размерах такого нет:
Цитата Сообщение от vinikon Посмотреть сообщение
должен быть $product['id']
Как я понимаю, азы это "Hello, world"

Какие уроки, курсы можете подсказать?
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
16.12.2020, 13:27
Цитата Сообщение от arhat Посмотреть сообщение
Как я понимаю, азы это "Hello, world"
ну никак не интернет-магазин.
потратив на изучение основ некоторое время, вы потом себе его больше сэкономите.
htmlacademy
Трепачев - тут есть практика по темам
видео-уроки по php

Цитата Сообщение от arhat Посмотреть сообщение
В размерах такого нет:
arhat, смотрите в свой код
Цитата Сообщение от arhat Посмотреть сообщение
$query = "SELECT * FROM `sizes` WHERE `sizes`.`id_boot`='$id'   ";
Добавлено через 3 минуты
PHP
1
$query = "SELECT * FROM sizes WHERE id_boot='".$product['id']."'";
Добавлено через 1 час 42 минуты
или свою функцию get_sizes($id) исправьте
PHP
1
2
3
4
5
6
7
8
function get_sizes($link, $id) {    
    $query = ("SELECT * FROM `sizes` WHERE `sizes`.`id_boot`='$id'   ");
    
    $result = mysqli_query($link, $query);
    
    $rows = mysqli_fetch_all($result);
    return $rows;
}
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
18.12.2020, 11:21  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
потратив на изучение основ некоторое время, вы потом себе его больше сэкономите
Привет! Благодарю! Наконец то выходные наступили, займусь дальнейшим изучением
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
19.12.2020, 12:21  [ТС]
Не получается понять, почему в этом коде фатальная ошибка, ругается на $total_price, хотя данные должны попадать

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function total_price($cart)  
{
    $total_price = '0.00';    
    global $link;    
    if(is_array($cart))
    {
        foreach($cart as $id => $qty)
        {          
            $result = $link->query("SELECT price FROM products WHERE id='$id' ");
            
            if($result)
            {
                $item_price = mysqli_fetch_assoc($result);
                $total_price +=  $item_price['price'] * $qty; \\ ЗДЕСЬ НА $total_price
            }          
        }
        return $total_price;     
    }
}

И здесь ругается, почему то строчка попадает, а должно быть количество:
PHP
1
<td align="center"><input type="text" size="2" name="<?=$id; ?>" maxlength="2" value="<?=$quantity; ?>" /></td>
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
20.12.2020, 12:43
Цитата Сообщение от arhat Посмотреть сообщение
почему в этом коде фатальная ошибка
с массивами не умеете работать (что у вас в $qty?).
Цитата Сообщение от arhat Посмотреть сообщение
foreach($cart as $id => $qty)
        {          
            $result = $link->query("SELECT price FROM products WHERE id='$id' ");
да и с базой данных еще учиться, учиться и учиться
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
20.12.2020, 17:36  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
с массивами не умеете работать (что у вас в $qty?).
В $qty - количество. Умножаем количество на цену товара и должна получится полная сумма. Пока не трогал старую структуру корзины function add_to_cart, всё работало. Как только трону эту функцию, постоянно фаталы появляются, и постоянно ругаются на эту строчку
PHP
1
$total_price +=  $item_price['price'] * $qty;
Учусь....
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
20.12.2020, 17:51
попробуйте так для отладки:
PHP
1
2
3
4
5
6
function total_price($cart)  
{
echo '<p>total_price</p><pre>';
var_dump();
echo '</pre><p>finis total_price</p>';
}
что выведет строчками total_price и finis total_price?

Добавлено через 8 минут
виноват, имел в виду
PHP
1
var_dump($cart);
0
2 / 2 / 0
Регистрация: 23.03.2014
Сообщений: 118
20.12.2020, 20:02  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
попробуйте так для отладки:
Так ничего не меняется, не выводит, ошибки те же. Ладно, буду копать не торопясь.

Вот ещё вопрос: здесь <form action="index.php" method="get"> я передаю значение $b методом get в файл index.php в case ' add_to_cart'. Почему $b в index.php ничего не принимает, не известная переменная?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2020, 20:02

Передать значение(не value) из select javascript-ом
Твигом создаю список значений из БД. Далее в HTML получаю примерно такой код: &lt;select name=&quot;sel_name1&quot;...

Передать значение SELECT в форму
Здравствуйте. Помогите пожалуйста передать значение select в форме контактов &lt;select name=&quot;select&quot;...

Передать значение select методом POST
Сначала я заполняю значения selecta значениями из БД. Нужно передать выбранное значение select методом POST $query1 =...

Как передать значение запроса select в глобальную переменную sqlite?
здравствуйте. Помогите начинающему! в c# sqlite делаю sql запрос к базе данных, нужно занести результат запроса в переменную. Select...

Как передать выбранное в select значение в переменную и использовать его?
здравствуйте, есть такого вида код: &lt;form method=&quot;POST&quot; id=&quot;showtablestandard&quot; action=&quot;javascript:void(null);&quot;...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru