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