I am fresh to Codeigniter. I have a form which looks something like this.
<tr>
<td><input type="text" name="Name[0]" value=""></td>
<td><input type="text" name="Address[0]" value=""><br></td>
<td><input type="text" name="Age[0]" value=""></td>
<td><input type="text" name="Email[0]" value=""></td>
</tr>
<tr>
<td><input type="text" name="Name[1]" value=""></td>
<td><input type="text" name="Address[1]" value=""><br></td>
<td><input type="text" name="Age[1]" value=""></td>
<td><input type="text" name="Email[1]" value=""></td>
</tr>
There may be from 0 to n rows, usually 5 to 10 rows. How do I insert them in SQL? Is this possible with Codeigniter or should I use a native PHP script?
$name=$_POST['Name'];
$address=$_POST['Address'];
$age=$_POST['Age'];
$email=$_POST['Email'];
$count = count($_POST['Name']);
for($i=0; $i<$count; $i++) {
$data = array(
'name' => $name[$i],
'address' => $address[$i],
'age' => $age[$i],
'email' => $email[$i],
);
$this->db->insert('mytable', $data);
}
I did this. It works. But the solution seems inelegant.
kevtrout's answer looks better but is currently throwing a lot of errors.
Is there any way to insert all data at one go?
php $Mydata = array( array( 'name' => 'Your Name' , 'email' => 'Your Email' , 'course' => 'Your Course' ), array( 'name' => 'Your Name' , 'email' => 'Your Email' , 'course' => 'Your Course' ) ); $this->db->insert_batch('mytable', $Mydata); //OR $post = $this->input->post(); for ($i = 0; $i < count($post['name']; $i++) ...
insert is for inserting one record and insert_batch is for inserting multiple records.
Multiple insert/ batch insert is now supported by codeigniter. It will firing one query rather than firing too many queries.
$data =array();
for($i=0; $i<$count; $i++) {
$data[$i] = array(
'name' => $name[$i],
'address' => $address[$i],
'age' => $age[$i],
'email' => $email[$i],
);
}
$this->db->insert_batch('mytable', $data);
Make your form like this:
<tr>
<td><input type="text" name="user[0][name]" value=""></td>
<td><input type="text" name="user[0][address]" value=""><br></td>
<td><input type="text" name="user[0][age]" value=""></td>
<td><input type="text" name="user[0][email]" value=""></td>
</tr>
<tr>
<td><input type="text" name="user[1][name]" value=""></td>
<td><input type="text" name="user[1][address]" value=""><br></td>
<td><input type="text" name="user[1][age]" value=""></td>
<td><input type="text" name="user[1][email]" value=""></td>
</tr>
Then you can simply do:
foreach($_POST['user'] as $user)
{
$this->db->insert('mytable', $user);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With