son Posted July 20, 2009 Share Posted July 20, 2009 I 'converted' a select to allow for multiple options and am not sure how to insert relevant rows into db. First I check if something is entered as: if (isset($_POST['category']) && ($_POST['category']) != 0) { $category = escape_data($_POST['category']); } else { $category = FALSE; $errors['category'] = '\'Category\' is required'; }I display the select drop down as:<p><label for="category"><?php echo check_error('category', 'Category*'); ?></label> <select name="category[]" id="category[]" multiple="multiple"><option value="0">Please select a category...</option><?php$q = 'SELECT category_id, category FROM categories ORDER BY category';$r = mysqli_query($dbc, $q);while (list($category_id, $category) = mysqli_fetch_array($r, MYSQLI_NUM)) {echo "<option value=\"$category_id\"";if((isset($_POST['category'])) && ($_POST['category'] == $category_id)){ echo ' selected="selected" '; }echo ">" . $category . "</option>\n";}echo "</select></p>";and try unsuccessfully to insert data into database as:foreach ($category as $v) { $productAssocQ = "INSERT INTO productCat (category_id, product_id) VALUES (array('$category', '$id'))"; { if ($productAssocRes = mysqli_query ($dbc, $productAssocQ)) echo "<p>The product has been added!<br />"; echo "<span class=\"small\"><a href=\"products.php\"><< Go back</a></span></p>"; include('inc/footer.php'); exit; } }I know this might be quite wrong, but not sure how else to do this...Son Link to comment Share on other sites More sharing options...
justsomeguy Posted July 20, 2009 Share Posted July 20, 2009 Have you printed $_POST['category'] to see what it's submitting when you select more than one? Link to comment Share on other sites More sharing options...
son Posted July 21, 2009 Author Share Posted July 21, 2009 Have you printed $_POST['category'] to see what it's submitting when you select more than one?I get the error message:An error occurred in script '/home/sites/domain.co.uk/ccl/del.php' on line 30:Array to string conversion and the following info clearly shows both selected option in array as [_POST] => Array ( [MAX_FILE_SIZE] => 524288 [category] => Array ( [0] => 7 [1] => 8 ) [designer] => 5 Do I need to change: if (isset($_POST['category']) && ($_POST['category']) != 0) { $category = escape_data($_POST['category']); } else { $category = FALSE; $errors['category'] = '\'Category\' is required'; } to allow for the array?Son Link to comment Share on other sites More sharing options...
justsomeguy Posted July 21, 2009 Share Posted July 21, 2009 An error occurred in script '/home/sites/domain.co.uk/ccl/del.php' on line 30:Array to string conversionThat's a Javascript error, you need to check which source line is line 30.You're using a function called escape_data, does that work on arrays? Or does that only work on string data? You're giving it the entire array. If you want to add those to a database, you'll need to either loop through the array and add each item, or join the array and add the entire list. Link to comment Share on other sites More sharing options...
son Posted July 21, 2009 Author Share Posted July 21, 2009 That's a Javascript error, you need to check which source line is line 30.You're using a function called escape_data, does that work on arrays? Or does that only work on string data? You're giving it the entire array. If you want to add those to a database, you'll need to either loop through the array and add each item, or join the array and add the entire list.How do you loop through the array and add each item? Have never done such a thing...Son Link to comment Share on other sites More sharing options...
justsomeguy Posted July 21, 2009 Share Posted July 21, 2009 You can use any loop structure to go through an array:http://www.php.net/manual/en/language.control-structures.phpA for loop or foreach loop are most common for arrays, but you could also use a while or do loop.How did you make it this far without ever looping through an array? Link to comment Share on other sites More sharing options...
son Posted July 21, 2009 Author Share Posted July 21, 2009 You can use any loop structure to go through an array:http://www.php.net/manual/en/language.control-structures.phpA for loop or foreach loop are most common for arrays, but you could also use a while or do loop.How did you make it this far without ever looping through an array?Sorry, I did mean I have never done such a thing for a multiple select. I have used loops before and am familiar more or less with general structure. Do I have to do it for select the same way as with any array?Son Link to comment Share on other sites More sharing options...
justsomeguy Posted July 21, 2009 Share Posted July 21, 2009 The select list is returning an array, so it's the same as any other array. There's only one type of array in PHP. Link to comment Share on other sites More sharing options...
son Posted July 22, 2009 Author Share Posted July 22, 2009 The select list is returning an array, so it's the same as any other array. There's only one type of array in PHP.Thanks for your input. Will have a go...Son Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.