вставить массив данных пакета? - PullRequest
4 голосов
/ 17 октября 2011

Я хочу вставить следующие данные на insert_batch, как в следующем примере в таблице базы данных (mysql):

HTML:

<input name="u_id[0][0]" value="76">

<input name="un[0][0]" value="1">
<input type="text" name="ue[0][0]" value="11">
<input type="text" name="up[0][0]" value="111">



<input name="u_id[1][0]" value="77">

<input name="un[1][1]" value="2">
<input type="text" name="ue[1][1]" value="22">
<input type="text" name="up[1][1]" value="222">

<input name="un[1][2]" value="3">
<input type="text" name="ue[1][2]" value="33">
<input type="text" name="up[1][2]" value="333">

PHP:

$u_id       = $this->input->post('u_id');
$un       = $this->input->post('un');
$up       = $this->input->post('up');
$ue       = $this->input->post('ue');

$data = array();
foreach ($un as $idx => $name) {
    $data[] = array(
        'u_id' => $u_id[$idx],                  
        'un' => $un[$idx],
        'up' => $up[$idx],
        'ue' => $ue[$idx],
    );
};
$this -> db -> insert_batch('units', $data);

Я хочу вставить их так:

enter image description here

Как изменить код php и html?что мне делать?

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Я предполагаю, что вы используете CodeIgniter и что имя таблицы базы данных, в которую вы хотите вставить, называется 'unit', а столбец 'id' - автоинкремент.

Я основываюсь на своем решении из Руководства пользователя CodeIgniter версии 2.0.3, используя вызов помощника ($this->db->insert_string()) класса Database.

foreach ($data as $row)
{
    $error_code = $this->db->insert_string('units', $row); 
}

См. http://codeigniter.com/user_guide/database/helpers.html

Функция insert_string, предоставляемая классом Database, похоже, берет ассоциативный массив, строит оператор INSERT из элементов внутри, выполняет его и затем возвращает числовой код ошибки.

0 голосов
/ 17 октября 2011

LOL, это не красиво, но может иногда работать:

<input name="u_id[]" value="76">

<input name="un[]" value="1">
<input type="text" name="ue[]" value="11">
<input type="text" name="up[]" value="111">



<input name="u_id[]" value="77">

<input name="un[]" value="2">
<input type="text" name="ue[]" value="22">
<input type="text" name="up[]" value="222">

<input name="un[]" value="3">
<input type="text" name="ue[]" value="33">
<input type="text" name="up[]" value="333">

$u_id=$this->input->post('u_id');
$un=$this->input->post('un');
$up=$this->input->post('up');
$ue=$this->input->post('ue');
for($i=0;$i<count($u_id);$i++){
    for($ii=0;$ii<count($un[$i]);$ii++){
        (count($un[$i])>1)?$unn=$un[$i][$ii+1]:$unn=$un[$i][$ii];
        (count($ue[$i])>1)?$uen=$ue[$i][$ii+1]:$uen=$ue[$i][$ii];
        (count($up[$i])>1)?$upn=$up[$i][$ii+1]:$upn=$up[$i][$ii];
        $this->db->insert('units', array(//use db insert here
            'u_id'=>$u_id[$i][0],
            'un'=>$unn,
            'ue'=>$uen,
            'up'=>$upn,
        ));
    }
}

Я бы пошел так далеко, что предложил бы вам не использовать его. Но, возможно, это может вдохновить кого-то предложить лучшее решение.

Приветствие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...