生成具有不同选项的产品的库存水平


Generating stock levels of products with different options

我正在为一家网店构建一个cms,产品可以有多达5种不同的选择,即尺寸、颜色、味道、材料和风格。我需要创建代码来为库存控制记录生成字段,它必须为每个可能的选项保留一个单独的记录,例如红色尺寸8、蓝色尺寸8、红色尺寸9条纹等。这是我当前的数据库结构:

产品

产品ID

常见值,如价格、名称和描述

产品属性

属性ID

属性组ID

属性名称

产品库存控制

库存ID

产品ID

Attibute 1 ID

Attibute 2 ID

Attibute 3 ID

Attibute 4 ID

Attibute 5 ID

库存水平

使用codeigniter和php,最好的编码方式是什么?

编辑

这是我目前正在尝试的代码,但肯定有比1233行代码更好的方法吗?

public function genStockRecords($id)
{
    $this->db->select("ps_name");
    $query = $this->db->get("product_selects");
    $selectList = $query->result();
    foreach($selectList as $select)
    {
        $selectName = $select->ps_name;
        echo $selectName." - ";
        $$selectName = array();
    }
    unset($selectList);
    foreach($_SESSION['options'] as $option)
    {
        $option = explode("|", $option);
        ${$option[0]}[] = $option[1];
    }
    if(!empty($Size))
    {
        foreach($Size as $sizeValue)
        {
            $data['psc_opt_1'] = $sizeValue;
            if(!empty($Colour))
            {
                foreach($Colour as $colourValue)
                {
                    $data['psc_opt_2'] = $colourValue;
                    if(!empty($Flavour))
                    {
                        foreach($Flavour as $flavourValue)
                        {
                            $data['psc_opt_3'] = $flavourValue;
                            if(!empty($Material))
                            {
                                foreach($Material as $materialValue)
                                {
                                    $data['psc_opt_4'] = $materialValue;
                                    if(!empty($Style))
                                    {
                                        foreach($style as $styleValue)
                                        {
                                            $data['psc_opt_5'] = $styleValue;
                                            $this->db->select("psc_id");
                                            $this->db->where("psc_prod_id", $id);
                                            foreach($data as $field => $value)
                                            {
                                                $this->db->where($field, $value);
                                            }
                                            $query = $this->db->get("product_stock_control", 1);
                                            if($query->num_rows == 0)
                                            {
                                                $data["psc_prod_id"] = $id;
                                                $this->db->insert("product_stock_control", $data);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        $data['psc_opt_5'] = null;
                                        $this->db->select("psc_id");
                                        $this->db->where("psc_prod_id", $id);
                                        foreach($data as $field => $value)
                                        {
                                            $this->db->where($field, $value);
                                        }
                                        $query = $this->db->get("product_stock_control", 1);
                                        if($query->num_rows == 0)
                                        {
                                            $data["psc_prod_id"] = $id;
                                            $this->db->insert("product_stock_control", $data);
                                        }                                               
                                    }

                                }
                            }
                            else
                            {
                                $data['psc_opt_4'] = null;
                                if(!empty($Style))
                                {
                                    foreach($style as $styleValue)
                                    {
                                        $data['psc_opt_5'] = $styleValue;
                                        $this->db->select("psc_id");
                                        $this->db->where("psc_prod_id", $id);
                                        foreach($data as $field => $value)
                                        {
                                            $this->db->where($field, $value);
                                        }
                                        $query = $this->db->get("product_stock_control", 1);
                                        if($query->num_rows == 0)
                                        {
                                            $data["psc_prod_id"] = $id;
                                            $this->db->insert("product_stock_control", $data);
                                        }
                                    }
                                }
                                else
                                {
                                    $data['psc_opt_5'] = null;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }                                               
                                }                                   
                            }
                        }
                    }
                    else
                    {
                        $data['psc_opt_3'] = null;
                        if(!empty($Material))
                        {
                            foreach($Material as $materialValue)
                            {
                                $data['psc_opt_4'] = $materialValue;
                                if(!empty($Style))
                                {
                                    foreach($style as $styleValue)
                                    {
                                        $data['psc_opt_5'] = $styleValue;
                                        $this->db->select("psc_id");
                                        $this->db->where("psc_prod_id", $id);
                                        foreach($data as $field => $value)
                                        {
                                            $this->db->where($field, $value);
                                        }
                                        $query = $this->db->get("product_stock_control", 1);
                                        if($query->num_rows == 0)
                                        {
                                            $data["psc_prod_id"] = $id;
                                            $this->db->insert("product_stock_control", $data);
                                        }
                                    }
                                }
                                else
                                {
                                    $data['psc_opt_5'] = null;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }                                               
                                }

                            }
                        }
                        else
                        {
                            $data['psc_opt_4'] = null;
                            if(!empty($Style))
                            {
                                foreach($style as $styleValue)
                                {
                                    $data['psc_opt_5'] = $styleValue;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }
                                }
                            }
                            else
                            {
                                $data['psc_opt_5'] = null;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }                                               
                            }                                   
                        }
                    }
                }
            }
            else
            {
                $data['psc_opt_2'] = null;
                if(!empty($Flavour))
                {
                    foreach($Flavour as $flavourValue)
                    {
                        $data['psc_opt_3'] = $flavourValue;
                        if(!empty($Material))
                        {
                            foreach($Material as $materialValue)
                            {
                                $data['psc_opt_4'] = $materialValue;
                                if(!empty($Style))
                                {
                                    foreach($style as $styleValue)
                                    {
                                        $data['psc_opt_5'] = $styleValue;
                                        $this->db->select("psc_id");
                                        $this->db->where("psc_prod_id", $id);
                                        foreach($data as $field => $value)
                                        {
                                            $this->db->where($field, $value);
                                        }
                                        $query = $this->db->get("product_stock_control", 1);
                                        if($query->num_rows == 0)
                                        {
                                            $data["psc_prod_id"] = $id;
                                            $this->db->insert("product_stock_control", $data);
                                        }
                                    }
                                }
                                else
                                {
                                    $data['psc_opt_5'] = null;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }                                               
                                }

                            }
                        }
                        else
                        {
                            $data['psc_opt_4'] = null;
                            if(!empty($Style))
                            {
                                foreach($style as $styleValue)
                                {
                                    $data['psc_opt_5'] = $styleValue;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }
                                }
                            }
                            else
                            {
                                $data['psc_opt_5'] = null;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }                                               
                            }                                   
                        }
                    }
                }
                else
                {
                    $data['psc_opt_3'] = null;
                    if(!empty($Material))
                    {
                        foreach($Material as $materialValue)
                        {
                            $data['psc_opt_4'] = $materialValue;
                            if(!empty($Style))
                            {
                                foreach($style as $styleValue)
                                {
                                    $data['psc_opt_5'] = $styleValue;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }
                                }
                            }
                            else
                            {
                                $data['psc_opt_5'] = null;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }                                               
                            }

                        }
                    }
                    else
                    {
                        $data['psc_opt_4'] = null;
                        if(!empty($Style))
                        {
                            foreach($style as $styleValue)
                            {
                                $data['psc_opt_5'] = $styleValue;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }
                            }
                        }
                        else
                        {
                            $data['psc_opt_5'] = null;
                            $this->db->select("psc_id");
                            $this->db->where("psc_prod_id", $id);
                            foreach($data as $field => $value)
                            {
                                $this->db->where($field, $value);
                            }
                            $query = $this->db->get("product_stock_control", 1);
                            if($query->num_rows == 0)
                            {
                                $data["psc_prod_id"] = $id;
                                $this->db->insert("product_stock_control", $data);
                            }                                               
                        }                                   
                    }
                }

            }
        }
    }
    else
    {
        $data['psc_opt_1'] = null;
        if(!empty($Colour))
        {
            foreach($Colour as $colourValue)
            {
                $data['psc_opt_2'] = $colourValue;
                if(!empty($Flavour))
                {
                    foreach($Flavour as $flavourValue)
                    {
                        $data['psc_opt_3'] = $flavourValue;
                        if(!empty($Material))
                        {
                            foreach($Material as $materialValue)
                            {
                                $data['psc_opt_4'] = $materialValue;
                                if(!empty($Style))
                                {
                                    foreach($style as $styleValue)
                                    {
                                        $data['psc_opt_5'] = $styleValue;
                                        $this->db->select("psc_id");
                                        $this->db->where("psc_prod_id", $id);
                                        foreach($data as $field => $value)
                                        {
                                            $this->db->where($field, $value);
                                        }
                                        $query = $this->db->get("product_stock_control", 1);
                                        if($query->num_rows == 0)
                                        {
                                            $data["psc_prod_id"] = $id;
                                            $this->db->insert("product_stock_control", $data);
                                        }
                                    }
                                }
                                else
                                {
                                    $data['psc_opt_5'] = null;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }                                               
                                }

                            }
                        }
                        else
                        {
                            $data['psc_opt_4'] = null;
                            if(!empty($Style))
                            {
                                foreach($style as $styleValue)
                                {
                                    $data['psc_opt_5'] = $styleValue;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }
                                }
                            }
                            else
                            {
                                $data['psc_opt_5'] = null;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }                                               
                            }                                   
                        }
                    }
                }
                else
                {
                    $data['psc_opt_3'] = null;
                    if(!empty($Material))
                    {
                        foreach($Material as $materialValue)
                        {
                            $data['psc_opt_4'] = $materialValue;
                            if(!empty($Style))
                            {
                                foreach($style as $styleValue)
                                {
                                    $data['psc_opt_5'] = $styleValue;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }
                                }
                            }
                            else
                            {
                                $data['psc_opt_5'] = null;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }                                               
                            }

                        }
                    }
                    else
                    {
                        $data['psc_opt_4'] = null;
                        if(!empty($Style))
                        {
                            foreach($style as $styleValue)
                            {
                                $data['psc_opt_5'] = $styleValue;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }
                            }
                        }
                        else
                        {
                            $data['psc_opt_5'] = null;
                            $this->db->select("psc_id");
                            $this->db->where("psc_prod_id", $id);
                            foreach($data as $field => $value)
                            {
                                $this->db->where($field, $value);
                            }
                            $query = $this->db->get("product_stock_control", 1);
                            if($query->num_rows == 0)
                            {
                                $data["psc_prod_id"] = $id;
                                $this->db->insert("product_stock_control", $data);
                            }                                               
                        }                                   
                    }
                }
            }
        }
        else
        {
            $data['psc_opt_2'] = null;
            if(!empty($Flavour))
            {
                foreach($Flavour as $flavourValue)
                {
                    $data['psc_opt_3'] = $flavourValue;
                    if(!empty($Material))
                    {
                        foreach($Material as $materialValue)
                        {
                            $data['psc_opt_4'] = $materialValue;
                            if(!empty($Style))
                            {
                                foreach($style as $styleValue)
                                {
                                    $data['psc_opt_5'] = $styleValue;
                                    $this->db->select("psc_id");
                                    $this->db->where("psc_prod_id", $id);
                                    foreach($data as $field => $value)
                                    {
                                        $this->db->where($field, $value);
                                    }
                                    $query = $this->db->get("product_stock_control", 1);
                                    if($query->num_rows == 0)
                                    {
                                        $data["psc_prod_id"] = $id;
                                        $this->db->insert("product_stock_control", $data);
                                    }
                                }
                            }
                            else
                            {
                                $data['psc_opt_5'] = null;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }                                               
                            }

                        }
                    }
                    else
                    {
                        $data['psc_opt_4'] = null;
                        if(!empty($Style))
                        {
                            foreach($style as $styleValue)
                            {
                                $data['psc_opt_5'] = $styleValue;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }
                            }
                        }
                        else
                        {
                            $data['psc_opt_5'] = null;
                            $this->db->select("psc_id");
                            $this->db->where("psc_prod_id", $id);
                            foreach($data as $field => $value)
                            {
                                $this->db->where($field, $value);
                            }
                            $query = $this->db->get("product_stock_control", 1);
                            if($query->num_rows == 0)
                            {
                                $data["psc_prod_id"] = $id;
                                $this->db->insert("product_stock_control", $data);
                            }                                               
                        }                                   
                    }
                }
            }
            else
            {
                $data['psc_opt_3'] = null;
                if(!empty($Material))
                {
                    foreach($Material as $materialValue)
                    {
                        $data['psc_opt_4'] = $materialValue;
                        if(!empty($Style))
                        {
                            foreach($style as $styleValue)
                            {
                                $data['psc_opt_5'] = $styleValue;
                                $this->db->select("psc_id");
                                $this->db->where("psc_prod_id", $id);
                                foreach($data as $field => $value)
                                {
                                    $this->db->where($field, $value);
                                }
                                $query = $this->db->get("product_stock_control", 1);
                                if($query->num_rows == 0)
                                {
                                    $data["psc_prod_id"] = $id;
                                    $this->db->insert("product_stock_control", $data);
                                }
                            }
                        }
                        else
                        {
                            $data['psc_opt_5'] = null;
                            $this->db->select("psc_id");
                            $this->db->where("psc_prod_id", $id);
                            foreach($data as $field => $value)
                            {
                                $this->db->where($field, $value);
                            }
                            $query = $this->db->get("product_stock_control", 1);
                            if($query->num_rows == 0)
                            {
                                $data["psc_prod_id"] = $id;
                                $this->db->insert("product_stock_control", $data);
                            }                                               
                        }

                    }
                }
                else
                {
                    $data['psc_opt_4'] = null;
                    if(!empty($Style))
                    {
                        foreach($style as $styleValue)
                        {
                            $data['psc_opt_5'] = $styleValue;
                            $this->db->select("psc_id");
                            $this->db->where("psc_prod_id", $id);
                            foreach($data as $field => $value)
                            {
                                $this->db->where($field, $value);
                            }
                            $query = $this->db->get("product_stock_control", 1);
                            if($query->num_rows == 0)
                            {
                                $data["psc_prod_id"] = $id;
                                $this->db->insert("product_stock_control", $data);
                            }
                        }
                    }
                    else
                    {
                        $data['psc_opt_5'] = null;
                        $this->db->select("psc_id");
                        $this->db->where("psc_prod_id", $id);
                        foreach($data as $field => $value)
                        {
                            $this->db->where($field, $value);
                        }
                        $query = $this->db->get("product_stock_control", 1);
                        if($query->num_rows == 0)
                        {
                            $data["psc_prod_id"] = $id;
                            $this->db->insert("product_stock_control", $data);
                        }                                               
                    }                                   
                }
            }   
        }   
    }
}

这个问题比较一般。您可以使用formignite.com或thehpcode.com等网站生成CRUD代码,然后从那里开始。。