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

Нужна консультация с корзиной товаров

27.12.2015, 12:55. Показов 565. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, нужна ваша консультация с такими вещами(работа с моделью):
1.Что может быть не так в этой функции?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
public function addCart($cart){
        $id=(int)$cart;
 
        if(!isset($_SESSION['cart'])){
            $_SESSION['cart'] = array();
        }
        if(isset($_SESSION['cart'][$id])){
            $_SESSION['cart'][$id]++;
        }else{
            $_SESSION['cart'][$id] = 1;
        }
    }
Вот такой массив дает Array ( [1] => 2 [3] => 1 [4] => 2 ) т.е [id]=> кол-во, или же лучше использовать array_push но запрос тогда будет таким Array ( [1] => 1 [2] => 1 [3] => 1 ) [ключ]=>id.

2.Правильно ли составлена функция на общее кол-во товара, хотя считает правильно, но все таки может как то исправить?
PHP
1
2
3
4
5
6
7
public function total_items($cart){
        $num_items = 0;
        foreach($cart as $id => $qty){
            $num_items +=$qty;
        }
        return $num_items;
    }
3.И самая главная проблема это подсчет общей суммы, вот тут я вообще хз что делать, вроде выбираю все в циферном формате и умножаю на кол-во, то есть на те же цифры, но выдает Unsupported operand types. Очень прошу помочь =)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function total_price($cart){
        $total_price = 0;
        if(is_array($cart)){
            foreach($cart as $id => $qty){
                $sql="select price from product where type='notebooks' AND id =('$id') ";
                $result = $this->db->query($sql);
                if($result){
 
                    $item_price = $result;
                    $total_price += $item_price*$qty;
 
                }
 
            }
        }
        return $total_price;
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.12.2015, 12:55
Ответы с готовыми решениями:

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

Нужна консультация
Создаю программу. Что-то вроде реестра договоров. Суть такова: имеется куча xls файлов(порядка 300шт) с данными(тарифы, итоговые суммы за...

нужна консультация
Всем привет. Новечку нужна платная и грамотная консультация по раскрутке нового сайта. Москва. Только в реале. Если есть желание - ...

13
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
27.12.2015, 13:04
попробовать принудительно преобразовать в число
PHP
1
$total_price += (int)$item_price * (int)$qty;
0
Фрилансер
Эксперт PythonЭксперт JSЭксперт PHP
 Аватар для Azdeman
1871 / 1362 / 604
Регистрация: 12.01.2011
Сообщений: 5,470
27.12.2015, 13:05
Не пойму что вы умнажаете. вот пример как посчитать сумму товаров
PHP
1
2
3
4
5
6
7
8
<?php
$cart = array(2,2,2);//6
$num = 0;   
foreach ($cart as $v){
        $num+=$v;
    }
echo $num;
?>
6
0
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 65
27.12.2015, 13:08  [ТС]
Лол, оно начало считать кол-во товара но никак не сумму
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
27.12.2015, 13:10

Не по теме:

Да рановато я проснулся))))

Распечатать
PHP
1
var_dump($result);
и наверно вопрос отпадет где ошибка
0
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 65
27.12.2015, 13:19  [ТС]
В вашем примере массив $cart уже содержит цену товара или я что то не так понял? у меня в массиве только id товара и кол-во как было показано в примере [id]=>кол-во, после чего делаем форич , дальше ключиком id ищем цену товара и в конце эту цену множим на кол-во. Вроде логика правильная, но мб код сам кривой.

Добавлено через 2 минуты
Array ( [0] => Array ( [price] => 2569 ) ) Array ( [0] => Array ( [price] => 42960 ) ) Array ( [0] => Array ( [price] => 7199 ) )
видно что ключи не фурычат, хотя выбирает правильно

Добавлено через 1 минуту
Ну лучше рано встать, чем не спать уже 4 день, диплом горит, deadline близко
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
27.12.2015, 13:33
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public function total_price($cart){
        $total_price = 0;
        if(is_array($cart)){
           foreach($cart as $id => $qty){
                $sql="select price from product where type='notebooks' AND id =('$id') ";
                $result = $this->db->query($sql);
                if($result){
                    while ($row = $result->fetch_assoc()) {
                        $item_price = (int) $result['price'];
                        $total_price += $item_price * $qty;
                    }
                }
            }
        }
        return $total_price;
}
Попробуйте так что ли
0
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 65
27.12.2015, 13:36  [ТС]
все также, выдает кол-во. Мб как то по другому составить функцию? хотя логически вроде все правильно
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
27.12.2015, 13:39
Да что ж такое у меня сегодня. Замените
PHP
1
$item_price = (int) $result['price'];
на
PHP
1
$item_price = (int) $row['price'];
0
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 65
27.12.2015, 13:47  [ТС]
Дык а разница какая? переменная она и в Африке переменная. Если я поменяю только в 1 строке, оно же будет материть меня что неизвестная переменка
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
27.12.2015, 13:56
Цитата Сообщение от evilburn Посмотреть сообщение
переменная она и в Африке переменная
Вы понимаете что у Вас в переменной $result просто результат запроса в неподготовленном виде? потом строкой
PHP
1
$row = $result->fetch_assoc()
Мы его представляем ассоциативным массивом вида ['price' => 23455] и уже из этого массива извлекаем цену. Почему неизвестная переменная то?
1
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 65
27.12.2015, 14:11  [ТС]
не заметил что Вы добавили while, а разве нужно вайлить 2 раза? то $this->db->query($sql) как раз выполняет
PHP
1
2
3
4
5
$data = array();
            while($row = mysqli_fetch_assoc($result)){
                $data[]= $row;
            }
            return $data;
0
471 / 399 / 169
Регистрация: 04.01.2013
Сообщений: 1,675
27.12.2015, 14:17
Кто ж знал-то)))тогда не надо конечно
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function total_price($cart){
        $total_price = 0;
        if(is_array($cart)){
            foreach($cart as $id => $qty){
                $sql="select price from product where type='notebooks' AND id =('$id') ";
                $result = $this->db->query($sql);
                if($result){
 
                    $item_price = (int) $result['price'];
                    $total_price += $item_price*$qty;
 
                }
 
            }
        }
        return $total_price;
    }
Тогда так
0
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 65
27.12.2015, 14:32  [ТС]
все, решил проблему еще одним форичем, как раз послушал ваш совет на счет того что мы получаем массив а не голую цену.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.12.2015, 14:32
Помогаю со студенческими работами здесь

нужна консультация
Добрый день вот достался сайт , выдает такую ошибку уже 23 сутки бьюсь с ним в чем может быть проблема , логин пароль могу предоставить

Нужна консультация
Здраствуйте,не давно столкнулся с такой проблемой-Интернет работает,тоесть скайп,торрент,медиа джет и тд.А вот браузер не находит страницы...

Нужна консультация.
Выделяю память HeapAlloc, определённые адреса из полученной памяти заношу в переменные. Там распологаются определённые данные, при...

Нужна консультация
Имеется такая машина: Системная плата ASRock N68C-S UCC http://4put.ru/pictures/small/699/2150034.jpg Процессор AMD ATHLON II...

Нужна консультация
Товарищи!Нужна помощь в устранении ошибки! Наговнокодил, вроде все работает, но через время программа зависает и все, приехали(( Пишите...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru