Veuillez vous connecter ou créer un compte pour suivre ce topic
Ce topic est suivi par: Dunvii
Auteur Sujet: Requête de suppression précise

Dunvii
Membre Premium

Messages: 4

Bonjour à tous,

Alors voila j'ai un soucis, je developpe actuellement mon panel pour un serveur de jeux.
J'ai tout réussi jusque la, "session", "design" etc...
Maintenant j'ai un soucis avec une requête de suppression d'une ligne en particulier je m'explique.

C'est un serveur de jeux GTA auxquels nous retrouvons plusieurs personnages par compte.
La bdd se situe comme sa :
La table accounts avec les informations de compte dont l'ID.
La table characters avec la colonne account qui doit correspondre avec l'ID du accounts.
Jusque la j'arrive a faire mes requêtes correctement pour récupérer les personnages et les intégrer dans mon panel.
Maintenant je fais un bouton qui supprime le personnage que j'ai intégrer dans mon script mais le soucis est qu'il me supprime tout mes personnages qui correspondent à l'ID du compte.

Voici le code PHP de la page :

<?php
session_start();

$bdd = new PDO('mysql:host=127.0.0.1;dbname=xxxx', 'xxxx', 'xxx');

if(isset($_GET['id']) AND $_GET['id'] > 0) {
   $getid = intval($_GET['id']);
   $requser = $bdd->prepare('SELECT * FROM accounts WHERE id = ?');
   $requser->execute(array($getid));
   $userinfo = $requser->fetch();
}
if(isset($_GET['account']) AND $_GET['account'] > 0)
{
   $getid = intval($_GET['account']);
   $requser2 = $bdd->prepare('SELECT * FROM characters WHERE account = ?');
   $requser2->execute(array($getid));
   $userinfo2 = $requser2->fetch();
}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Notre Vie RolePlay | UCP</title>

<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/datepicker3.css" rel="stylesheet">
<link href="css/styles.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" >

<script src="js/lumino.glyphs.js"></script>


</head>

