Welcome Guest, Not a member yet? Register   Sign In
Inserting multiple rows in to multiple columns
#1

[eluser]itz4mesays[/eluser]
I am a newbie to codeigniter and I am trying to insert multiple rows into multiple columns and it triggers an error each time i tried to do the insertion. Below are the codes and errors it's shows:

$course_code=$this->input->post('course_code');
$course_title=$this->input->post('course_title');
$course_unit=$this->input->post('course_unit');
$course_status=$this->input->post('course_status');
$level=$this->input->post('level');
$semester=$this->input->post('semester');

$count = count($this->input->post('course_code'));

$data =array();

for($i=0; $i<$count; $i++) {

$data[$i] = array(
'course_code' => $course_code[$i],
'course_title' => $course_title[$i],
'course_unit' => $course_unit[$i],
'course_status' => $course_status[$i],
'level' => $level[$i],
'semester' => $semester[$i]
);
}

$this->db->insert_batch('tbl_courses', $data);
//return TRUE;
}

And i have six fields in the database.

Error Number: 1048

Column 'course_code' cannot be null

INSERT INTO tbl_courses (course_code, course_status, course_title, course_unit, level, semester) VALUES (NULL,NULL,NULL,NULL,NULL,NULL)

Filename: C:\wamp\www\ASIMS\system\database\DB_driver.php

Line Number: 330


Please i need help asap. Thanks
#2

[eluser]xeroblast[/eluser]
your answer lies here :
http://ellislab.com/codeigniter/user-gui...tml#insert
#3

[eluser]itz4mesays[/eluser]
That's why i said i am new to codeigniter, I really need up.

I tried this (below) but it worked. But i still want to be able to make sure if any is left blank, it should not show in the database. it's inserting quite alright but if i fill only two out it, the rest which are blank will still show in the database and i don't know how to avoid that.Please, your help will be highly appreciated.

//Model
function insert_courses(){
foreach($_POST['user'] as $user)
{
$this->db->insert('tbl_courses', $user);
// $this->db->insert('mytable', $user);
}
return TRUE;

}

Here is my view
&lt;?php echo form_open('courses/add_courses');?&gt;

<table border="1" cellspacing="0">
<tr>
<th>Course Code</th>
<th>Course Title</th>
<th>Course Unit</th>
<th>Course Status</th>
<th>Level</th>
<th>Semester</th>

</tr>

<tr>
<td>&lt;input type="text" name="user[0][course_code]" value=""&gt;&lt;/td>
<td>&lt;input type="text" name="user[0][course_title]" value=""&gt;&lt;br></td>
<td>
<select name="user[0][course_unit]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="6">6</option>
</select>
</td>
<td>
<select name="user[0][course_status]">
<option value="E">Elective</option>
<option value="C">Core</option>
</select>
</td>

<td>
<select name="user[0][level]">
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="600">600</option>
</select>
</td>
<td>
<select name="user[0][semester]">
<option value="First Semester">1st</option>
<option value="Second Semester">2nd</option>
</select>
</td>
</tr>

<tr>
<td>&lt;input type="text" name="user[1][course_code]" value=""&gt;&lt;/td>
<td>&lt;input type="text" name="user[1][course_title]" value=""&gt;&lt;br></td>
<td>
<select name="user[1][course_unit]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="6">6</option>
</select>
</td>
<td>
<select name="user[1][course_status]">
<option value="E">Elective</option>
<option value="C">Core</option>
</select>
</td>

<td>
<select name="user[1][level]">
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="600">600</option>
</select>
</td>
<td>
<select name="user[1][semester]">
<option value="First Semester">1st</option>
<option value="Second Semester">2nd</option>
</select>
</td>
</tr>

<tr>
<td>&lt;input type="text" name="user[2][course_code]" value=""&gt;&lt;/td>
<td>&lt;input type="text" name="user[2][course_title]" value=""&gt;&lt;br></td>
<td>
<select name="user[2][course_unit]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="6">6</option>
</select>
</td>
<td>
<select name="user[2][course_status]">
<option value="E">Elective</option>
<option value="C">Core</option>
</select>
</td>

