簡體   English   中英

在Codeigniter中以表格形式發布數據多行

[英]Post Data Multiple Rows in a Form in Codeigniter

我想從數據庫中選擇CodeIgnigher PHP應用程序中的一些數據,並要進行一些更改並插入到另一個表中。 我想在IN表中插入盡可能多的選定記錄。 目前,我只在out表中插入了一行。

您能否指出,這是哪里做錯了。

我的桌子是。 Out_Table(標識,名稱,數量..)和In_Table(標識,名稱,數量..)。

我的模型代碼是:

<?php

    class ShoppingListM extends CI_Model {

    public function getData() {
        $query = $this->db->get('products');
        return $query->result();
    }

    function SaveForm($form_data) {
        $this->db->insert('SLists', $form_data);

        if ($this->db->affected_rows() == '1') {
            return TRUE;
        }

        return FALSE;
    }

}

?>

查看代碼:

        <div class="divTable">

        <fieldset>
            <!-- these will be affected by check all -->
     <div class="divRow">Product Name | Quantity | Packages</div>
            <div class="divRow"><input type="checkbox" size="100" class="checkall"> Check all</div>


            <br>

                <?php foreach ($records as $rec) {
                    ?>

                    <div class="divRow"><input type="checkbox">
                            <input size="5" type="hidden" value="<? echo $rec->id; ?>" name="id"></input>
                            <input size="20" type="text" value="<? echo $rec->name; ?>" name="name"></input>
                            <input size="5" type="text" value="" name="quantity"></input>
                            <select name="package">
                                <option name="case">Case</option>
                                <option name="box">Box</option>
                                <option name="box">Single Bottle</option>
                            </select>
                    </div>                
                    <br> 
                        <?
                    }
                    ?>


                    </fieldset> 
                    </div>
                    <div><input type="submit" name="submit"/></div>
                    </form>

控制器代碼:

class ShoppingListController extends CI_Controller {

public function index() {
    //$data['val'] = array("test1", "test2", "test3");

   // $this->load->model('HomeModel');
    //$data['records'] = $this->HomeModel->getData();

    $this->load->model('ShoppingListM');

    $data['records'] = $this->ShoppingListM->getData();






    $this->form_validation->set_rules('name', 'Name', 'required|max_length[255]');          
    $this->form_validation->set_rules('qty', 'qty', '');                    
    $this->form_validation->set_rules('package', 'Package', 'required|max_length[128]');



            if ($this->form_validation->run() == FALSE) // validation hasn't been passed
    {
        $this->load->view('ShoppingListV', $data);
    }
    else // passed validation proceed to post success logic
    {
        // build array for the model

        $form_data = array(
                        'name' => set_value('name'),
                        'quantity' => set_value('quantity'),
                        'package' => set_value('package')
                    );

        // run insert model to write data to db

                    // run insert model to write data to db

        if ($this->ShoppingListM->SaveForm($form_data) == TRUE) // the information has therefore been successfully saved in the db
        {
            redirect('ShoppingListController/success');   // or whatever logic needs to occur
        }
        else
        {
        echo 'An error occurred saving your information. Please try again later';
        // Or whatever error handling is necessary
        }
    }

好吧,我看不到您提供的代碼中in_table / out_table在哪里。

插入很多行你想要的insert_batch

doc中的示例

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

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

或者您可以從in_table中循環所有您的行,並在您不關心多個查詢的情況下逐一插入它們

$data= $this->db->get('Out_table');
try
{
    if ( $data->num_rows == 0)
         throw new Exception('table empty');

    foreach( $data->result() as $row)
    {

        //modifiy the row as u want
        $modified=$row;

        $q=$this->db->insert('in_table',$modified);
        if( ! $q )
            throw new Exception('failed to insert row id:'.$row->id);
    }
    echo $data->num_rows.'rows inserted';    
 }


catch (Exception $e)
{
    echo $e->getMessage();
 // Stop method execution with return, or use exit
    return;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM