Partage
  • Partager sur Facebook
  • Partager sur Twitter

Delete et variable

Sujet résolu
    23 septembre 2018 à 14:28:20

    Bonjour à tous. 

    J'ai un soucis avec la concaténation dans la requête DELETE je pense. Je voulais avoir votre avis sur mon code.

    Grace à un form, je recupere la valeur rentrée par l'utilisateur et je supprime ce qu'il souhaite dans la table.

    <h2>Supprimer une catégorie</h2>
       
       <form methode="post">
          
    <span class="message-status"><?php if(isset($status_categorie_delete)) echo "$status_categorie_delete" ?></span>
          
           <input type="text" name="cat_delete" placeholder="Catégorie à supprimer">
           <input type="submit" class="delete" value="">
       </form>

    Et je le supprime ici : 

    if(!empty($_POST)){
        extract($_POST);
        $valid = true;   
        if(empty($cat_delete)){
            $valid=false;
            $erreur_categorie = "Vous n'avez pas remplit la case";
        }
        
        if($valid){
        
        $req = $bdd->prepare("DELETE FROM categories WHERE nom_cat=$cat_delete");
        $req->execute(array($_POST['cat_delete']));
     
            $status_categorie_delete = "<span style='background-color:green; padding: 5px 10px; border-radius: 3px;'>La catégorie &nbsp;<strong>$cat_delete</strong>&nbsp; à bien été supprimer de la liste</span><br>";
    
        }
      
    }
    
    else {
             $status_categorie_delete = "<span style='background-color:red; padding: 5px 10px; border-radius: 3px;'>Oupsss ! La catégorie n'à pas été supprimer de la liste</span><br>";
         }


    J'ai fait la même chose avec INSERT qui fonctionne mais avec delete ça ne passe pas, j'ai tester plusieurs forme de concaténation ou de ponctuation mais rien n'y fait. Merci

    -
    Edité par Community Technologie 23 septembre 2018 à 14:45:26

    • Partager sur Facebook
    • Partager sur Twitter
      23 septembre 2018 à 16:54:07

      Bonjour,

      Ce n'est pas comme ça qu'on utilise une requête préparée. Tu peux faire par exemple comme ceci :

          $req = $bdd->prepare("DELETE FROM categories WHERE nom_cat=?");
          $req->execute(array($_POST['cat_delete']));


      Tu peux oublier "extract" également, d'ailleurs tu ne t'en sers pas vraiment.

      -
      Edité par philodick 23 septembre 2018 à 16:54:16

      • Partager sur Facebook
      • Partager sur Twitter
        23 septembre 2018 à 18:09:32

        Merci Philodick, mais apparement ce n'est pas ça quand même. Le code n'as pas d'erreur, mais il ne fait rien
        • Partager sur Facebook
        • Partager sur Twitter
          23 septembre 2018 à 20:34:05

          Il ne donne pas d'erreur parce que tu ne les as pas activées. A moins que nom_cat soit un nombre.
          • Partager sur Facebook
          • Partager sur Twitter
            24 septembre 2018 à 7:28:00

            J'ai déjà tout ça d'activé ^^

            <?php
            
            error_reporting(E_ALL);
            // Afficher les erreurs à l'écran
            ini_set('display_errors', 1);
            // Enregistrer les erreurs dans un fichier de log
            ini_set('log_errors', 1);
            // Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
            ini_set('error_log', dirname(__file__) . '/log_error_php.txt');
            
            try
            {
            	$db_config = array();
            	$db_config['SGBD']	= 'mysql';
            	$db_config['HOST']	= 'localhost';
            	$db_config['DB_NAME']	= 'VDCC';
            	$db_config['USER']	= 'root';
            	$db_config['PASSWORD']	= 'root';
            	$db_config['OPTIONS']	= array(
            		// Activation des exceptions PDO :
            		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            		// Change le fetch mode par défaut sur FETCH_ASSOC ( fetch() retournera un tableau associatif ) :
            		PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
            	);
            	
            	$bdd = new PDO($db_config['SGBD'] .':host='. $db_config['HOST'] .';dbname='. $db_config['DB_NAME'],
            	$db_config['USER'],
            	$db_config['PASSWORD'],
            	$db_config['OPTIONS']);
            	unset($db_config);
            }
            catch(Exception $e)
            {
            	trigger_error($e->getMessage(), E_USER_ERROR);
            }     
            
            ?>

            -
            Edité par Community Technologie 24 septembre 2018 à 7:29:24

            • Partager sur Facebook
            • Partager sur Twitter
              24 septembre 2018 à 9:29:36

              Si tu n'as pas d'erreur c'est que simplement tu n'as pas de nom_cat correspondant. Mais tu n'as pas répondu, est-ce un nombre ?
              • Partager sur Facebook
              • Partager sur Twitter
                24 septembre 2018 à 14:13:28

                Non ce n’est pas un nombre, c’est une chaine de caractère du genre : Argent Course Rapidité. . . Et si, elle est bien presente dans phpMyAdmin
                • Partager sur Facebook
                • Partager sur Twitter
                  24 septembre 2018 à 16:08:55

                  Peux-tu nous donner un exemple qui ne fonctionne pas, avec les valeurs en base de données, et celle saisie dans le formulaire ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    24 septembre 2018 à 16:46:47

                    Reader a écrit:

                    Non ce n’est pas un nombre, c’est une chaine de caractère du genre : Argent Course Rapidité. . . Et si, elle est bien presente dans phpMyAdmin


                    Donc j'en reviens à ce que je disais au départ : la syntaxe de ta requête n'est pas bonne. As-tu fais la correction demandée sur la préparation de la requête erronée ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 septembre 2018 à 18:25:28

                      Hello, oui j'ai bien fait la correction (logiquement)

                      Voici ma table sur PMA

                      Quand je saisie la requête sql dans PMA : DELETE FROM `categories` WHERE nom_cat='test' elle-ci marche très bien

                      mais en faisant ceci, donc mettre test dans mon formulaire et l'envoyer, ça bloque : 

                      <h2>Supprimer une catégorie</h2>
                         
                      <form methode="post">    
                      <input type="text" name="cat_delete" placeholder="Catégorie à supprimer">
                      <input type="submit" class="delete" value="">
                      </form>



                      $cat_d = $_POST['cat_delete'];
                          
                          $req = $bdd->prepare("DELETE FROM categories WHERE nom_cat=?");
                          $req->execute(array($_POST['cat_delete']));



                      -
                      Edité par Community Technologie 24 septembre 2018 à 18:26:28

                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 septembre 2018 à 19:13:06

                        C'est "method" pas "methode" dans le form. Tu dois vérifier ta variable avant de l'utiliser, normalement tu devrais avoir eu une notice

                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 septembre 2018 à 19:55:42

                          :euh: abrutis que je suis. . . Merci les gars et désoler pour cette Erreur, ma signature me vas à merveille du coup xD
                          • Partager sur Facebook
                          • Partager sur Twitter

                          Delete et variable

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown