$get action ne marche pas

Fermé
Yougo120 Messages postés 21 Date d'inscription dimanche 26 août 2018 Statut Membre Dernière intervention 16 décembre 2018 - 9 sept. 2018 à 17:06
Yougo120 Messages postés 21 Date d'inscription dimanche 26 août 2018 Statut Membre Dernière intervention 16 décembre 2018 - 12 sept. 2018 à 19:50
Bonjour,

Je veux avoir la possibilité de supprimer un admin/ modo avec le bouton exclure mais lorsque j'appuis sur exclure, il y a cet url: http://localhost:8888/blog/admin/index.php?action=delete_admin&id=9 et rien ne se passe.
le code:

<h4>Admin / Modo à exclure</h4>
<hr/>
<!DOCTYPE html>
<html>
<head>
    <link href="/blog/admin/pages/bootstrap.css" type="text/css" rel="stylesheet"/>
</head>
<body>

</body>
</html>
<?php
try{

  $db = new PDO('mysql:host=localhost;dbname=blog', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}
try{
$select = $db->prepare("SELECT * FROM admins");
$select->execute();

}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}

while($s=$select->fetch(PDO::FETCH_OBJ)){

    ?><div align="right"><div class="post"><br/>
<h2><?php  echo $s->name; ?></h2>
    <a href="?action=delete_admin&id=<?php echo $s->id; ?>">Exclure</a><br/><br/>
    <?php ?></div></div><?php

}if(isset($_GET['action'])) {

if($_GET['action']=='delete_admin'){
    
   try{

  $db = new PDO('mysql:host=localhost;dbname=blog', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e)
{
    echo 'Problème: ' . $e->getMessage();
}
    $id=$_GET['id'];
    $select = $db->prepare("DELETE FROM admins WHERE id=$id");
    $select->execute();
    ?>
<?php
}
}
?>

1 réponse

jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 4 660
9 sept. 2018 à 17:55
Bonjour,

Je t'invite à lire et à appliquer le contenu de ces liens
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs#detecter-les-erreurs-dans-les-requetes

et :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Voici ton code "amélioré"

<?php
//---------------------------------------//
//affichage des erreurs PHP
//---------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//---------------------------------------//
//connexion à la bdd
//---------------------------------------//
try{
  $db = new PDO('mysql:host=localhost;dbname=blog', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e){
  echo 'Problème: ' . $e->getMessage();
}

//liste des admins
try{
  $select = $db->prepare("SELECT * FROM admins");
  $select->execute();
}catch(Exception $e){
  echo 'Problème: ' . $e->getMessage();
}


//récupération PROPRE des variables AVANT de les utiliser
$action = !empty($_GET['action']) ? trim($_GET['action'] ) : NULL;
$id = !empty($_GET['id']) ? (int)$_GET['id'] : NULL ;

if($action){
  
  switch($action){
    case 'delete_admin':
      if($id ){
        $datas = array(':id'=>$id);
        try{
         $prep = $db->prepare("DELETE FROM admins WHERE id= :id");
         $res = $prep->execute($datas);
         
        }catch(Exception $e){
          echo 'Problème: ' . $e->getMessage();
        }
      }else{
        $err = "Aucun ID à supprimer !";
      }
      break;
    default:
      // si action ne correspond à aucun cas...
      $err = "Action $action inconnue !";
    break;
  }
  
} 

?>

<!DOCTYPE html>
<html>
  <head>
    <link href="/blog/admin/pages/bootstrap.css" type="text/css" rel="stylesheet"/>
  </head>
  <body>
    <h4>Admin / Modo à exclure</h4>
    <hr/>
    <?php
      if(!empty($err)){
        echo '<div class="error">'.$err.'</div>';
      }
      while($s=$select->fetch(PDO::FETCH_OBJ)){
        echo '<div align="right">
               <div class="post"><br/>
                <h2>'. $s->name .'</h2>
                <a href="?action=delete_admin&id='.$s->id.'">Exclure</a>
                <br/><br/>
               </div>
              </div>';
      }
    ?> 
  </body>
</html>


0
Yougo120 Messages postés 21 Date d'inscription dimanche 26 août 2018 Statut Membre Dernière intervention 16 décembre 2018
9 sept. 2018 à 18:32
Merci mais ça ne marche toujours pas
0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 4 660
9 sept. 2018 à 19:02
Et tu n'as rien qui s'affiche ???
Tu as quoi à l'écran quand tu cliques sur ton lien ?
Quelle url apparait dans ton navigateur ?
0
Yougo120 Messages postés 21 Date d'inscription dimanche 26 août 2018 Statut Membre Dernière intervention 16 décembre 2018
9 sept. 2018 à 19:06
j'ai la page index de l'admin c'est a dire le dashboard qui s'affiche avec cet url:
http://localhost:8888/blog/admin/index.php?action=delete_admin&id=9
0
jordane45 Messages postés 38169 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 mai 2024 4 660
10 sept. 2018 à 08:54
Tu ne peux pas avoir que ça qui s'affiche....
Essaye avec ce code et montre nous exactement ce que ça t'affiche
<?php
//---------------------------------------//
//affichage des erreurs PHP
//---------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//---------------------------------------//
//connexion à la bdd
//---------------------------------------//
try{
  $db = new PDO('mysql:host=localhost;dbname=blog; charset=utf8', 'root','root');
  $db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); // les noms de champs seront en caractères minuscules
  $db->setAttribute(PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION); // les erreurs lanceront des exceptions
  global $db;
}catch(Exception $e){
  echo 'Problème: ' . $e->getMessage();
}


//le temps des tests :
echo "Variables GET<br><pre>";
print_r($_GET);
echo "</pre>";

//-----------------------------------------------//
//récupération PROPRE des variables AVANT de les utiliser
//-----------------------------------------------//
$action = !empty($_GET['action']) ? trim($_GET['action'] ) : NULL;
$id = !empty($_GET['id']) ? (int)$_GET['id'] : NULL ;

//-----------------------------------------------//
// TRAITEMENTS
//-----------------------------------------------//
if($action){
  
  switch($action){
    case 'delete_admin':
      if($id ){
        $datas = array(':id'=>$id);
        try{
         $prep = $db->prepare("DELETE FROM admins WHERE id= :id");
         $res = $prep->execute($datas);
         
        }catch(Exception $e){
          echo 'Problème: ' . $e->getMessage();
        }
      }else{
        $err = "Aucun ID à supprimer !";
      }
      break;
    default:
      // si action ne correspond à aucun cas...
      $err = "Action $action inconnue !";
    break;
  }
  
} 


//-----------------------------------------------//
//liste des admins
//-----------------------------------------------//
try{
  $select = $db->prepare("SELECT * FROM admins");
  $select->execute();
}catch(Exception $e){
  echo 'Problème: ' . $e->getMessage();
}

?>

<!DOCTYPE html>
<html>
  <head>
    <link href="/blog/admin/pages/bootstrap.css" type="text/css" rel="stylesheet"/>
  </head>
  <body>
    <h4>Admin / Modo à exclure</h4>
    <hr/>
    <?php
      if(!empty($err)){
        echo '<div class="error">'.$err.'</div>';
      }
      while($s=$select->fetch(PDO::FETCH_OBJ)){
        echo '<div align="right">
               <div class="post"><br/>
                <h2>'. $s->name .'</h2>
                <a href="?action=delete_admin&id='.$s->id.'">Exclure</a>
                <br/><br/>
               </div>
              </div>';
      }
    ?> 
  </body>
</html>
0
Yougo120 Messages postés 21 Date d'inscription dimanche 26 août 2018 Statut Membre Dernière intervention 16 décembre 2018
11 sept. 2018 à 17:17
J'ai cet url:http://localhost:8888/blog/admin/index.php?action=delete_admin&id=9 avec ma page index qui s'affiche et ça reste comme ça
0