2016-02-05 30 views
5

'u güncelleyin. Bu ürün kategorisi için iki kategoriye sahibim: Ürün kategorilerini sakladığımda diğeri ise yeni bir ürün eklediğinizde ürün eklediğim ürün listesidir. ürün kategorisinde saklanan kategoriler arasından seçim yapmak için açılan açılır menüden başka bir kategori eklemek isterseniz açılır menüde "başka" bir seçenek var ve bir textarea görünmeyecek ve başka bir kategori oluşturmanıza izin vereceğim. o iki tabloya eklemek doesnt veritabanında kategori mevcut ama yeni kategori ile yeni bir ürün eklerseniz o başarıyla benim denetleyici ekler:Codeigniter eklentisi mevcut değilse ve değilse

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'); 
    } 
} 

modeli

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

emin değil İçin

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

geçerli: http://andrea.codes/codeigniter-if-record-exists-then-update-if -not-insert/ Bir desen çok ayrıntılı ... – SparK

+0

kullanmayı denedim ama işe yaramış gibi görünmüyor – Christian

cevap

9

İlk önce, kullanıcının veya verilerin çıkıp çıkmadığını kontrol etmeniz gerekir. daha sonra güncellemeyi yapabilir ve işlemi gerçekleştirebilirsiniz.

$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); 
    } 

bir yol daha bu tablodur varsayalım mysql sorgusu

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

Açıklama kullanarak yoktur. Biz eğer anahtar id ile giriş yok artık orada var, çünkü

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

şimdi performans ON DUPLICATE KEY UPDATE

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

sonuç

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

Example tabloya eklenen olmasıdır 1 veya 2 numaralı pozisyona veri girmeye çalıştıktan sonra

o cevap olarak nitelendirir eğer
INSERT INTO table_name VALUES (1,'Name_changed') ON DUPLICATE KEY UPDATE name='Name_changed'; 

Sonra sonuç daha information

+0

İkinci seçenek ile çok aşina değilim daha fazla açıklayabilir misiniz? verdiğiniz bağlantıyı zaten okudum ama kafamı karıştırıyor, ilk seçenek benim için çalışmıyor – Christian

+0

@Christian: güncellenmiş cevabı kontrol edin. – urfusion

+0

oh görüyorum ama bunu uygulamak için yardıma ihtiyacım var ama onu kullanmayı denedim ama çalışmıyor, bu yüzden sadece sorguyu koydum ya da başka bir şeye ihtiyacım var. Bu benim tablosum $ query = 'INSERT INTO product_category (id, kategori) DEĞERLER (?,?) DUPLICATE ANAHTAR GÜNCELLEME kategorisi = DEĞERLER (kategori) '; bunun gibi mi? – Christian

İlgili konular