8791 sujets

Développement web côté serveur, CMS

Voilà je veux mettre un espace administrateur sur mon site.
Dans cet espace, j'ai créé une zone dans laquelle sont affichés tout les membres qui ont accès à l'espace administrateur.
Ils apparaissent sous la forme d'une liste à l'aide du code ci-dessous.
A côté de chaque nom est placé une image, sous la forme d'un input, qui lorsque je clique dessous doit me permettre de supprimer les droits de l'utilisateur concerné.
Ceci afin d'éviter d'aller dans la bdd elle-même.

Mais je ne sais pas comment faire en sorte que ce bouton supprime effectivement l'utilisateur de la bdd.

J'ai plusieurs idée:
- Mettre une input de type hidden qui aura comme value l'id de la personne concernée et ensuite le bouton d'annulation récupère cet id pour supprimer le compte?
- Donner au bouton annulation la valeur de l'id ?

Dans tous les cas, je ne sais pas comment mettre de tout en oeuvre.
J'aimerai pouvoir bénéficier de vos aides Smiley biggrin

<?php
    if ($db = @mysql_connect('localhost','root',''))
              {
                  mysql_select_db(ma_bdd,$db);
                  $result = mysql_query("SELECT * FROM `ma-table`");
                  echo "<table>";
                  // tant qu'il y a des membres les inscrire dans la liste
                  while ($reponse = mysql_fetch_array($result))
                                {                                
                                echo "<tr text-align=\"left\"><td width=\"10px\"><img class=\"puce2\" src=\"images/pict_liste_rouge.png\"></td><td width=\"20px\">";
                                echo $reponse["prenom"];
                                echo "</td><td width=\"20px\">";
                                echo $reponse["nom"];
                                echo "</td><td><input type=\"image\" name=\"annulation\" class=\"suppression\" alt=\"supprimer un compte\" value=\"annulation\" onClick=\"javascript:annulation();\" src=\"images/delete20.gif\"/></td></tr>";
                                }
                  echo"</table>";
                  mysql_close($db);
                }
                else{
                      echo 'connection failed';
                }
?>
Perso j'ai fait un bouton avec une image et le code suivant :

Chaque ligne correspond à un membre et donc à un id.

<a href='adminmembres.php?Action=Suppression&id=$id' title='Supprimer'><img src='images/gifs/supprimer.gif' alt='Supprimer' /></a>


Ensuite la page membre vérifie les droits de suppression et supprime si c'est ok.

Connection_Bdd();
TestDroitsAdmin();

// Si on est bien connecté à la base de donnée on débute le programme
if ($_SESSION['Erreur_Connexion']=="")
{
  // Suppression d'un membre
  if (!isset($_GET['Action'])) $_GET['Action']="";
  $Action=$_GET['Action'];
  if ($Action=="Suppression")
  {
    $id=$_GET['id'];
    $Requete_Supp_Membre = "DELETE from membres
                          WHERE membres_id='$id'";
    mysql_query($Requete_Supp_Membre);
    header("Location: adminmembres.php");
    exit;
  }
}


Il y a surement plus propre mais ça fonctionne pas mal chez moi.

Bon courage.
Bilgor Le Rouge a écrit :

Il y a surement plus propre mais ça fonctionne pas mal chez moi.
J'aurais juste rajouté
$id= [b]intval([/b]$_GET['id'][b])[/b];
et utilisé mysql_affected_rows pour vérifier que l'enregistrement était bien effacé. Smiley cligne
Heyoan a écrit :
J'aurais juste rajouté
$id= [b]intval([/b]$_GET['id'][b])[/b];
et utilisé mysql_affected_rows pour vérifier que l'enregistrement était bien effacé. Smiley cligne


Pas con mysql_affected_rows il faudra que je le rajoute aussi au cas ou...

Par contre le intval je ne vois pas trop la plus value. Smiley ohwell
Tu m'expliques ?
Juste pour vérifier qu'on a pas passé un nombre à virgule ? mais ça retourne 0 si erreur donc supprime l'id 0 non ?
Bilgor Le Rouge a écrit :


