Problème avec mon système de droits

Signaler
Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009
-
Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009
-
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 :

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 :

<?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 :

<?php
if(isset($_GET['droits_admin']))
{
echo'
Gérer les droits d\'accées
';
?>
<form method  ="post" action= "admin-news_ok.php?droits_admin_ok" />
   |
Écrire des news |
Modifier des news |
Supprimer des news |
Valider des news |

<?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'

----

 '.$row['group_name'].'  |';

foreach ($droits as $droit) {

if ($row[$droit]  == 1) { $checked = ' checked=\"checked\"'; }
else { $checked = \"\"; }

echo '
, ';
}
echo'

';
}

echo'




</form>';
}
?>


Est le code la partie traitement :

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

1 réponse

Messages postés
11
Date d'inscription
mercredi 2 novembre 2005
Statut
Membre
Dernière intervention
30 septembre 2009

Up