IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Système de droits d'accès pour l'administration (groupe)


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut Système de droits d'accès pour l'administration (groupe)
    Bonjour,

    Dans mon site, j'ai mis en place un système de groupe, est j'ai mis en place une requête + une conditions pour que si le groupe du membre n'est pas le bon, sa affiche :

    Vous n'avez pas les droits nécessaire pour effectué cette action

    Sa marche très bien, le seul hic, c'est que j'ai voulus recopier sur Punbb, au sujet des droits...



    Donc, j'ai fais un tableau avec un while, j'y est mis les nom des groupes :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?php
    $requete = mysql_query('SELECT group_name, group_rang FROM forum_groupes');
    while($data_groupes = mysql_fetch_assoc($requete))
    {
    echo'
    <tbody>
    <tr>
    <th>'.$data_groupes['group_name'].'</th>
    
    <td>
    <input type="hidden" name="groupe" value='.$data_groupes['group_rang'].'" />
    <input type="checkbox" name="creer_news" value="1" />
    </td>
    
    <td>
    <input type="hidden" name="groupe" value='.$data_groupes['group_rang'].'" />
    <input type="checkbox" name="mod_news" value="1" />
    </td>
    
    <td>
    <input type="hidden" name="groupe" value='.$data_groupes['group_rang'].'" />
    <input type="checkbox" name="sup_news" value="1" />
    </td>
    
    <td>
    <input type="hidden" name="groupe" value='.$data_groupes['group_rang'].'" />
    <input type="checkbox" name="valid_news" value="1" />
    </td>
    
    </tr>
    </tbody>';
    }
    echo'</table>
    <br />
    <input type="submit" value="Modifier ces droits" />
    </form>';
    //} $_GET[''] ^^
    ?>

    Donc, sa affiche le tableau avec les checkbox, le problème c'est dans la partie "update", je n'arrive pas à modifier les droits pour le groupe que j'ai cocher les droits :

    Par exemple,

    Je coche pour :
    Administrateur - Écrire des news
    Membre - Modifier des news
    Modérateur - Supprimer des news
    Newser - Valider des news

    Ce qui correspond à sa :

    Donc, quand je fais sa coche tout mais, juste pour le dernier groupe du tableau, c'est à dire "Newser".

    Voici ma table :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    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;

    0 - pour par accès
    1 - pour accès
    rang_groupe - le rang du groupe du membre


    Est pour la partie traitement :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php
    if(isset($_GET['droits_admin_ok']))
    {
    if (isset($_POST['creer_news']) && !empty($_POST['creer_news']) && 
    isset($_POST['mod_news']) && !empty($_POST['mod_news']) && 
    isset($_POST['sup_news']) && !empty($_POST['sup_news']) &&
    isset($_POST['valid_news']) && !empty($_POST['valid_news']))
    {
    $groupe = intval($_POST['groupe']); 
    $ecrire_news = intval($_POST['creer_news']);
    $modifier_news = intval($_POST['mod_news']);
    $supprimer_news = intval($_POST['sup_news']);
    $valider_news = intval($_POST['valid_news']);
     
    //ici
    mysql_query("UPDATE admin_news SET creer_news='" . $ecrire_news . "', mod_news='" . $modifier_news . "', sup_news='" . $supprimer_news . "', valid_news='" . $valider_news . "' WHERE 
    rang_groupe='" . $groupe . "'");
    echo'<br />Les droits de ce groupe ont bien été modifiés !';
    }
    else
    {
    echo'Vous devez sélectionner vos options pour ce groupe !';
    }
    } //Fin
    ?>

    Voila, merci d'avance à ceux qui m'aideront car, j'ai eu beaux passer 3-4 heures, rien, sa ne marche pas... :o
    Merci. ^^

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Regarde ton tableau :

    sur une ligne dans chaque case tu repetes le champ "groupe" avec la meme valeur
    sur une colonne, toutes les checkbox ont le meme nom.

    De plus, tu ne lis pas les informations de ta base pour savoir si une case doit etre déjà cochée ou non.

    Je te propose du construire ton tableau comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    droits = array('creer_news', 'mod_news', 'sup_news','valid_news');
     
    $requete = mysql_query('SELECT group_name, group_rang 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>';
     }
    </tr>
    </tbody>';
    }
    Tu recoltes donc $_POST['droits'] qui contient par exemple
    $_POST['droits'][1334]['sup_news'] = 1
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Merci, mais il me marque :

    Notice: Undefined index: creer_news in C:\Documents and Settings\Administrateur\Bureau\Programmation PHP\Webmascript\admin\admin-news.php on line 386

    Notice: Undefined index: mod_news in C:\Documents and Settings\Administrateur\Bureau\Programmation PHP\Webmascript\admin\admin-news.php on line 386

    Notice: Undefined index: sup_news in C:\Documents and Settings\Administrateur\Bureau\Programmation PHP\Webmascript\admin\admin-news.php on line 386

    Notice: Undefined index: valid_news in C:\Documents and Settings\Administrateur\Bureau\Programmation PHP\Webmascript\admin\admin-news.php on line 386
    Ligne 386 : if ($row[$droit] == 1)

    Merci...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    heu oui pardon il faut ajouter les champs adequats dans le SELECT
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Merci, sa va beaucoup mieux comme sa ^^
    Mais, j'ai pas compris comment récupérer sa, sur la page de traitement, en faisant $_POST['droits'], sa me marque Array ???

    Je suis désoler mais, j'ai jamais fais un truc de ce genre avant :
    <input type="checkbox" name="droits[' . $row['group_rang'] . '][' . $droit . ']"' . $checked . ' value="1"/>

    Je ne c'est pas comment récupérer sa

    Merci...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Oui je t'ai dis tu recuperes $_POST['droits'][1334]['sup_news'] = 1

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $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($lstFroits 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 . "'");
     
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. jsf et Droit d'Accès pour les utilisateur
    Par pourjava dans le forum JSF
    Réponses: 1
    Dernier message: 20/07/2007, 14h42
  2. Droit d'acces pour "/"
    Par mzt.insat dans le forum Administration système
    Réponses: 3
    Dernier message: 10/04/2006, 16h04
  3. Droit d'accès pour la racine d'un serveur apache
    Par photorelief dans le forum Administration système
    Réponses: 2
    Dernier message: 01/03/2006, 13h26
  4. Difficulté à configurer les droits d'acces pour PgAdmin
    Par Pigoulou dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 22/12/2005, 16h04
  5. Access 2003 maitrise des droits d'accès pour "Users&qu
    Par JEANBABET dans le forum Access
    Réponses: 1
    Dernier message: 10/09/2005, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo