what’s happping with my code that always return product already exists?

i want to make some validations if the stock is greater than min_stock The do some stuff, else if max stock is less greater than stock then other stuff , but if everything is ok , but is not empty then msg successfully added and if not duplicate I have this, but I don know why always has product already exists and if I change not add to my database..

РНР

public function addProduct(){
    $descripcion = $this->input->post('description');
    $cost_price =  $this->input->post('cost_price');
    $selling_price = $this->input->post('selling_price');
    $wprice = $this->input->post('wprice');
    $min_stock = $this->input->post('min_stock');
    $stock = $this->input->post('stock');
    $max_stock = $this->input->post('max_stock');
    $data = array(
        'descripcion' => $descripcion,
        'precio_compra' => $cost_price,
        'precio_venta' => $selling_price,
        'precio_mayoreo' => $wprice,
        'existencia_minima' => $min_stock,
        'existencia' => $stock,
        'existencia_maxima' => $max_stock
    );

    $product = $this->products->addProduct($data);
    if (!empty($product)) {
        $this->json(array('msg' => 'successfully added'));
    }else{
        $this->json(array('duplicate' => 'product already exists'));
    }

    if ($stock > $min_stock) {
        $this->json(array('min_stock' => 'el stock no puede ser mayor al min'));
    }elseif ($max_stock < $stock) {
        $this->json(array('min_stock' => 'el stock no puede ser mayor al max'));
    }else{

    }
}

утверждение

 if ($stock > $min_stock) {
       $this->json(array('min_stock' => 'el stock no puede ser mayor al min'));
   }elseif ($max_stock < $stock) {
        $this->json(array('min_stock' => 'el stock no puede ser mayor al max'));
  }else{
       /// add the product with the msgs ,but how can I paste  this code below to work property 
    if (!empty($product)) {
            $this->json(array('msg' => 'successfully added'));
        }else{
            $this->json(array('duplicate' => 'product already exists'));
        }

   }

1 ответ

  1. во-первых, нам нужно знать, что такое Ваш идентификатор продукта.

    затем нам нужно получить все продукты из таблицы продуктов и сравнить их с текущим продуктом(compare products id), после этого вы можете сделать условие if, если текущий продукт существует в продуктах , вам не нужно вставлять его, затем вставьте его.

    я могу помочь вам с этим кодом, но вам нужно адаптировать его с кодом ur.

     public function addProduct(){
    

    создание нового объекта stdClass

    $product =  new stdClass();
    $product->descripcion = $this->input->post('description');
    $product->cost_price =  $this->input->post('cost_price');
    $product->selling_price = $this->input->post('selling_price');
    $product->wprice = $this->input->post('wprice');
    $product->min_stock = $this->input->post('min_stock');
    $product->stock = $this->input->post('stock');
    $product->max_stock = $this->input->post('max_stock');`
    

    получить все продукты

    $products = $this->products->getAllProducts();
    

    сравните все продукты, существующие в базе данных ur, с новыми продуктами ur

    $test = false;
    
    foreach($produts as $p){
    
     if($p->id == $product->id){
       $test = true;
     } }
    

    если продукт не существует , вставьте его

     if($test){
       $rslt =  $this->products->addProduct($product);
       }
    
    
    if (!empty$rslt )) {
        $this->json(array('msg' => 'successfully added'));
    }else{
        $this->json(array('duplicate' => 'product already exists'));
    }
    
    if ($stock > $min_stock) {
        $this->json(array('min_stock' => 'el stock no puede ser mayor al min'));
    }elseif ($max_stock < $stock) {
        $this->json(array('min_stock' => 'el stock no puede ser mayor al max'));
    }else{
    
    }