Simbob
asked on
Inserting / updating multiple checkbox values into a field using php / mysql
Hi, I've been trying to set up a form using checkboxes to update multiple values into a field database (MYSQL) using php. Can multiple values be inserted into a single field name within a table?, and if so, how can I insert them using checkboxes?? I've included the code example to give you an idea of where I am.......
Cheers
Cheers
<?php
$names = $_REQUEST['category'];
foreach ($arr as $names) {
$updateSQL = sprintf("UPDATE Table SET category='%s' WHERE id=%s", $names, (int)$_SESSION['user']->getID());
}
?>
<form name="updateForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="checkbox" name="category[]" value="orange"></input>Orange
<input type="checkbox" name="category[]" value="purple"></input>purple
<input type="submit" name="sender" value="Save Profile">
</form>
You want to add multiple rows ? or add all the values in a single row ?
ASKER
I want to add all or some of the checked values in a single row preferably. What do you think the best solution / code is for this?
Hi Simbob,
Is serialization an option?
If you serialize the array, and want want to retrieve it later, you can unserialize() it using the unserialize() function, which turns it back into an array.
Hope this helps.
Is serialization an option?
If you serialize the array, and want want to retrieve it later, you can unserialize() it using the unserialize() function, which turns it back into an array.
Hope this helps.
<?php
$names = serialize($_REQUEST['category']);
$updateSQL = sprintf("UPDATE Table SET category='%s' WHERE id=%s", $names, (int)$_SESSION['user']->getID());
?>
<form name="updateForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="checkbox" name="category[]" value="orange"></input>Orange
<input type="checkbox" name="category[]" value="purple"></input>purple
<input type="submit" name="sender" value="Save Profile">
</form>
ASKER
Hi, I've tried the serialize option, and still I'm getting array being posted with no values.
How do developers usually store / post multiple values from checked lists? I could always create separate field names to store the checked values, but then this seems like a long-winded route and more complicated to retrieve...
Any further ideas?
How do developers usually store / post multiple values from checked lists? I could always create separate field names to store the checked values, but then this seems like a long-winded route and more complicated to retrieve...
Any further ideas?
Simbob what are you trying to achieve ? ... serializing the data and storing it in the database will make the information unusable until they are retrieve and unserialized.
E.g
SELECT * FROM table WHERE catagory = 'blue' will not work.
E.g
SELECT * FROM table WHERE catagory = 'blue' will not work.
Again i dont know what your and goal is ... but the standard design for this would be
TABLE users
user_id
category_id
TABLE categories
category_id
category_name
TABLE users_categories
user_id
category_id
TABLE users
user_id
category_id
TABLE categories
category_id
category_name
TABLE users_categories
user_id
category_id
ASKER
Sorry for sound amateurish :0)
Basically I'm trying to post multiple checked values into a single field for e.g
if orange and purple are both checked, then post / update these values as "orange purple" into the ['category' ] field in the users 'Table'
My database structure is simply:
TABLE: users
FIELD NAME: category
Hope this helps in my explanation.
Cheers
Basically I'm trying to post multiple checked values into a single field for e.g
if orange and purple are both checked, then post / update these values as "orange purple" into the ['category' ] field in the users 'Table'
My database structure is simply:
TABLE: users
FIELD NAME: category
Hope this helps in my explanation.
Cheers
You would probably want to build up the list of categories first - then do the update.
Here is an example (of course you know that with this code sample, there is no actual execution of the sql).
Here is an example (of course you know that with this code sample, there is no actual execution of the sql).
<?php
if (isset($_POST["submit"])) {
$categories = "";
for ($i=0; $i < count($_POST['category']); $i++) {
$categories = categories . $_POST['category'][$i] . " ";
$updateSQL = sprintf("UPDATE Table SET category='%s' WHERE id=%s", $categories, (int)$_SESSION['user']->getID());
}
?>
<form name="updateForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="checkbox" name="category[]" value="orange"></input>Orange
<input type="checkbox" name="category[]" value="purple"></input>purple
<input type="submit" name="sender" value="Save Profile">
</form>
Oops, I forgot the closing brace from the for loop.
<?php
if (isset($_POST["submit"])) {
$categories = "";
for ($i=0; $i < count($_POST['category']); $i++) {
$categories = categories . $_POST['category'][$i] . " ";
}
$updateSQL = sprintf("UPDATE Table SET category='%s' WHERE id=%s", $categories, (int)$_SESSION['user']->getID());
}
?>
<form name="updateForm" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="checkbox" name="category[]" value="orange"></input>Orange
<input type="checkbox" name="category[]" value="purple"></input>purple
<input type="submit" name="sender" value="Save Profile">
</form>
I won't repost the code, but if (isset(... should be:
if (isset($_POST["sender"])) {
I didn't correct the variable name to reflect the name you have in the form.
if (isset($_POST["sender"])) {
I didn't correct the variable name to reflect the name you have in the form.
ASKER
Ok, thats great jaydm - how would I build up the categories first as you mentioned??
I've used the code as you explained, but when I post the information I only manage to update the last checkbox record instead of all checked checkboxes....
I've read somewhere else that a foreach loop could be used - would this be relevant in this case?
Cheers.
I've used the code as you explained, but when I post the information I only manage to update the last checkbox record instead of all checked checkboxes....
I've read somewhere else that a foreach loop could be used - would this be relevant in this case?
Cheers.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Excellent! It works now!!
Thanks for your help Jaydm
Thanks for your help Jaydm
Hi, I'm trying to build a form which include a couple of text fields and check boxes, the purpose of the form is basically for reporting, data can be added and deleted, example:
text fields such as: first name, last name, street address, city, state, zip
check boxes: Purchase, Cashout, Refinance, Second Mortgage, Others
I don't have problem saving the data for each text fields, my problem is how can I save the selected value for each checkboxes, so I could retrieve and print the report later on. thank you for your help.
text fields such as: first name, last name, street address, city, state, zip
check boxes: Purchase, Cashout, Refinance, Second Mortgage, Others
I don't have problem saving the data for each text fields, my problem is how can I save the selected value for each checkboxes, so I could retrieve and print the report later on. thank you for your help.