Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: ООП
Войти
Регистрация
Восстановить пароль
 
morik1969
4 / 4 / 5
Регистрация: 03.11.2013
Сообщений: 94
#1

Первым выходит нулевое значение

24.02.2018, 08:41. Просмотров 168. Ответов 3
Метки нет (Все метки)

Добрый день беру массив из куки и делаю добавление товара в корзину .Вроде бы всё ничего сложного но в одном месте застрял Первое значение суммы всегда выходит ноль ,а затем всё идёт как надо но с отставанием на первую сумму которой не было.Дебагингом всё перепроверил и не один раз и с разными вариантами .Хожу кругами .
Вот метод из класса basket
PHP
1
2
3
4
5
6
7
8
9
10
11
12
       public function getPrice(){
        $price_arr = $this->basket_arr;//массив из куки
        $summa_price = null;
        foreach($price_arr as $k=>$v):
           $elem = $this->explodeElem($k,"=");//разбивка для запроса на название таблицы и id
           $query = "SELECT price FROM mor_".$elem[0]." WHERE prod_id ='".$elem[1]."'";
               $row = $this->db->selectCell($query);
           $summa_price += $row * $v;
        endforeach;
 
        return $summa_price;
       }
Вот метод из класса dtbase.Чтоб было понятно что приходит в
PHP
1
  $row = $this->db->selectCell($query);
Сам метод
PHP
1
2
3
4
5
6
7
8
      public function selectCell($query){ 
             $result_set = $this->mysqli->query($query);
             if(!$result_set || $result_set->num_rows !=1)return false;
            $row = $result_set->fetch_assoc();
                $result_set->free();
                $row = array_values($row);
                return $row[0];     
     }
ну и сам обработчик что суть неважно Просто для полноты картины

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
session_start();
require_once "../lib/basket_class.php";
$basket = new Basket();
$id = $_POST["id"];
$title = $_POST["title"];
$quantity = 1;
 
$basket->ADD_basket($title,$id,$quantity);
//print_r($basket->getPrice());exit;
$price_all = $basket->getPrice();//общая сумма
$count_all = $basket->getCount();//общее количество
 
 
echo $price_all."=".$count_all;

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2018, 08:41
Ответы с готовыми решениями:

Нулевое значение.
Исходные данные: - есть Textbox1 - есть кнопка cmb1 - есть база данных...

нулевое значение АЦП
Столкнулся с проблемой. в диф.режиме ацп если не подавать напряжение на...

Нулевое значение инпута
Ничего не работает, хочу что бы кнопка отключалась, если инпуты пустые - никак....

Запрос и нулевое значение
Доброго времени суток. Поля таблицы - Код; Дата; Действие; Количество...

Проверка на нулевое значение DBLookupCombobox
Как проверить равно ли KeyValue нулевому значению. Делаю так if...

3
Jodah
Эксперт PHP
2704 / 2376 / 1013
Регистрация: 01.08.2012
Сообщений: 8,405
24.02.2018, 09:08 #2
Покажите, как добавляете товар и как формируется $this->basket_arr.
0
полудух
145 / 161 / 42
Регистрация: 15.03.2016
Сообщений: 975
24.02.2018, 15:15 #3
var_dump() -ом чекайте всё по порядку: $price_arr, $query, итд - найдёте что-нибудь
0
morik1969
4 / 4 / 5
Регистрация: 03.11.2013
Сообщений: 94
24.02.2018, 19:03  [ТС] #4
Вот класс

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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?
require_once "global_class.php";
 
class Basket extends GlobalClass{
  public $basket_arr;
    private $basket_price = 0;
    private $basket_quantity = 0;
    private $basket_name;
    
    public function __construct(){
    parent::__construct(" ");
     $this->basket_arr = $this->getBasketInit();
    }
 
    
    public function saveBasket($param){
        $basket_arr = base64_encode(serialize($param));
        setcookie("basket",$basket_arr,0x7FFFFFFF,"/");
    } 
    public function getBasketInit(){
        return $this->basketInit();
    }
    private function basketInit(){
            if(isset($_COOKIE["basket"])){
            return $this->basket_arr = unserialize(base64_decode($_COOKIE["basket"]));  
            }else{
            return  $this->basket_arr = [];
            }       
    }
    public function getCount(){
        $count_arr = $this->basket_arr;
        $count_price = null;
        foreach($count_arr as $k=>$v):   
        $count_price += $count_arr[$k];
        endforeach;
        return $count_price+1 ;
    }
    
    public function getPrice(){
        $price_arr = $this->basket_arr;//массив из куки
        $summa_price = null;
        foreach($price_arr as $k=>$v):
        $elem = $this->explodeElem($k,"=");//разбивка для запроса на название таблицы и id
        $query = "SELECT price FROM mor_".$elem[0]." WHERE prod_id ='".$elem[1]."'";
      $row = $this->db->selectCell($query);
        $summa_price += $row * $v;
        endforeach;
        return $summa_price;
    }
    
    public function ADD_basket($title,$id,$quantity){
        $add_basket = $this->basket_arr;
        $quantity = 1;
        $new_arr = $add_basket ?? [];
        if(count($add_basket) == 0){
            $new_arr +=[$title ."=" .$id => $quantity];
            $this->saveBasket($new_arr);return "С нуля";
            }else{
                foreach($add_basket as $k=>$v):
                $elem = $this->explodeElem($k,"=");
                  if($elem[0] == $title AND $elem[1] == $id){
                    $new_arr +=[$title ."=" .$id => ++$new_arr[$k]];    
                    }
                     if($elem[0] == $title AND $elem[1] != $id){
                    $new_arr +=[$title ."=" .$id => $quantity]; 
                    }
                     if($elem[0] != $title ){
                    $new_arr +=[$title ."=" .$id => $quantity]; 
                    }
                    $this->saveBasket($new_arr);
                endforeach;
            }//end else     
        }//end func
    
    public function MyBasket(){
        $basket_product = $this->basket_arr;
        $goods = [];
        if(count($basket_product) > 0){
        foreach($basket_product as $k=>$v):
         $elem = $this->explodeElem($k,"=");
            $query = "SELECT * FROM mor_".$elem[0]." WHERE prod_id ='".$elem[1]."'";
         $row = $this->db->selectRow($query);
                $goods [] = $row;
        endforeach;
        return $goods;
        }else return false;
    }
 
    private function explodeElem($element,$delimiter){
        $result = explode($delimiter,$element);
        return $result;
    }
    
}/**/
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.02.2018, 19:03

Ifstream возвращает нулевое значение
ifstream read(&quot;settings.tge&quot;); if (read.is_open() == 1) { read &gt;&gt; language;...

Нулевое значение поля DateTime
Привет! Подскажите как сделать чтобы при фыводе на экран формы поле DateTime и...

Нулевое значение для даты
подскажите как добавить нулевое значение для даты DataRow dr =...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru