$get action ne marche pas

Yougo120 Messages postés 24 Statut Membre -  
Yougo120 Messages postés 24 Statut Membre -
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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. Yougo120 Messages postés 24 Statut Membre
       
      Merci mais ça ne marche toujours pas
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
    3. Yougo120 Messages postés 24 Statut Membre
       
      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
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
    5. Yougo120 Messages postés 24 Statut Membre
       
      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