Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
1

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

24.02.2016, 12:45. Показов 1897. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите исправить код. На какую ссылку не нажми, по порядку в корзину добавляет все товары и потом постоянно последний товар...
PHP/HTML
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
 session_start();
 if(isset($_GET['exit'])){
    session_destroy();
    header('Location:'.$_SERVER['PHP_SELF']);
 }
 if(isset($_GET['order'])){
    $new_tovar = trim(strip_tags($_GET['new_tovar']));
     if(isset($_SESSION['product'])){
        array_unshift($_SESSION['product'],$new_tovar);
     }else{
     $_SESSION['product'] = array($new_tovar);
     }
 }
 
 ?>
<!Doctype html>
<html>
<head>
<title>Купить товар</title>
 
</head>
<body>
<center>
<table><tr><td>
<img src="img/cart.png">
</td>
<br>
<?php
  if(isset($_SESSION['product'])){
    echo "<td><strong>Ваша корзина:</strong>  <br />";
    $summ = 0;
      foreach($_SESSION['product'] as $k=>$v){
           if($k == 0){
             $value = "Игрушка каталка  ";
             $summ += 100;
           }elseif($k == 1){
              $value = "Игрушка качалка";
              $summ += 200;
           }else{
             $value = "Игрушка ездилка";
             $summ += 150;
           }
           echo $value."<br />";
 
      }
       echo "</td><td>&nbsp;Товаров в корзине:\n".count($_SESSION['product']) . "\n&nbsp; На сумму: \n<strong>".$summ."</strong></td>";
 
 }
 ?>
 
 </tr></table>
 <br />
 <?php
  if(count($_SESSION['product']) <= 0){
    echo "Корзина пуста";
  }
  else{
  echo "<a href='?exit=true'>Очистить корзину</a>";
 }
 ?>
</p>
<h1>Список товаров</h1>
<br />
<table border="1" width="50%">
<tr>
<td>Игрушка каталка: Цена 100р</td><td>
<a href="?order=1">В корзину</a>
</td>
</tr>
<tr>
<td>Игрушка качалка: Цена 200р</td><td>
<a href="?order=2">В корзину</a>
</tr>
<tr>
<td>Игрушка ездилка: Цена 150р</td><td>
<a href="?order=3">В корзину</a>
</tr>
</tavle>
</center>
</body>
</html>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2016, 12:45
Ответы с готовыми решениями:

Добавление товара в корзину: гонять сервер или гонять клиент
Есть корзина на PHP. В зависимости от итоговой суммы появляется скидка. Сейчас работает так: -...

Добавления в корзину товара по акции
Здравствуйте. Прошу прощения, не знаю куда лучше написать: сюда или в математический форум....

Уведомление после добавления товара в корзину
Всем привет. Написан код, который позволяет после клика на ссылку &quot;добавить в корзину&quot; выводить...

Как занести значение размера товара в корзину
Всем Привет! Всё борюсь с вроде бы простым действием, но у меня это всё никак не получается. Есть...

13
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
24.02.2016, 13:07 2
Цитата Сообщение от евгенийпро Посмотреть сообщение
session_destroy();
Эта функция не удаляет данные сессии. Используйте перед ней session_unset();

Цитата Сообщение от евгенийпро Посмотреть сообщение
На какую ссылку не нажми, по порядку в корзину добавляет все товары и потом постоянно последний товар...
Очень непонятное описание проблемы.
1
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 13:08 3
PHP/HTML
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
    session_start();
    if(isset($_GET['exit'])){
        session_unset();
        session_destroy();
        header('Location:'.$_SERVER['PHP_SELF']);
    }
    if( !preg_match("/[^0-9]/" , @(string)$_GET['order']) ) {
        $_SESSION['product'] = @trim($_SESSION['product'] . "," . $_GET['order'] , ",");
    }
 ?>
<!Doctype html>
<html>
<head>
<title>Купить товар</title>
 
