2011-06-07 27 views
9

ile güncelleştirme toplu CodeIgniter ile küçük bir açık CMS yapmaya çalışıyorum ve şimdi kategori sistemi üzerinde çalışıyorum.CodeIgniter

Gerçekten bununla takılıyorum ve birçok denemeden ve forumdan sonra çözmedim.

Ben 2 mySQL TABLOLAR

  • # 1 vardır: ft_categories (liste 2 alanlarla tüm Kategori isimlerini: category_name ve kimliği)
  • # 2: ft_upload_data (liste id gibi alanlarla ilişkili tüm yayınları, başlık böylece, kategori, tarih ve) ben (bu formu aynı anda birden fazla kategori düzenlemek için bir döngü içinde girişler ile doldurulur)bir düzenleme kategori isimleri şeklinde veriler ile benim 1. TABLO GÜNCELLENİR istiyorum

Burada:

if ($result != NULL) { 
echo form_open('admin/update_categories/'); 
if (isset($result) && $result != NULL) { 

    foreach ($result as $row) { 
    echo form_input('category_name[]' ,$row->category_name); 
    echo anchor("admin/delete_category/$row->category_name", 'Delete category'); 
    echo '<br /><br />'; 
    } 

    echo '<br /><br />'; 
    echo form_submit('','Save'); 
    echo form_close(); 

} } else { echo 'NO categories'; } 

Bu isim düzenleyebilirsiniz DB'den alınan girdilerle şeklidir. Eğer Kategori isimlerini düzenlerken

Tamam şimdi GÜNCELLEME isteği DB GÜNCELLENECEK için

function update_categories(){ 

    $i = 0; 
    foreach ($this->input->post('category_name') as $cat) 
     $data[$i++]['category_name'] = $cat; 
     // The $i++ creates a multi-dimensional array to insert 
     // multiple rows into the DB. 

    $this->admin_model->update_categories($data); 

} 

Bu alacak katları girişler alanları yapmak 'update_categories' CONTROLLER gidin.

function update_categories($data) { 

    ? 

Ben bir insert_batch gibi ama UPDATE ile şeyle adları doğru güncellemek için neler yapabileceğini bilmiyoruz: Ve şimdi BURADA DB veri GÜNCELLENECEK ve MODEL gidin SORUN VAR Ben TABLO 1. GÜNCELLENECEK gerek rağmen, ben de TABLO # alanda 2 Tablo 2 Çift gÜNCELLEME ve

1 Açıkçası ben çalıştım TABLO # 1 toplu UPDATE adını güncellemek için İHTİYACINIZ çünkü bir tane daha TABLO: TABLO # 3 TABLE # 1 alan kimliğini alıp TABLO # 2 alan kimliğiyle eşleştirin ancak 3 tablo arasında bağlantı kuramadığını anlayamıyorum s.

Herhangi bir yardım çok takdir edilecektir! Çok teşekkürler!! (benim kötü ingilizce için üzgünüm)


Cevabınız için teşekkürler!

Ok Bu üçüncü tablo şimdi 'yazı'

içinde bu göstermeye 'CATEGORY_NAME' almak istiyorum var bu var:

$this->db->order_by('rank', 'asc'); 

$this->db->select('*'); 
$this->db->from('ft_upload_data'); 
$this->db->join('ft_categories', 'assigned_categories.ft_categories_id = assigned_categories.ft_upload_data_id'); 

$query = $this->db->get(); 



return $query->result(); 

Ama diyor Bilinmeyen sütun var

'Maddesine' in 'assigned_categories.ft_categories_id'

Herhangi (assigned_categories sonrası kimliği ve eşleşen kategori id ile benim üçüncü TABLE'dır) Fikir?

+0

sen] [unuttum = ''; ' – dynamic

cevap

-3

İlk olarak, bir sorguda birden fazla satırı güncelleştiremezsiniz, böylece güncelleştirmeler için insert_batch() gibi bir şey yoktur - her satır için bir döngüde yapmanız gerekir. Daha sonra, kategori kimliğiyle bire-bir ilişki içinde, yabancı anahtarlar (InnoDB, daha kötü performans) kullanarak bire bir ilişkilendirme için VEYA en azından kategori kimliğine bağlanan TABLO # 2'deki category_id alanını kullanmanız için 3. tablo kullanmalısınız. TABLO # 1'deki değişiklikler durumunda bu tabloyu güncellemeye ihtiyaç duyar.

16

tablo adını içerir UPDATE_BATCH

$this->db->update_batch(); 



$data = array(
    array(
     'title' => 'My title' , 
     'name' => 'My Name 2' , 
     'date' => 'My date 2' 
    ), 
    array(
     'title' => 'Another title' , 
     'name' => 'Another Name 2' , 
     'date' => 'Another date 2' 
    ) 
); 

$this->db->update_batch('mytable', $data, 'title'); 

İlk parametre kullanmaya çalışır, ikinci değerler ilişkili dizi olan üçüncü parametre burada anahtarıdır. Eğer aa basit `$ verileri yapabileceği tthat

umut bu yardım ........................

UPDATE 

// Produces: 
// UPDATE `mytable` SET `name` = CASE 
// WHEN `title` = 'My title' THEN 'My Name 2' 
// WHEN `title` = 'Another title' THEN 'Another Name 2' 
// ELSE `name` END, 
// `date` = CASE 
// WHEN `title` = 'My title' THEN 'My date 2' 
// WHEN `title` = 'Another title' THEN 'Another date 2' 
// ELSE `date` END 
// WHERE `title` IN ('My title','Another title') 
+1

'update_batch' için durumun nasıl eklenir? –

+0

@SomnathMuluk lütfen güncellememi görün ve dokümanı kontrol edin .. http://ellislab.com/codeigniter/user-guide/database/active_record.html –

+2

Koşullar çoklu nasıl eklenir? $ This-> db-> burada() 'update_batch için çalışıyor mu? –