roksieu 0 Posted February 11, 2013 Share Posted February 11, 2013 Hello, I have a large form that can be built dynamically, user can add multiple fields and now I have problems with saving values to DB. I'm using codeigniter. This is my form and this is part of my controller that handle those inputs: $from = array(); foreach ($this->input->post('from') as $froms) { $from[] = $froms; } $to = array(); foreach ($this->input->post('to') as $tos) { $to[] = $tos; } $step = array(); foreach ($this->input->post('step') as $steps) { $step[] = $steps; } $odvisnost = array(); foreach ($this->input->post('odvisnost') as $dependency) { $odvisnost[] = $dependency; } And I get error: A PHP Error was encountered Severity: Notice Message: Array to string conversion Filename: mysql/mysql_driver.php Line Number: 552 and A Database Error Occurred Error Number: 1054 Unknown column 'Array' in 'field list' INSERT INTO `gc_dioptry` (`produkt`, `from`, `to`, `step`, `dependancy`, `value`) VALUES ('1', '2', '3', Array, Array, Array) Filename: C:\xampp\htdocs\leckacms\system\database\DB_driver.php Line Number: 330 1st value is "productid" As you can see it tries to insert 'array' instead of values that I enter, I entered 2,3,4,5 and 6. My html form is correct with all inputs names as array[] for example: <input type="text" name="steps[]"> Link to post Share on other sites
codebyren 4 Posted February 12, 2013 Share Posted February 12, 2013 It's not very clear how you are planning to store the values in the database and I can't see exactly which form fields map to which database fields. If each dynamic line should be a separate row in the "gc_dioptry" table then you could try something like this: // Collect desired post arrays $from = $this->input->post('from'); $to = $this->input->post('to'); $step = $this->input->post('step'); // etc. $rows = array(); # we'll store each row in this array // Setup a counter for looping through post arrays // If there are x items in one post array (e.g. $from) then the others *should* contain the same number $row_count = count($from); for ($i=0; $i < $row_count; $i++) { $rows[] = array( 'produkt' => '???', 'from' => $from[$i], 'to' => $to[$i], 'step' => $step[$i], 'dependancy' => '???', 'value' => '???', ); } $this->db->insert_batch('gc_dioptry', $rows); You could add some validation like checking that your post values are actually arrays and also check whether array keys ($i in this example) exist before using them. This will prevent errors being thrown. Link to post Share on other sites
roksieu 0 Posted February 13, 2013 Author Share Posted February 13, 2013 Each line of values will be stored in separate row. For example: All values from "first option" will be saved to table "first_option" All values from "second" will be saved to table "second_option" etc. With all the fields I will also save product_id (so that I know to which products it goes to). Link to post Share on other sites
roksieu 0 Posted February 13, 2013 Author Share Posted February 13, 2013 Sorry for double post, but I must say thank you behicthebuilder Link to post Share on other sites
Recommended Posts
Archived
This topic is now archived and is closed to further replies.