Jump to content

dynamic check boxes


powpow

Recommended Posts

I was using this wonderful tutorial on dynamic check boxes and databases http://www.phpfreaks.com/tutorial/working-with-checkboxes-and-a-database  .  This example is uses checkboxes to give users admin rites.

 

I have tried to revamp this code to handle more inputs from checkboxes but some where I have made some errors. 

 

<?php
include("db.php");
$updated = FALSE;
if(count($_POST) > 0){
    $DEP = $_POST['MMARS_DEP'];
    array_map('intval',$DEP);
    $DEP = implode(',',$DEP);
    mysql_query("UPDATE master_roles SET MMARS_DEPT=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_DEPT=1 WHERE id IN ($DEP)") or trigger_error(mysql_error(),E_USER_ERROR);
    $MD = $_POST['MMARS_MD'];
    array_map('intval',$MD);
    $MD = implode(',',$MD);
    mysql_query("UPDATE master_roles SET MMARS_MD=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_MD=1 WHERE id IN ($MD)") or trigger_error(mysql_error(),E_USER_ERROR);
    $ORG = $_POST['MMARS_ORG'];
    array_map('intval',$ORG);
    $ORG = implode(',',$ORG);
    mysql_query("UPDATE master_roles SET MMARS_ORG=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_ORG=1 WHERE id IN ($ORG)") or trigger_error(mysql_error(),E_USER_ERROR);
    $SEC = $_POST['MMARS_SEC'];
    array_map('intval',$SEC);
    $SEC = implode(',',$SEC);
    mysql_query("UPDATE master_roles SET MMARS_SEC=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_SEC=1 WHERE id IN ($SEC)") or trigger_error(mysql_error(),E_USER_ERROR);
    $BOG = $_POST['MMARS_BOG'];
    array_map('intval',$BOG);
    $BOG = implode(',',$BOG);
    mysql_query("UPDATE master_roles SET MMARS_BOG=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_BOG=1 WHERE id IN ($BOG)") or trigger_error(mysql_error(),E_USER_ERROR);
    $SW = $_POST['MMARS_SW'];
    array_map('intval',$SW);
    $SW = implode(',',$SW);
    mysql_query("UPDATE master_roles SET MMARS_SW=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_SW=1 WHERE id IN ($SW)") or trigger_error(mysql_error(),E_USER_ERROR);





   $updated=TRUE;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>phpfreaks checkbox tutorial</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<?php
if($updated===TRUE){
    echo '<div>Privileges Updated!</div>';
}
?>
<table>
<tr>
<th><td>DEPT</td><td>MD</td><td>ORG</td><td>SEC</td><td>BOG</td><td>SW</td></th>
<?php

$label = array('MMARS','LCM','NM SEC','Classic MMARS','CAPS','PMIS','WRK COMP');
$table = array('MMars','LCM', 'NMSec', 'ClassMars', 'CAPS', 'PMIS', 'WrkComp');



     $i= 0;
     while($i < 1){

     echo "<tr>"
     ."<td>".$label[$i]."</td>";

$array = array();
$count = 0;

$Aid = mysql_query("SELECT DISTINCT id FROM DB") or die (mysql_error());

while ($row= mysql_fetch_assoc($Aid)){
$ID = $row['id']."<br>";
$array[$count] = $ID;
$count++;
}


$Disabled ="";
$sql = "SELECT id, UAID, DB_NAME, MMARS_DEPT, MMARS_MD, MMARS_ORG, MMARS_SEC, MMARS_BOG, MMARS_SW  FROM master_roles  WHERE `UAID`='1000' AND id <= 6";

$result = mysql_query($sql) or trigger_error(mysql_error(),E_USER_ERROR);
$row = mysql_fetch_row($result);
list($id, $UAID, $DB_NAME, $MMARS_DEP, $MMARS_MD, $MMARS_ORG, $MMARS_SEC, $MMARS_BOG, $MMARS_SW)= $row;


                $checked = ($MMARS_DEPT==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[0].'<input type="checkbox" name="MMARS_DEP[]" value="'.$array[0].'" '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_MD==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[1].'<input type="checkbox" name="MMARS_MD[]"  value="'.$array[1].'"  '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_ORG==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[2].'<input type="checkbox" name="MMARS_ORG[]"  value="'.$array[2].'"  '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_SEC==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[3].'<input type="checkbox" name="MMARS_SEC[]"  value="'.$array[3].'" '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_BOG==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[4].'<input type="checkbox" name="MMARS_BOG[]" value="'.$array[4].'" '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_SW==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[5].'<input type="checkbox" name="MMARS_SW[]" value="'.$array[5].'" '.$checked.', '.$Disabled.' /></td>';






     echo "</tr>";
     $i ++;
     }





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

 

After the post each individual checkbox input is saved into a variable then we query the database and check if any of the checkboxes have been changed to 1.  If so then than right is updated to one.

 

if(count($_POST) > 0){
    $DEP = $_POST['MMARS_DEP'];
    array_map('intval',$DEP);
    $DEP = implode(',',$DEP);
    mysql_query("UPDATE master_roles SET MMARS_DEPT=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_DEPT=1 WHERE id IN ($DEP)") or trigger_error(mysql_error(),E_USER_ERROR);
    $MD = $_POST['MMARS_MD'];
    array_map('intval',$MD);
    $MD = implode(',',$MD);
    mysql_query("UPDATE master_roles SET MMARS_MD=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_MD=1 WHERE id IN ($MD)") or trigger_error(mysql_error(),E_USER_ERROR);
    $ORG = $_POST['MMARS_ORG'];
    array_map('intval',$ORG);
    $ORG = implode(',',$ORG);
    mysql_query("UPDATE master_roles SET MMARS_ORG=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_ORG=1 WHERE id IN ($ORG)") or trigger_error(mysql_error(),E_USER_ERROR);
    $SEC = $_POST['MMARS_SEC'];
    array_map('intval',$SEC);
    $SEC = implode(',',$SEC);
    mysql_query("UPDATE master_roles SET MMARS_SEC=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_SEC=1 WHERE id IN ($SEC)") or trigger_error(mysql_error(),E_USER_ERROR);
    $BOG = $_POST['MMARS_BOG'];
    array_map('intval',$BOG);
    $BOG = implode(',',$BOG);
    mysql_query("UPDATE master_roles SET MMARS_BOG=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_BOG=1 WHERE id IN ($BOG)") or trigger_error(mysql_error(),E_USER_ERROR);
    $SW = $_POST['MMARS_SW'];
    array_map('intval',$SW);
    $SW = implode(',',$SW);
    mysql_query("UPDATE master_roles SET MMARS_SW=0") or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("UPDATE master_roles SET MMARS_SW=1 WHERE id IN ($SW)") or trigger_error(mysql_error(),E_USER_ERROR);

 

The html is a straight forward form.  I have arrays set up and while loop ready for implementation because I plan on having this repeat multiple times. 

 

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>phpfreaks checkbox tutorial</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<?php
if($updated===TRUE){
    echo '<div>Privileges Updated!</div>';
}
?>
<table>
<tr>
<th><td>DEPT</td><td>MD</td><td>ORG</td><td>SEC</td><td>BOG</td><td>SW</td></th>
<?php

$label = array('MMARS','LCM','NM SEC','Classic MMARS','CAPS','PMIS','WRK COMP');
$table = array('MMars','LCM', 'NMSec', 'ClassMars', 'CAPS', 'PMIS', 'WrkComp');



     $i= 0;
     while($i < 1){

     echo "<tr>"
     ."<td>".$label[$i]."</td>";

 

I had a lot of problems keeping the id unique for each checkbox.  This is why I created an array with the ids and I use them as "value" in the input field.

 

$array = array();
$count = 0;

$Aid = mysql_query("SELECT DISTINCT id FROM DB") or die (mysql_error());

while ($row= mysql_fetch_assoc($Aid)){
$ID = $row['id']."<br>";
$array[$count] = $ID;
$count++;
}

 

I sql the database for id, UAID, DB_NAME, and all of the necessary rites.  With list I assign each row with the correct name.  Each checkbox's associated field in the db is checked to see if it is set to 1.  If it is checked="checked".

 

$sql = "SELECT id, UAID, DB_NAME, MMARS_DEPT, MMARS_MD, MMARS_ORG, MMARS_SEC, MMARS_BOG, MMARS_SW  FROM master_roles  WHERE `UAID`='1000' AND id <= 6";
$result = mysql_query($sql) or trigger_error(mysql_error(),E_USER_ERROR);
$row = mysql_fetch_row($result);

list($id, $UAID, $DB_NAME, $MMARS_DEPT, $MMARS_MD, $MMARS_ORG, $MMARS_SEC, $MMARS_BOG, $MMARS_SW)= $row;


        $checked = ($MMARS_DEPT==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[0].'<input type="checkbox" name="MMARS_DEP[]" value="'.$array[0].'" '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_MD==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[1].'<input type="checkbox" name="MMARS_MD[]"  value="'.$array[1].'"  '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_ORG==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[2].'<input type="checkbox" name="MMARS_ORG[]"  value="'.$array[2].'"  '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_SEC==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[3].'<input type="checkbox" name="MMARS_SEC[]"  value="'.$array[3].'" '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_BOG==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[4].'<input type="checkbox" name="MMARS_BOG[]" value="'.$array[4].'" '.$checked.' , '.$Disabled.' /></td>';
        $checked = ($MMARS_SW==1) ? 'checked="checked"' : '';
        echo '<td>'.$array[5].'<input type="checkbox" name="MMARS_SW[]" value="'.$array[5].'" '.$checked.', '.$Disabled.' /></td>';



I am attaching a print out of my joined table I am querying as well as my final vision for this form. 

 

In advance, thank you for your help.

 

 

[attachment deleted by admin]

Link to comment
https://forums.phpfreaks.com/topic/220566-dynamic-check-boxes/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.