Jump to content

Update Multiple Checkboxes Where Id


DarkSynopsis

Recommended Posts

Quite new to PHP and right now I'm trying to have it so when a Checkbox is checked row "cb_value" becomes 1 depending on what item the Checkbox is next to based on ID and if not checked the "cb_value" would be 0 so users can freely update a list.

 

I'm trying to create a Simple Test page for this with a Test Database and learn from there how to use it where I want to.

 

Database:

 

cd_id | cb_value

1 | 1

2 | 1

3 | 0

4 | 0

 

Right now my code is as follows

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Testing Checkbox Submission</title>
</head>
<?php
include "config.php";
?>
<body>
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="white">
   <form method="post">
 <tr bgcolor="#CCCCCC" align="center">
  <td width="36%"><h4>Checkbox</h4></td>
 </tr>
<?php
 $query = "SELECT * FROM test";
 $result = mysql_query($query);
 while($row = mysql_fetch_assoc($result)) {   // Start looping table row
 $id = $row['cb_id'];
 $checkbox = $row['cb_value'];

if (isset($_POST['submit'])) {
 $select = mysql_query("SELECT * FROM test");
 $row = mysql_fetch_assoc($select);
 $id = $row['cb_id'];
 $checkbox = $_POST['checkbox'];
 $query = mysql_query("UPDATE test SET cb_value = '$checkbox' WHERE cb_id = '$id'");
}
 ?>
 <tr align="center" bgcolor="#eeeeee">
  <td> <input type="checkbox" name="checkbox" value="1"
  <?php
   if($checkbox == '1')
  {
    echo "checked='checked'";
  }
  ?>/> </td>
 </tr>

<?php
} // end of while loop
?>

 <tr>
    <td> <input type="submit" name="submit" value="Update"/> </td>
    </tr>
</form>
</table>
</body>
</html>

 

I can't seem to wrap my head around this I've had no problems in the past updating a field in a Database via PHP but come to think about it there is normally only 1 ID involved this needs to be able to grab each one and then give it a value of either 0 or 1 depending on the state of the Checkbox.

 

Last time I ran the above code no matter what Checkbox I tick ID 1 ends up getting 1 in the "cb_value" and unchecking and update does not give 0 but I can't imagine it would without some form of code to say do that which I have no idea how to do right now.

 

Hopefully someone can help me out and explain where I'm going wrong and such.

 

Thanks!

Link to comment
Share on other sites

something like this

<?php
include("testDBconnect.php");

/********************
* Process form data
********************/

if (isset($_POST['cb_value'])) {
   mysql_query("UPDATE test SET cb_value = 0"); // unset all values;

   $tmp = array_map('intval', $_POST['cb_value']);	 // cleanse input
   $idlist = join(',', $tmp);						  // create a comma-separated list of the ids

   /**************************************
   * only checked checkboxes are posted
   * so set values of the posted ids to 1
   ***************************************/
   mysql_query("UPDATE test SET cb_value = 1 WHERE cd_id IN ($idlist)");
}

/**********************
* display the form
***********************/

echo "<form method='post' >";
$sql = "SELECT cd_id, cb_value FROM test";
$res = mysql_query($sql);
while (list($id, $val) = mysql_fetch_row($res)) {
   $checked = $val==1 ? 'checked':'';
   echo "<input type='checkbox' name='cb_value[]' value='$id' $checked /> $id<br />";
}
echo "<input type='submit' name='btnSubmit' value='Submit'/>
</form>";
?>

Link to comment
Share on other sites

First, Jessica is right.

 

Second, if a user selects a checkbox field, and then submits it to PHP, it will be set to 'on' in the post array. You don't have to create an additional variable to reflect that it has been set, because PHP provides it for you.

 

Thus, here is an example using your code:

 

[code<input type="submit" name="submit[]" value="Update"/>[/code]

 

Note the square brackets after "submit" in the name field. This is what will give you an array of checkbox values.

 

Then you can reference their values like so:

 

if (!empty($_POST['submit'])) //though I would recommend changing this variable name, I have left it as you originally marked it up
{
   foreach($_POST['submit'] as $key => $value)
   {
       if ($_POST['submit'][$key] === 'on')
       {
           Now you can set new variables based on what you find within your post array.
       }
   }
}

Edited by nodirtyrockstar
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.