</head>
<body>
<center>
<table><tr><td>
<img src="img/cart.png">
</td>
<br>
<?php
 
    $product_list = [
        ["name"=> "Игрушка каталка  " , "price"=> 100] ,
        ["name"=> "Игрушка качалка  " , "price"=> 200] ,
        ["name"=> "Игрушка ездилка  " , "price"=> 150]
    ];
 
  if(isset($_SESSION['product'])){
    echo "<td><strong>Ваша корзина:</strong>  <br />";
    $summ = 0;
    $user_product_list = explode("," , $_SESSION['product']);
    $real_product_list = [];
    $price_all = 0;
    foreach($user_product_list as $product_id) {
        if ( !@strlen($product_id) ) {
            continue;
        }
        if ( isset($product_list[ $product_id ]) ) {
            $real_product_list[] = $product_id;
            echo $product_list[ $product_id ][ "name" ] . "<br/>";
            $price_all += $product_list[ $product_id ][ "price" ];
        }
    }
    
    echo "</td><td>&nbsp;Товаров в корзине:\n".count( $real_product_list ) . "\n&nbsp; На сумму: \n<strong>".$price_all."</strong></td>";
 }
 
 
 
 ?>
 
 </tr></table>
 <br />
 <?php
  if(count($_SESSION['product']) <= 0){
    echo "Корзина пуста";
  }
  else{
  echo "<a href='?exit=true'>Очистить корзину</a>";
 }
 ?>
</p>
<h1>Список товаров</h1>
<br />
<table border="1" width="50%">
<tr>
<td>Игрушка каталка: Цена 100р</td><td>
<a href="?order=0">В корзину</a>
</td>
</tr>
<tr>
<td>Игрушка качалка: Цена 200р</td><td>
<a href="?order=1">В корзину</a>
</tr>
<tr>
<td>Игрушка ездилка: Цена 150р</td><td>
<a href="?order=2">В корзину</a>
</tr>
</tavle>
</center>
</body>
</html>
0
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
24.02.2016, 20:01  [ТС] 4
Parse error: syntax error, unexpected '[' in Z:\home\localhost\www\ko\index2.php on line 26

Добавлено через 5 минут
В примере 3 товара. Нажимаю ПЕРВЫЙ раз на первый товар "добавить в корзину" - добавляется товар с его суммой. Нажимаю ВТОРОЙ раз на первый товар - добавляется второй товар и сумма второго товара. Нажимаю ТРЕТИЙ раз на первый товар - добавляется третий товар с суммой третьего товара. Нажимая с ЧЕТВЕРТОГО раза и дальше - добавляется третий товар и его сумма. Такая беда...
0
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 20:05 5
Лучший ответ Сообщение было отмечено евгенийпро как решение

Решение

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
    session_start();
    if(isset($_GET['exit'])){
        session_unset();
        session_destroy();
        header('Location:'.$_SERVER['PHP_SELF']);
    }
    if( !preg_match("/[^0-9]/" , @(string)$_GET['order']) ) {
        $_SESSION['product'] = @trim($_SESSION['product'] . "," . $_GET['order'] , ",");
    }
 ?>
<!Doctype html>
<html>
<head>
<title>Купить товар</title>
 
</head>
<body>
<center>
<table><tr><td>
<img src="img/cart.png">
</td>
<br>
<?php
 
    $product_list = Array(
        Array("name"=> "Игрушка каталка  " , "price"=> 100) ,
        Array("name"=> "Игрушка качалка  " , "price"=> 200) ,
        Array("name"=> "Игрушка ездилка  " , "price"=> 150)
    );
 
  if(isset($_SESSION['product'])){
    echo "<td><strong>Ваша корзина:</strong>  <br />";
    $summ = 0;
    $user_product_list = explode("," , $_SESSION['product']);
    $real_product_list = Array();
    $price_all = 0;
    foreach($user_product_list as $product_id) {
        if ( !@strlen($product_id) ) {
            continue;
        }
        if ( isset($product_list[ $product_id ]) ) {
            $real_product_list[] = $product_id;
            echo $product_list[ $product_id ][ "name" ] . "<br/>";
            $price_all += $product_list[ $product_id ][ "price" ];
        }
    }
    
    echo "</td><td>&nbsp;Товаров в корзине:\n".count( $real_product_list ) . "\n&nbsp; На сумму: \n<strong>".$price_all."</strong></td>";
 }
 
 
 
 ?>
 
 </tr></table>
 <br />
 <?php
    if(count($_SESSION['product']) <= 0){
        echo "Корзина пуста";
    } else{
        echo "<a href='?exit=true'>Очистить корзину</a>";
    }
 ?>