<td>
<select name="user[2][level]">
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="600">600</option>
</select>
</td>
<td>
<select name="user[2][semester]">
<option value="First Semester">1st</option>
<option value="Second Semester">2nd</option>
</select>
</td>
</tr>

<tr>
<td>&lt;input type="text" name="user[3][course_code]" value=""&gt;&lt;/td>
<td>&lt;input type="text" name="user[3][course_title]" value=""&gt;&lt;br></td>
<td>
<select name="user[3][course_unit]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="6">6</option>
</select>
</td>
<td>
<select name="user[3][course_status]">
<option value="E">Elective</option>
<option value="C">Core</option>
</select>
</td>

<td>
<select name="user[3][level]">
<option value="100">100</option>
<option value="200">200</option>
<option value="300">300</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="600">600</option>
</select>
</td>
<td>
<select name="user[3][semester]">
<option value="First Semester">1st</option>
<option value="Second Semester">2nd</option>
</select>
</td>
</tr>
&lt;?php echo form_close();?&gt;
#4

[eluser]xeroblast[/eluser]
why not just do this in your model?
Code:
function insert_entry( $code, $title, $unit, $status, $level, $semester ) {
for ( $i=0; $i < count( $code ); $i++ ) {
  $data = array(
   'course_code' => $code[$i],
   'course_title' => $title[$i],
   'course_unit' => $unit[$i],
   'course_status' => $status[$i],
   'level' => $level[$i],
   'semester' => $semester[$i]
  );
  $this->db->insert( 'tbl_course', $data );
}
}

so that your controller is just sending your data to be inserted
Code:
$this->your_model->insert_entry( $this->input->post(‘course_code’), $this->input->post(‘course_title’), $this->input->post(‘course_unit’), $this->input->post(‘course_status’), $this->input->post(‘level’), $this->input->post(‘semester’) );
#5

[eluser]itz4mesays[/eluser]
@xeroblast, i really appreciate your support and time. i bet you are the only one that can actually help me solve this right now. if i try to insert like three from like five of those forms i provided on my view with the code, i get this error:


A Database Error Occurred

Error Number: 1048

Column 'course_code' cannot be null

INSERT INTO `tbl_courses` (`course_code`, `course_title`, `course_unit`, `course_status`, `level`, `semester`) VALUES (NULL, NULL, NULL, NULL, NULL, NULL)

Filename: C:\wamp\www\ASIMS\system\database\DB_driver.php

Line Number: 330

Meanwhile, it has already been inserted with other remaining two blank rows. Do you know why i keep getting these errors? I really appreciate your time
#6

[eluser]itz4mesays[/eluser]
for better understandin @xeroblast. See the schema of the db below


id course_code course_title course_unit course_status level semester
31 MTH101 Elementary of Set Theory 2 C 100 First Semester
32 MTH103 Trigonometry 1 C 100 First Semester
33 MTH105 Coordinate Geometry 1 C 100 First Semester
34 STA101 Introduction to Statistic 2 C 100 First Semester
35 PHY101 Mechanics and Properties 3 C 100 First Semester
36 1 E 100 First Semester
37 1 E 100 First Semester
38 1 E 100 First Semester
39 1 E 100 First Semester
40 1 E 100 First Semester

The remaining five were blank from the form and i don't want it to be inserted alongside with it ones i provided in the form. These are the two things are i want you to help me out for. Thanks @xeroblast
#7

[eluser]xeroblast[/eluser]
you are getting that error because the data of your form was not pass to your controller properly.

before processing it. why not check if the values have pass properly

Code:
//controler
echo('&lt;pre&gt;');
print_r( $this->input->post('course_code') );
echo('&lt;pre&gt;');




Theme © iAndrew 2016 - Forum software by © MyBB