2016-02-05 9 views
5

पर अपडेट नहीं किया गया है, मेरे पास इन उत्पाद श्रेणी के लिए दो टेबल हैं, जहां मैं उत्पाद श्रेणियां संग्रहीत करता हूं और दूसरा उत्पाद सूची है जहां मैं एक नया उत्पाद डालने पर उत्पादों को सम्मिलित करता हूं, वहां एक होगा उत्पाद श्रेणी पर संग्रहीत श्रेणियों से चुनने के लिए ड्रॉपडाउन, लेकिन यदि आप एक और श्रेणी जोड़ना चाहते हैं तो ड्रॉपडाउन में एक "अन्य" विकल्प है और एक टेक्स्टरेरिया एपियर होगा और आपको एक और श्रेणी बनाने की सुविधा देगी, मेरी समस्या यह है कि यदि मैं एक नया उत्पाद जोड़ता हूं डेटाबेस यह does not दो तालिकाओं में डालने में मौजूदा श्रेणी लेकिन अगर मैं एक नई श्रेणी के साथ एक नया उत्पाद जोड़ने यह सफलतापूर्वक मेरी नियंत्रक सम्मिलित करता है:कोडिनेटर डालने पर मौजूद नहीं है और

function do_upload() { 


    $config['upload_path'] = './assets/'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = '2000'; 
    $config['max_width'] = '2000'; 
    $config['max_height'] = '2000'; 
    $config['new_image'] = './assets/'; 

    $config['overwrite'] = TRUE; 
    $this->load->library('upload', $config); 
    $this->form_validation->set_rules('name', 'Product Name', 'required|xss_clean'); 
    $this->form_validation->set_rules('description', 'Product Description', 'required|xss_clean'); 
    $this->form_validation->set_rules('price', 'Price', 'required'); 
    if (!$this->upload->do_upload() || !$this->form_validation->run()) { 
     $error = array('error' => $this->upload->display_errors()); 
     redirect('add_products'); 
    } else { 

     $data = $this->upload->data(); 
     $this->thumb($data); 

     $category = $_POST["prod_category"]; 
     if($category == "2") 
      { 
      $category = $_POST["other_category"]; 

      } 
     $file = array(
      'img_name' => $data['raw_name'], 
      'thumb_name' => $data['raw_name'] . '_thumb', 
      'ext' => $data['file_ext'], 
      'product_name' => $this->input->post('name'), 
      'product_description' => $this->input->post('description'), 
      'product_price' => $this->input->post('price'), 
      'product_category' =>$category,  


     ); 

     $this->db->insert("product_category",array("category"=>$category)); 
      $this->User->insert_prod($file); 
     $data = array('upload_data' => $this->upload->data()); 
     echo '<script>alert("You Have Successfully Added a new Product!");</script>'; 
     redirect('admin_products','refresh'); 
    } 
} 

मॉडल

public function insert_prod($file){ 
     $this->db->insert('product_table',$file); 
    } 
+0

सुनिश्चित नहीं हैं के लिए है: http://andrea.codes/codeigniter-if-record-exists-then-update-if -नॉट-डालने/ यह एक पैटर्न का भी वर्बोज़ है ... – SparK

+0

इसका उपयोग करने की कोशिश की लेकिन इसे – Christian

उत्तर

9

सबसे पहले आपको यह जांचने की आवश्यकता है कि उपयोगकर्ता या डेटा बाहर निकला है या नहीं। तो आप अद्यतन कर सकते हैं और ऑपरेशन सम्मिलित कर सकते हैं।

$this->db->where('user_id',$id); 
    $q = $this->db->get('profile'); 

    if ($q->num_rows() > 0) 
    { 
     $this->db->where('user_id',$id); 
     $this->db->update('profile',$data); 
    } else { 
     $this->db->set('user_id', $id); 
     $this->db->insert('profile',$data); 
    } 

वहाँ mysql क्वेरी

$query = 'INSERT INTO table_name (id, name) VALUES (?, ?) 
    ON DUPLICATE KEY UPDATE name=VALUES(name)'; 

स्पष्टीकरण का उपयोग कर मान लीजिए इस तालिका है द्वारा एक और तरीका है।

+----+----------+ 
| id | name  | 
+----+----------+ 
| 1 | Urfusion | 
| 2 | Christian| 
+----+----------+ 

अब हम प्रदर्शन कर रहे हैं ON DUPLICATE KEY UPDATE

INSERT INTO table_name VALUES (3,'Example') ON DUPLICATE KEY UPDATE name='Example'; 

परिणाम

+----+----------+ 
| id | name  | 
+----+----------+ 
| 1 | Urfusion | 
| 2 | Christian| 
| 3 | Example | 
+----+----------+ 

Example तालिका में सम्मिलित किया गया है कुंजी id साथ कोई प्रवेश वहाँ है क्योंकि वहाँ अब अगर हम कर रहे हैं स्थिति 1 या 2 पर डेटा डालने का प्रयास कर रहे हैं तो

अगर यह एक जवाब के रूप में उत्तीर्ण
INSERT INTO table_name VALUES (1,'Name_changed') ON DUPLICATE KEY UPDATE name='Name_changed'; 

फिर परिणाम

| id | name  | 
+----+-------------+ 
| 1 | Name_changed| 
| 2 | Christian | 
| 3 | Example  | 
+----+-------------+ 

अधिक information

+0

काम करने के लिए प्रतीत नहीं होता है, मैं दूसरे विकल्प से बहुत परिचित नहीं हूं, क्या आप और अधिक समझा सकते हैं? मैंने आपके द्वारा दिए गए लिंक को पहले ही पढ़ा है लेकिन यह मुझे भ्रमित करता है, पहला विकल्प मेरे लिए काम नहीं करता है – Christian

+0

@ क्रिस्टियन: अद्यतन उत्तर की जांच करें। – urfusion

+0

ओह मैं देखता हूं लेकिन मुझे इसे लागू करने में मदद की ज़रूरत है, मैंने इसका उपयोग करने की कोशिश की लेकिन यह काम नहीं कर रहा है, इसलिए क्या मैं सिर्फ क्वेरी डालता हूं या मुझे कुछ और चाहिए उदाहरण है यह मेरी तालिका है $ query = 'product_category (आईडी, श्रेणी) में INSERT मूल्य (?,?) डिप्लिकेट कुंजी अद्यतन श्रेणी = मूल्य (श्रेणी) '; क्या यह इस तरह है? – Christian

संबंधित मुद्दे