</p>
<h1>Список товаров</h1>
<br />
<table border="1" width="50%">
    <?php
        foreach($product_list as $key => $product) {
            echo '<tr>
                    <td>'.$product['name'].': Цена '.$product['price'].'р</td>
                    <td><a href="?order='.$key.'">В корзину</a></td>
                </tr>';
        }
    ?>
</table>
</center>
</body>
</html>
заработает и на 4php
1
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
24.02.2016, 20:28  [ТС] 6
Спасибо огромное! Всё работает!

Добавлено через 17 минут
Не подскажешь, что отвечает за сохранение товара, то есть что отвечает за расширении корзины при каждом нажатии "добавить"?
0
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 20:30 7
Цитата Сообщение от евгенийпро Посмотреть сообщение
Не подскажешь, что отвечает за сохранение товара, то есть что отвечает за расширении корзины при каждом нажатии "добавить"?
PHP
1
2
3
    if( !preg_match("/[^0-9]/" , @(string)$_GET['order']) ) {
        $_SESSION['product'] = @trim($_SESSION['product'] . "," . $_GET['order'] , ",");
    }
1
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
24.02.2016, 20:43 8
Цитата Сообщение от WhiteMind Посмотреть сообщение
@

Не по теме:

Зачем Вы это делаете? :D

0
9 / 9 / 5
Регистрация: 15.10.2015
Сообщений: 383
24.02.2016, 20:44  [ТС] 9
Подскажи, как тут сохранение такое же сделать?
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
// wfCart Demo
 
// You must included wfcart.php BEFORE you start the session. 
include "wfcart.php";
session_start();      // start the session
 
$cart =& $_SESSION['wfcart']; // point $cart to session cart.
if(!is_object($cart)) $cart = new wfCart(); // if $cart ( $_SESSION['cart'] ) isn't an object, make a new cart
 
// end of header stuff
 
?>
<html><head><title>wfCart Demo</title></head>
<body><h3>wfCart Demo</h3>
 
<?
 
// Usually you would get your products from a database but we'll pretend.. 
 
$products = array();
$products[1] = array("id"=>1,"name"=>"A Bar of Soap","price"=>2.00);
$products[2] = array("id"=>2,"name"=>"Shampoo","price"=>4.80);
$products[3] = array("id"=>3,"name"=>"Pizza","price"=>12.95);
 
 
// check to see if any items are being added
if($_POST['add']) {
    $product = $products[$_POST['id']];
    $cart->add_item($product['id'],$_POST['qty'],$product['price'],$product['name']);
}
if($_POST['remove']) {
    $rid = intval($_POST['id']);
    $cart->del_item($rid);
 
}
 
// spit some forms
// You can have many different types of forms, such as many quantity boxes
// and an "add to cart" button at the bottom which adds all items
// but for the purposes of this demo we will handle one item at a time. 
echo "<table>";
foreach($products as $p) {
    echo "<tr><td><form method='post' action='demo.php'>";
    echo "<input type='hidden' name='id' value='".$p['id']."'/>";
    echo "".$p['name'].' $'.number_format($p['price'],2)." ";
    echo "<input type='text' name='qty' size='5' value='1'><input type='submit' value='Add to cart' name='add'>";
    echo "</form></td></tr>";
}
echo "</table>";
 
 
echo "<h2>Items in cart</h2>";
 
