Jump to content
Larry Ullman's Book Forums

Recommended Posts

I am attempting to develop a PHP script to record presence at an event for those persons in a mysql table Persons.  I am attempting to use checkboxes to indicate who was present.  Here is the script as currently written:

 

<?php # Script
require ('includes/mysqli_connect.php');
 
if(isset($_POST['checkbox'])) {$checkbox = $_POST['checkbox'];
if(isset($_POST['activate'])?$activate = $_POST["activate"]:$deactivate = $_POST["deactivate"]);
$id = "('" . implode( "','", $checkbox ) . "');" ;
echo $id;
$q="UPDATE Persons SET present = '".(isset($activate)?'Y':'N')."' WHERE id IN $id" ;
$r = mysqli_query($dbc,$q) or die(mysqli_error());
}
 
$q = "SELECT * FROM Persons";
$r = @mysqli_query ($dbc,$q);
 
$count=mysqli_num_rows($r);
?>
 
<!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>Update multiple rows in mysql with checkbox</title>
 
<script type="text/javascript">
<!--
function un_check(){
for (var i = 0; i < document.frmactive.elements.length; i++) {
var e = document.frmactive.elements;
if ((e.name != 'allbox') && (e.type == 'checkbox')) {
e.checked = document.frmactive.allbox.checked;
}}}
//-->
</script>
 
</head>
<body>
 
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="frmactive" method="post" action="checkboxes.php">
<table width="400" border="0" cellpadding="3" cellspacing="1">
<tr>
<td colspan="5"><input name="activate" type="submit" id="activate" value="Activate" />
<input name="deactivate" type="submit" id="deactivate" value="Deactivate" /></td>
</tr>
<tr>
<td> </td>
<td colspan="4"><strong>Update multiple rows in mysql with checkbox</strong> </td>
</tr><tr>
<td align="center"><input type="checkbox" name="allbox" title="Select or Deselect ALL" style="background-color:#ccc;"/></td>
<td align="center"><strong>id</strong></td>
<td align="center"><strong>first_name</strong></td>
<td align="center"><strong>last_name</strong></td>
<td align="center"><strong>present</strong></td>
</tr>
<?php
while ($row = mysqli_fetch_array($r)) {
  ?>
  <tr>
  <td align="center"><input name="checkbox[]" type="checkbox" id="checkbox" id="checkbox[]" value="<? echo $rows['person_id']; ?>"></td>
  <td><? echo $row['person_id']; ?></td>
  <td><? echo $row['first_name']; ?></td>
  <td><? echo $row['last_name']; ?></td>
  <td><? echo $row['present']; ?></td>
  </tr>
  <?php
}
?>
<tr>
<td colspan="5" align="center"> </td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>

 

The table Persons contains these columns: person_id, first_name,last_name,present.

 

I inserted the echo line after the line defining $id which is copied below:

$id = "('" . implode( "','", $checkbox ) . "');" ;
echo $id;
 
But $id only contains empty strings.
 
Can anyone help me understand what I am doing wrong?
Is $checkbox always ending up empty?
Any direction will be appreciated.
 
Wes Smith
 

 

 

Link to comment
Share on other sites

The $_POST variable in PHP stores keys as per the name attribute of HTML input elements.

The name attribute of your input elements is checkbox[], not checkbox.

 

Add the following to the top of your code, and I think you'll quickly see the issue. Thanks.

echo '<pre>';
print_r($_POST);
echo '</pre>';
Link to comment
Share on other sites

 Share

×
×
  • Create New...