2013-06-19 26 views
0

我有一個表單來添加屬於公司的報價。我可以刪除並添加它們,但我無法使用編輯。如何用4個id字段同時更新3個表格?

當我點擊編輯時,只有一個表變化,我不知道如何解決這個問題。我正在使用codeigniter。

我的表結構:

Aanbiedingen 
idaanbiedingen | Aanbieding | Omschrijving | prijs | conditie 

fotoaanbiedingen 
idfotoaanbiedingen | fotonaam 

bedrijfaanbiedingen 
idbedrijfaanbiedingen | idaanbiedingen | idfotoaanbiedingen | idbedrijven 

我bedrijven表只是公司。我使用ID將它們鏈接到報價。

我的控制器看起來是這樣的:

function editaanbieding() 
{ 
    $id = $this->uri->segment(3); 
    $data = array(
     'Aanbieding' => $this->input->post('aanbiedingnaam'), 
     'Tekst' => $this->input->post('aanbiedingomschrijving'), 
     'Prijs' => $this->input->post('aanbiedingprijs'), 
     'Conditie' => $this->input->post('aanbiedingconditie') 
    ); 
    $this->aanbieding_model->edit_aanbieding($data, $id); 
    redirect('members/aanbiedingen'); 
} 

我的模型看起來像:

function get_aanbiedingen() 
{ 
    $id = $this->uri->segment(2); 
    $this->db->where('bedrijfaanbiedingen.idbedrijven', $id); 
    $this->db->join('fotoaanbiedingen', 'bedrijfaanbiedingen.idfotoaanbiedingen = fotoaanbiedingen.idfotoaanbiedingen'); 
    $this->db->join('bedrijven', 'bedrijfaanbiedingen.idbedrijven = bedrijven.idbedrijven'); 
    $this->db->join('Aanbiedingen', 'bedrijfaanbiedingen.idaanbiedingen = Aanbiedingen.idaanbiedingen'); 

    $query = $this->db->get('bedrijfaanbiedingen'); 
    return $query->result_array(); 
} 

function edit_aanbieding($data, $id) 
{ 
    $this->db->where('idaanbiedingen', $id); 
    $this->db->update('Aanbiedingen', $data); 

    $this->insert_bedrijfcat1($id); 
} 

function insert_bedrijfcat1($id) 
{  
    $id2 = $this->session->userdata('idbedrijven'); 
    echo '<pre>'; 
    print_r($id2); 
    die; 
    $this->db->query("DELETE FROM `bedrijfaanbiedingen` WHERE `idaanbiedingen` = '" . $id. "'"); 

    $this->db->query("INSERT INTO `bedrijfaanbiedingen` (`idaanbiedingen`, `idbedrijven`, `idfotoaanbiedingen`) VALUES ('".$id."', '".$id2."', '".$id3."')"); 
} 

但我錯過了很多的代碼。我一整天都在苦苦掙扎。所以我沒有看到這個解決方案。

我的編輯形式如下:

<div id="cpanel"> 
<?php foreach($aanb as $aanb) ?> 
<h2>Aanbieding: <?php echo $aanb['Aanbieding']; ?> voor: <?php echo $aanb['Bedrijfsnaam'];?>, aanpassen</h2> 
<br/> 
<b>Pas hier uw aanbieding toe.</b> 
<?php echo br(2); ?> 
<?= validation_errors(); ?> 
<?php $id = $this->uri->segment(3); ?> 
<?= form_open_multipart("members/editaanbieding/$id");?> 

<?php $options = array(
    'Nieuw' => 'Nieuw', 
    'Gebruikt' => 'Gebruikt' 
    ); 
?> 

<table> 

    <tr> 
    <td><?= form_label('Aanbieding:');?></td> 
    <td><?= form_input('aanbiedingnaam', $aanb['Aanbieding']);?></td> 
    </tr> 

    <tr> 
    <td><?= form_label('Omschrijving:');?></td> 
    <td><?= form_textarea('aanbiedingomschrijving', $aanb['Tekst']);?></td> 
    </tr> 

    <tr> 
    <td><?= form_label('Prijs:');?></td> 
    <td>€ <input type="number" name='aanbiedingprijs' step="any" value="<?php echo $aanb['Prijs']?>" /><td> 
    </tr> 

    <tr> 
    <td><?= form_label('Conditie:');?></td> 
    <td><?= form_dropdown('aanbiedingconditie', $options);?></td> 
    </tr> 

    <tr> 
    <td><?= form_label('Foto');?></td> 
    <td><?= form_upload('aanbiedingfoto');?></td> 
    </tr> 

    <tr> 
    <td><?= form_submit('submit', 'Verzenden');?></td> 
    <td><?= form_reset('reset', 'Reset'); ?></td> 
    </tr> 
</table> 
<br/> 
<a href="<?php echo base_url();?>members/aanbiedingen">Terug</a> 
<?php form_close(); ?> 
</div> 

希望有人能幫助我。

回答

1

您的意思是更新查詢?

UPDATE table_name 
SET column_name 
WHERE ; 
+0

請閱讀我的問題。我正在更新,但它不起作用。我無法更新我的三張桌子。 –

+0

插入和刪除工作。但是你以不同的方式使用更新。嘗試像插入和刪除?同時使用多個查詢? – Loko

0

嘗試這種方式

$this->db->where('a_id',$a_id); 
$this->db->where('b_id',$b_id); 
$this->db->where('c_id',$c_id); 
$this->db->where('d_id',$d_id); 
$this->db->update('yourtable',$data_posted); 
+0

這是什麼意思?目前尚不清楚。 –

+0

我沒有所有的ID。我只有Aanbiedingen.idaanbiedingen bedrijfaanbiedingen.idaanbiedingen和bedrijven.idbedrijven –

+0

現在這不好嗎? – Loko

0

不完全知道你正在嘗試做的,因爲我是無法理解的問題,你想什麼,在每個表更新,但有你使用MySQL考慮觸發?

+0

這可能是發表評論。但我考慮過。但我不知道如何構建te查詢。這就是我問這個問題的原因。 –

+0

你是對的 - 這可能是在評論中,但我不能添加評論,我喜歡MySql觸發器和外鍵,它給數據庫本身提供了很大的權力,並從PHP中獲取一些負載。 – Lupin

0

這是我認爲最簡單的解決方案,使用transactions,codeigniter中事務的優點是,如果其中一個查詢失敗,它將回滾。

function update($table1data,$table2data,$table3data,$table1id,$table2id,$table3id) 
{ 
    $this->db->trans_start(); //start transaction 
    $this->db->set($table1data)->where('id',$table1id)->update('table1'); 
    $this->db->set($table2data)->where('id',$table2id)->update('table2'); 
    $this->db->set($table3data)->where('id',$table3id)->update('table3'); 
    $this->db->trans_complete(); // end transaction 
} 

你也可以使用active record的事務塊裏面,在你的問題,所有你需要做的就是通過idfotoaanbiedingenidaanbiedingen方法內,並從那裏做了更新你要。

閱讀更多。 transaction - codeigniter userguide

+0

我需要知道如何進行查詢。而不是對查詢的調用。你可以編輯嗎? –

+0

@KeesSonnema,基本上只是傳遞你需要更新的id和數據。只需一個簡單的更新即可。而在你的更新表單上,只需查詢** idfotoaanbiedingen **和** idaanbiedingen **並將其作爲隱藏字段發送到視圖。 – tomexsans

+0

是的,我有點卡住了所有的id值。我猜只能得到其中2個。但會看看這個明天:) –

相關問題