Bonjour, j'ai un problème concernant mon système de droits. Je souhaiterais pour afficher certaines parties de mon administrations à certains groupes.
J'ai don choisis (
0 pour
non et
1 pour
oui).
J'ai commencer pas le système de news donc, j'ai créer une table :
Code sql :
create table if not exists `admin_news` (
`rang_groupe` int(11) not null,
`creer_news` enum('0','1') not null,
`mod_news` enum('0','1') not null,
`sup_news` enum('0','1') not null,
`valid_news` enum('0','1') not null
) engine=myisam default charset=latin1;
rang_groupe est en faite
le numéro du rang pas l'id !!. On obtient le numéro du rang en faisant :
Code PHP :
<?php
echo $_session['level']; //numero du rang
//par exemple : 100 pour admin, 90 pour modérateur,
//80 pour newser, 2 pour membres,
//0 pour banis, etc...
?>
Donc, voila mon code de la partie formulaire :
Code PHP :
<?php
if(isset($_get['droits_admin']))
{
echo'
<h1>gérer les droits d\'accées</h1>';
?>
<form method="post" action="admin-news_ok.php?droits_admin_ok" />
<table cellspacing="0">
<thead>
<tr>
<th> </th>
<th>Écrire des news</th>
<th>modifier des news</th>
<th>supprimer des news</th>
<th>valider des news</th>
</tr>
</thead>
<?php
$droits = array('creer_news', 'mod_news', 'sup_news','valid_news');
$requete = mysql_query('select group_name, group_rang,
creer_news, mod_news, sup_news, valid_news
from forum_groupes join admin_news on group_rang = rang_groupe');
while($row = mysql_fetch_assoc($requete))
{
echo'
<tbody>
<tr>
<th>'.$row['group_name'].'</th>';
foreach ($droits as $droit) {
if ($row[$droit] == 1) { $checked = ' checked="checked"'; }
else { $checked = ""; }
echo '
<td>
<input type="checkbox" name="droits[' . $row['group_rang'] . '][' . $droit . ']"' . $checked . ' value="1"/>
</td>';
}
echo'
</tr>
</tbody>';
}
echo'</table>
<br />
<input type="submit" value="modifier ces droits" />
</form>';
}
?>
Est le code la partie traitement :
Code PHP :
<?php
if(isset($_get['droits_admin_ok']))
{
$lstdroits = array('creer_news', 'mod_news', 'sup_news','valid_news');
if (isset($_post['droits']))
{
// tu parcoures tu tableau en recuperant le groupe et les cases cochées
foreach($_post['droits'] as $groupe=>$droits)
{
foreach($lstdroits as $droit) {
// si la case n'est pas cochée, elle n'existe pas dans la recolte et on lui donne 0 comme valeur
if (isset($droits[$droit]))
{
$droits[$droit] = 1;
}
else
{ $droits[$droit] = 0;
}
}
mysql_query("update admin_news set creer_news='" . $droits['creer_news'] . "', mod_news='" . $droits['mod_news'] . "', sup_news='" . $droits['sup_news'] . "', valid_news='" . $droits['valid_news'] . "' where
rang_groupe='" . $groupe . "'");
}
echo'ok !';
}
else
{
echo'non !';
}
} //fin
?>
Le problème de code c'est que, je ne peux pas tout décocher, par exemple je coche 5 cases au hasard, je peux en décocher 1 mais, les autres elle ne ce mettent pas à 0... mais par contre sa marche impec concernant de mettre les champs à 1... pouvez vous me dire pourquoi je peux en mettre qu'1 mais pas plusieurs à 0 ?
Merci...