<body>
   <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
      <div class="container-fluid">
         <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#sidebar-collapse">
               <span class="sr-only">Barre de navigation</span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="<?php
                     if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id']) 
                     {
                           echo 'index.php?id=' .$_SESSION['id']. '';
                        }
                        else
                        {
                           header("Location: login.php");
                        }
                        ?>"><img src="img/logo.png" height="25" width="25"> <span>Notre Vie </span>RolePlay</a>
            <?php
               if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id']) {
               ?>
            <ul class="user-menu">
               <li class="dropdown pull-right">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown"><svg class="glyph stroked male-user"><use xlink:href="#stroked-male-user"></use></svg>
                  <?php

                  if(isset($_SESSION['id']))
                  {
                     echo 'Bienvenue '.$userinfo['username'].'';
                  }
                  else
                  {
                     echo 'Bienvenue';
                  }
                  ?>
                  <span class="caret"></span></a>
                  <ul class="dropdown-menu" role="menu">
                     <li><a href="<?php
                     if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id']) 
                     {
                           echo 'compte.php?id=' .$_SESSION['id']. '';
                        }
                        else
                        {
                           header("Location: login.php");
                        }
                        ?>"><i class="fa fa-user"></i> Mon compte</a></li>
                     <li><a href="logout.php"><i class="fa fa-unlock-alt" aria-hidden="true"></i> Deconnexion</a></li>
                  </ul>
            <?php
            }
            ?>
               </li>
            </ul>
         </div>
                     
      </div><!-- /.container-fluid -->
   </nav>
      
   <div id="sidebar-collapse" class="col-sm-3 col-lg-2 sidebar">
      <ul class="nav menu">
         <li><a href="<?php
                     if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id']) 
                     {
                           echo 'index.php?id=' .$_SESSION['id']. '';
                        }
                        else
                        {
                           header("Location: login.php");
                        }
                        ?>"><i class="fa fa-home" aria-hidden="true"></i> Tableau de bord</a></li>
         <li class="active"><a href="<?php
                     if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id']) 
                     {
                           echo 'personnages.php?id=' .$_SESSION['id']. '';
                        }
                        else
                        {
                           header("Location: login.php");
                        }
                        ?>"><i class="fa fa-users" aria-hidden="true"></i> Mes Personnages</a></li>
         <li><a href="<?php
                     if(isset($_SESSION['id']) AND $userinfo['id'] == $_SESSION['id']) 
                     {
                           echo 'compte.php?id=' .$_SESSION['id']. '';
                        }
                        else
                        {
                           header("Location: login.php");
                        }
                        ?>"><i class="fa fa-user-circle" aria-hidden="true"></i> Mon compte</a></li>
         <li class="parent ">
         </li>
         <li role="presentation" class="divider"></li>
         <li><a href="https://www.nv-rp.fr/"><i class="fa fa-wechat" aria-hidden="true"></i> Forum</a></li>
         <li><a href="logout.php"><i class="fa fa-unlock-alt" aria-hidden="true"></i> Deconnexion</a></li>
      </ul>
      <div class="attribution"> Copyright 2017 ©
 <a href="https://www.nv-rp.fr">ARZUR Loïk ('Dunvii').</a><br/><a href="http://www.medialoot.com/" style="color: #333;">Design de base par Medialoot</a></div>
   </div><!--/.sidebar-->
        
    <div class="col-sm-9 col-sm-offset-3 col-lg-10 col-lg-offset-2 main">            
        <div class="row">
            <ol class="breadcrumb">
                <li><a href="#"><svg class="glyph stroked home"><use xlink:href="#stroked-home"></use></svg></a></li>
                <li class="active">Acceuil</li>
            </ol>
        </div><!--/.row-->
        <div class="col-md-4">
      
        <?php
        $personnage = $bdd->query('SELECT * FROM characters WHERE account= "'.$_SESSION['id'].'" LIMIT 3');
        
        while($donnees = $personnage->fetch())
        {
      ?>
      <?php
      if(isset($_POST['supprimer'])) 
      {
      $suppr_id = ($donnees['id']);
      $suppr = $bdd->prepare('DELETE FROM characters WHERE id = ?');
      $suppr->execute(array($suppr_id));
      header("Location: personnages.php?id=".$_SESSION['id']."");
         }
      ?>
              <div class="panel panel-primary">
              <div class="panel-heading"><?php echo $donnees['charactername'].' ('.$donnees['age'].' ans)' ;?></div>
              <div class="panel-body">
              <p class="p_skin"><img src="img/perso/<?php echo $donnees['skin'];   ?>.png"/></p><br/>
              <p>Argent en Banque : <?php echo $donnees['bankmoney'];   ?> $</p><br/>
              <p>Argent en poche : <?php echo $donnees['money'];   ?> $</p><br/>
              <p>Numéro de Téléphone : <?php echo $donnees['cellnumber'];   ?> </p><br/>
              <p>Derniére Position : <?php echo $donnees['lastarea'];?></p><br/>
              <p><?php if($donnees['car_license'] == 1) {echo 'Permis VL : Obtenue';} else { echo 'Permis VL : Non Obtenue'; }?> </p>
              <p><?php if($donnees['gun_license'] == 1) {echo 'Permis D\'armes : Obtenue';} else { echo 'Permis D\'armes : Non Obtenue'; }?> </p>
              <p>Date de Création : <?php setlocale(LC_ALL, 'frc'); echo strftime("%A %d %B à %H:%M", strtotime($donnees['creationdate'])); ?></p>
              <p>Derniére connexion : <?php setlocale(LC_ALL, 'frc'); echo strftime("%A %d %B à %H:%M", strtotime($donnees['lastlogin'])); ?></p>
              <p>ID :<?php echo $donnees['id'] ?></p>
              <p><form method="POST" action=""><center><input type="submit" name="supprimer" class="btn btn-primary" value="SUPPRIMER" /></center></form></p>
              <p><center><font color="red">/*\ATTENTION TOUTE ACTION DE SUPPRESION EST IRREVERSIBLE !!!/*\<br />Veuillez vous deconnecter du jeu et vous connecter sur le panel pour supprimer un personnage</font></center></p>
            
              </div>
            </div>
            
            <?php
        }
        $personnage->closeCursor();
            
            ?>
                    </div>
                </div>
            </div>
                                
    <script src="js/jquery-1.11.1.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script src="js/chart.min.js"></script>
    <script src="js/chart-data.js"></script>
    <script src="js/easypiechart.js"></script>
    <script src="js/easypiechart-data.js"></script>
    <script src="js/bootstrap-datepicker.js"></script>
    <script>
        $('#calendar').datepicker({
        });

        !function ($) {
            $(document).on("click","ul.nav li.parent > a > span.icon", function(){          
                $(this).find('em:first').toggleClass("glyphicon-minus");      
            }); 
            $(".sidebar span.icon").find('em:first').addClass("glyphicon-plus");
        }(window.jQuery);

        $(window).on('resize', function () {
          if ($(window).width() > 768) $('#sidebar-collapse').collapse('show')
        })
        $(window).on('resize', function () {
          if ($(window).width() <= 767) $('#sidebar-collapse').collapse('hide')
        })
    </script>    
</body>

</html>


Merci d'avance.

Cordialement,
Dunvii
Publicité

Dunvii
Membre Premium

Messages: 4

Bonjour,

J'ai finalement réussi à corriger mon script.
Je poste le correctif pour les personnes intéresser.
J'ai fond rajouter un bouton imaginaire qui contient l'ID du personnage en
question que j'ai cacher avec une balise de type=hidden dans le form
puis récupérer le name dans la requête mysql.
 
PHP :


$bdd = new PDO('mysql:host=127.0.0.1;dbname=xxxx', 'xxxx', 'xxxx');
<?php
      if(isset($_POST['supprimer'])) 
      {
      $suppr_id = ($_POST['supprimer2']);
      $suppr = $bdd->prepare('DELETE FROM characters WHERE id = ?');
      $suppr->execute(array($suppr_id));
      header("Location: personnages.php?id=".$_SESSION['id']."");
         }
      ?>
HTML :

<form method="POST" action=""><center><input type="submit" name="supprimer" class="btn btn-primary fontall" value="SUPPRIMER" /><input type="hidden" name="supprimer2" class="btn btn-primary" value="<?php echo "".$donnees['id']."" ?>" /></center></form>

Beignet

Messages: 526

Mais tu sais que si un petit malin fait inspecter l'élément et change l'id, ca peut niquer toute ta bdd
Ex il trouve l'id d'un personnage d'un autre, bah il le met dans son input hidden et pouf plus de perso pour l'autre x)
Ce quil faut faire c'est mettre $donnees['id'] dans ta req php
De plus, ta pas besoin de mettre "". et ."" autour de ta var, un simple
<?= $donnees['id'] ?>
suffira
Pour finir, quand tu résous un pb, clique sur "Marquer comme résolu"
;)

Dunvii
Membre Premium

Messages: 4

Au cas-ou tu ne l'aurais pas vu j'ai fait une boucle pour afficher les personnages, et quand je mettais le $donnees['id] dans ma requete sa me supprimais tout les personnages car il recupérais les id de tous les personnages associés au compte.
Ensuite oui je sais pour ma variable.


Veuillez vous connecter ou créer un compte pour poster une réponse