0

我有一个用于添加属于公司的报价的表格。我可以删除和添加它们,但我无法使用编辑。

当我单击编辑时,只有 1 个表格发生了变化,我不知道如何解决这个问题。我正在使用代码点火器。

我的表结构:

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>

希望有人可以帮助我。

4

4 回答 4

1

你的意思是更新查询?

UPDATE table_name
SET column_name
WHERE ;
于 2013-06-19T13:46:38.950 回答
0

这是我能想到的最简单的解决方案,使用transactionscodeigniter 中的事务的优点是,如果其中一个查询失败,它将回滚。

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,然后从那里进行所需的更新。

阅读更多。 事务 - codeigniter 用户指南

于 2013-06-20T02:31:21.340 回答
0

不完全确定您要做什么,因为我无法理解这个问题,您想在每个表上更新什么,但您是否考虑过使用 MySQL 触发器?

于 2013-06-19T18:41:29.480 回答
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);
于 2013-06-19T13:50:52.090 回答