if($cart->itemcount > 0) {
    foreach($cart->get_contents() as $item) {
        echo "<br />Item:<br/>";
        echo "Code/ID :".$item['id']."<br/>";
        echo "Quantity:".$item['qty']."<br/>";
        echo "Price   :$".number_format($item['price'],2)."<br/>";
        echo "Info    :".$item['info']."<br />";
        echo "Subtotal :$".number_format($item['subtotal'],2)."<br />";
        echo "<form method=post><input type='hidden' name='id' value='".$item['id']."'/><input type='submit' name='remove' value='Remove'/></form>";
    }
    echo "---------------------<br>";
    echo "total: $".number_format($cart->total,2);
} else {
    echo "No items in cart";
}
 
?>
0
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 20:46 10
Цитата Сообщение от pav1uxa Посмотреть сообщение
Не по теме:
Зачем Вы это делаете?
Все по теме.
http://php.net/manual/ru/langu... ontrol.php
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
24.02.2016, 20:51 11
Цитата Сообщение от WhiteMind Посмотреть сообщение
Все по теме.

Не по теме:

Я знаю что это такое, я спрашиваю зачем Вы это делаете :)

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

Мне в силу воспитания просто глаза режет этот символ :)

0
Hello Kitty
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
24.02.2016, 21:02 12
Цитата Сообщение от pav1uxa Посмотреть сообщение
Не по теме:
Я знаю что это такое, я спрашиваю зачем Вы это делаете
Во-первых, это плохая штука для новичков. Они начинают пихать ее куда попало, а потом не могут понять почему скрипт не работает, потому что сами убрали вывод этих ошибок.
Во-вторых, лучше ошибки по нормальному обрабатывать, а не подавлять.
Мне в силу воспитания просто глаза режет этот символ
а вы про это.
практика ответов на форумах показала, что оператор @ сокращает время ответа на порядок.

Добавлено через 7 минут
Цитата Сообщение от pav1uxa Посмотреть сообщение
Во-первых, это плохая штука для новичков.
Возможно. Однако с @ % логики на кол-о кода повышается, и => новичку будет проще увидеть суть, а не теряться в isset'ах.
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
25.02.2016, 13:08 13
Цитата Сообщение от WhiteMind Посмотреть сообщение
новичку будет проще увидеть суть, а не теряться в isset'ах.
Почему новичков считают какими-то несмыслёнышами сопливыми, которым можно показывать плохой пример и говорить: "Пока делай так, а потом переучишься". Уж лучше сразу показать человеку, как сделать правильнее, пока он учится.

Добавлено через 3 минуты
Цитата Сообщение от WhiteMind Посмотреть сообщение
что оператор @ сокращает время ответа на порядок.
И добавляет как минимум один вопрос от новичка: "А что это такое?"
1
pav1uxa
25.02.2016, 19:47     Исправить добавление товара в корзину
  #14

Не по теме:

Страшно не то что он добавляет вопрос "а что это", а то что он порождает ошибки аля "спасите у меня белый лист, ничего не работает и при этом никаких ошибок". А потом оказывается что вывод ошибок отключен или попросту подавлен вот такими собачками. Это сильно затрудняет процесс развития. А ведь 90% ошибок решаются чтением/переводом текста ошибки :)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2016, 19:47

Как сделать ссылку отправки товара в корзину?
Здравствуйте, есть такая ссылка :&lt;a href=&quot;korzina.php?id=&lt;?=$row?&gt;&quot;&gt;. она работает только каждый...

Успешное уведомление после добавления товара в корзину
Всем привет. Написан код, который позволяет после клика на ссылку &quot;добавить в корзину&quot; выводить...

Добавление товара в корзину.
Добавление товара в корзину. День добрый. Вопрос жизни и смерти. У меня есть каталог с занесенными...

Добавление товара в корзину
Ув. форумчане, помогите разобраться или подскажите где копать. Есть товар который продается по...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru