Вставить несколько строк в базу данных в Codeigniter - PullRequest
0 голосов
/ 26 февраля 2019

Я получил 3 постоянных строки с несколькими столбцами, такими как Элемент, Количество, Вес ...... в моем интерфейсе.Когда я выбрал данные в строках и отправил форму, в базу данных будут вставлены только данные 3-й строки.Я хочу, чтобы все строки, содержащие данные, вставлялись в базу данных.Любое решение для этого?Спасибо.

Обновлено :: Я пытался использовать массив PHP, и ниже приведен обновленный код. Но я застрял в части foreach, я хочу вставить данные в базу данных.

My View:

 <tr class="item-details">
                        <td><span class="rowNumber">1</span></td>
                         <td class="">
                        <?php
                        $options = array(
                                         '' => '~Choose An Item~'
                                         );
                        foreach ($item as $rows){
                            $options[$rows->id] = $rows->item_name;
                        }

                        $select = array(
                                        'name' => 'item_name[]',
                                        'id' => 'item_name',
                                        'class' => 'form-control'
                                        );
                        echo form_dropdown('item', $options,set_value('item_name'),$select);
                        ?>
                        </td>
                        <td class=""><input type="number" class="item-qty" name="qty[]"/></td>
                        <td><input type="number" name="weight[]" class="weight" /></td>
                        <td><input type="text" name="promo_code[]" value=""/></td>
            <td><input type="text" name="gp[]" value=""/></td>
                        <td><input type="text" name="discount[]" value=""/></td>
                        <td><input type="text" name="unit_price[]" value=""/></td>
                        <td align="right" class="totalwithouttax">0.00</td>
                        <td align="right" class="totaltax">0.00</td>
                        <td align="right" class="totalamtincltax">0.00</td>
                     </tr><br/>

                     <tr class="item-details">
                        <td><span class="rowNumber">2</span></td>
                         <td class="">
                        <?php
                        $options = array(
                                         '' => '~Choose An Item~'
                                         );
                        foreach ($item as $rows){
                            $options[$rows->id] = $rows->item_name;
                        }

                        $select = array(
                                        'name' => 'item_name[]',
                                        'id' => 'item_name',
                                        'class' => 'form-control'
                                        );
                        echo form_dropdown('item', $options,set_value('item_name'),$select);
                        ?>
                        </td>
                        <td class=""><input type="number" class="item-qty" name="qty[]"/></td>
                        <td><input type="number" name="weight[]" class="weight" /></td>
                        <td><input type="text" name="promo_code[]" value=""/></td>
            <td><input type="text" name="gp[]" value=""/></td>
                        <td><input type="text" name="discount[]" value=""/></td>
                        <td><input type="text" name="unit_price[]" value=""/></td>
                        <td align="right" class="totalwithouttax">0.00</td>
                        <td align="right" class="totaltax">0.00</td>
                        <td align="right" class="totalamtincltax">0.00</td>
                     </tr><br/>

                     <tr class="item-details">
                        <td><span class="rowNumber">3</span></td>
                         <td class="">
                        <?php
                        $options = array(
                                         '' => '~Choose An Item~'
                                         );
                        foreach ($item as $rows){
                            $options[$rows->id] = $rows->item_name;
                        }

                        $select = array(
                                        'name' => 'item_name[]',
                                        'id' => 'item_name',
                                        'class' => 'form-control'
                                        );
                        echo form_dropdown('item', $options,set_value('item_name'),$select);
                        ?>
                        </td>
                        <td class=""><input type="number" class="item-qty" name="qty[]"/></td>
                        <td><input type="number" name="weight[]" class="weight" /></td>
                        <td><input type="text" name="promo_code[]" value=""/></td>
            <td><input type="text" name="gp[]" value=""/></td>
                        <td><input type="text" name="discount[]" value=""/></td>
                        <td><input type="text" name="unit_price[]" value=""/></td>
                        <td align="right" class="totalwithouttax">0.00</td>
                        <td align="right" class="totaltax">0.00</td>
                        <td align="right" class="totalamtincltax">0.00</td>
                     </tr><br/>

Контроллер:

<code>    //*****************  ORDER ITEM  ********************
        $orderID = 1;
        $productId = $this->input->post('product_id');
        $itemName = $_POST['item_name'];//$this->input->post('item_name');
        $qty = $this-> $_POST['qty'];//input->post('qty');
        $weight = $this-> $_POST['weight'];//input->post('weight');
        $unitPrice =  $_POST['unit_price'];//$this->input->post('unit_price');
        $transportationPrice = $this->input->post('transportation_price');
        $itemType = $this->input->post('item_type');
        $gp = $this-> $_POST['gp'];//input->post('gp');
        $tax = $this->input->post('tax');
        $amtInclTax = $this->input->post('amt_incl_tax');
        $amtWithoutTax = $this->input->post('amt_without_tax');
        $taxCode = $this->input->post('tax_code');

        $orderItems = array (
                                'order_id' =>  $orderHeaderId ,
                                'product_id' =>  7 ,
                                'item' => $itemName ,
                                'qty' =>  $qty ,
                                'weight' => $weight  ,
                                'unit_price' => $unitPrice  ,
                                'transportation_price' => 0  ,
                                'item_type' =>  'GOLD' ,
                                'gp' => $gp,
                                'discount' =>  $discount,
                                'amt_without_tax' => 10,
                                'tax' => 20 ,
                                'amt_incl_tax' => 30,
                                'tax_code' => 40 ,
                             );
        echo '<pre>'; print_r($orderItems); echo '
';foreach ($ itemName как $ key => $ iN) {// застрял здесь} $ orderHeaderId = $ this-> order-> InsertItemData ($ orderHeaderId, $ orderHeader, $ orderItems);

Модель:

 public function InsertItemData($orderHeaderId,$orderHeader,$orderItems){
 //take order_id from 'order' table //from InsertData(model) function
 $orderHeaderId = $this->InsertData($orderHeader); 

  // Inserting Order Item
  if($orderItems){
 $this->db->insert_batch('order_items', $orderItems);
  }

}

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вы можете изменить каждый из кодов, как показано ниже.

Контроллер:

$orderID = 1;
$productId = $this->input->post('product_id');
$itemName = $_POST['item_name'];//$this->input->post('item_name');
$qty = $this-> $_POST['qty'];//input->post('qty');
$weight = $this-> $_POST['weight'];//input->post('weight');
$unitPrice =  $_POST['unit_price'];//$this->input->post('unit_price');
$transportationPrice = $this->input->post('transportation_price');
$itemType = $this->input->post('item_type');
$gp = $this-> $_POST['gp'];//input->post('gp');
$tax = $this->input->post('tax');
$amtInclTax = $this->input->post('amt_incl_tax');
$amtWithoutTax = $this->input->post('amt_without_tax');
$taxCode = $this->input->post('tax_code');

$orderItems = array();
for ($i = 0; $i < count($qty); $i++) {
    if ($qty[$i]) {
        $orderItems[] = array (
            // 'order_id' =>  $orderHeaderId ,
            'product_id' =>  7 ,
            'item' => $itemName[$i] ,
            'qty' =>  $qty[$i] ,
            'weight' => $weight[$i] ,
            'unit_price' => $unitPrice[$i] ,
            'transportation_price' => 0 ,
            'item_type' =>  'GOLD' ,
            'gp' => $gp[$i],
            'discount' =>  $discount[$i],
            'amt_without_tax' => 10,
            'tax' => 20 ,
            'amt_incl_tax' => 30,
            'tax_code' => 40 ,
        );
    }
}
$this->order->InsertItemData($orderHeader,$orderItems);

Модель:

 public function InsertItemData($orderHeader,$orderItems) {
    //take order_id from 'order' table //from InsertData(model) function
    $orderHeaderId = $this->InsertData($orderHeader); 

    if($orderItems) {
        // append order_id array into each order item
        foreach ($orderItems as $key => $item) {
            $orderItems[$key] = array('order_id' =>  $orderHeaderId) + $orderItems[$key];
        }

        // Inserting Order Item
        $this->db->insert_batch('order_items', $orderItems);
    }
}
0 голосов
/ 26 февраля 2019

Сначала сделайте все 3 части массива входных имен HTML-формы, например

 <input type="number" class="item-qty" name="qty[]"/>
 <input type="number" name="weight" class="weight[]" />
 ...

Затем зациклите массив данных как

$qty = $this->input->post('qty', TRUE);
$weight = $this->input->post('weight', TRUE);
$orderItems = array();
for ($i = 0; $i < count($qty); $i++) {
   if ($qty[$i]) {
      $orderItems[] = array (
                          'order_id' =>  $orderHeaderId ,
                          'product_id' =>  7 ,
                          'item' => 'TEST'  ,
                          'qty' =>  $qty[$i] ,
                          'weight' => $weight[$i]
       ...
       );
   }
 }

И теперь вы можете использовать метод insert_batch как

if ($orderItems) {
      $this->db->insert_batch('table_name', $orderItems);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...