我有一个表单,用于添加属于公司的优惠。我可以删除并添加它们,但我无法使用编辑。
当我点击仅编辑1个表格更改时,我不知道如何解决这个问题。我正在使用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>
希望有人可以帮助我。
答案 0 :(得分:1)
您的意思是更新查询?
UPDATE table_name
SET column_name
WHERE ;
答案 1 :(得分: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);
答案 2 :(得分:0)
我不确定你要做什么,因为我无法理解这个问题,你想在每个表上更新什么,但是你考虑过使用MySQL触发器吗?
答案 3 :(得分: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
,在您遇到问题时,您需要做的就是通过 idfotoaanbiedingen 和 idaanbiedingen 方法,并从那里进行您想要的更新。