Par contre le intval je ne vois pas trop la plus value. Smiley ohwell
Tu m'expliques ?
intval c'est juste une manière simple d'être bien sûr d'être sûr que l'id sera bien un entier. Donc pour éviter id=33.33 mais aussi pour éviter id=abcd.
Modifié par Heyoan (09 Dec 2008 - 07:57)
Bon Smiley confused me revoilà...
Il me semble que je n'ai pas tout compris.
J'ai donc construit mon bouton comme dans l'exemple de Bilgor Le Rouge
Ci-dessous la page (inscription_admin.php) qui contient les noms des admins et le bouton de suppression en face de chacun:
<?php
    if ($db = @mysql_connect('localhost','root',''))
              {
                  mysql_select_db('ma_base',$db);
                  $result = mysql_query("SELECT * FROM `ma_table`");
                  echo "<table>";
                  // tant qu'il y a des membres les inscrire dans la liste
                  while ($reponse = mysql_fetch_array($result))
                                {                                
                                echo "<tr text-align=\"left\"><td width=\"10px\"><img class=\"puce2\" src=\"images/pict_liste_rouge.png\"></td><td width=\"20px\">";
                                echo $reponse["prenom"];
                                echo "</td><td width=\"20px\">";
                                echo $reponse["nom"];
                                echo "</td><td>[b]<a href=\"suppression_compte.php?Action=Suppression&id=$id\" title=\"Supprimer le compte\"><img class=\"suppression\" src=\"images/delete20.gif\" alt=\"Supprimer un compte\" /></a>[/b] </td></tr>";
                                }
                  echo"</table>";
                  mysql_close($db);
                }
                else{
                      echo 'connection failed';
                }
?>


Puis j'ai créé une nouvelle page php (suppression_compte.php) comme suit:
<?php
      session_start();  
      // Si on est bien connecté à la base de donnée on débute le programme
if ($db = @mysql_connect('localhost','root',''))
         {
         mysql_select_db('compte_membres',$db);
         if ($_SESSION['Erreur_Connexion']=="")
             {
             // Suppression d'un membre
             if (!isset($_GET['Action'])) $_GET['Action']="";
                  $Action=$_GET['Action'];
             if ($Action=="Suppression")
                      {
                        $id=$_GET['id'];
                        $Requete_Supp_Membre = "DELETE from `ma_table` WHERE id='$id'";
                        mysql_query($Requete_Supp_Membre);
                        header("Location:inscription_admin.php");
                        exit;
                     }
              }
         mysql_close($db);
          }          
?>

Cette seconde page est censée supprimer le compte et revenir à la page précédente.
Mais je n'ai pas la suppression qui s'opère Smiley biggol
Donc j'ai besoin de vos lumières.
Autre point: qu'est ce que ces deux élément au début du code:

a écrit :
Connection_Bdd();
TestDroitsAdmin();


Merci d'avance Smiley biggrin
Hello,

Tu a laissé le code tel quel ou tu l'a adapté à ton cas ?
Par exemple en remplacant 'ma_table' par membres dans la requete Smiley cligne
Tymlis a écrit :
Hello,

Tu a laissé le code tel quel ou tu l'a adapté à ton cas ?
Par exemple en remplacant 'ma_table' par membres dans la requete Smiley cligne

J'ai mis les nom de table et de base qui correspondent à celle qui est la mienne. ce qui me parait normal, non?
Oui, oui, tout à fait, mais dans le code que tu a posté, tu avais laissé les valeurs d'exemple qui t'avaient été indiqué plus haut, d'où ma remarque.

Tu peux commencer par enlever le header("Location:inscription_admin.php"); exit; après ta requete pour débugguer un peu plus ce qu'il se passe.
Par exemple en faisant un echo de ta $Requete_Supp_Membre et en collant le résultat dans phpMyAdmin pour voir ce qu'il t'en dit, ou alors en regardant le résultat de mysql_error()
Désolé pour le retard j'avais oublié de flaguer le sujet. Smiley confused
Edit : Heu on peux pas faire ça sur un sujet qui ne nous appartient pas, pas glop ça....

Ces deux fonctions me servent comme leurs nom l'indique :
Connection_Bdd(); à me connecter à la base de données qui va bien et me retourne un id de session.

TestDroitsAdmin(); à tester si l'utilisateur à le droit de faire telle ou telle manipulation. ici à supprimer des enregistrements dans la base de données.
Idem ça me retourne une variable de session en fonction des droits de l'utilisateur.
Modifié par Bilgor Le Rouge (16 Dec 2008 - 10:41)