Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème lier a l’exécution d'une fonction php

Sujet résolu
    30 juin 2020 à 14:58:49

    function btn_delete($id, $bdd_table_name)
    {
       if(isset($id) AND !empty($id)){
        $bdd = new PDO('mysql:host=localhost;dbname=tog;charset=utf8', 'root', '');
        $suprime= (int) $id;
        $req= $bdd->prepare('DELETE FROM`' .$bdd_table_name. '` WHERE id=?');
        $req->execute(array($id));
        } 
    }
    
    //bouttons delete
    
    btn_delete($_GET['delete_user'], 'users');
    btn_delete($_GET['delete_actu'], 'actu');
    btn_delete($_GET['delete_pub'], 'client');
    

    Bonjour a tous j'ai un problème mais je voie pas la source, sur les occurrence de la fonction btn_delete seul celui de 'users ' fonctionne.
    j’espère avoir bien exposer le problème, merci d'avance.

    -
    Edité par Kass D Keit 30 juin 2020 à 15:10:51

    • Partager sur Facebook
    • Partager sur Twitter
      30 juin 2020 à 15:02:15

      Bonjour,

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Pour modifier votre titre, éditez le premier message de votre sujet.

      (titre originel : problème dans le code)

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        30 juin 2020 à 17:29:23

        Bonjour, 

        Tout d'abord, premier problème, il manque un espace dans ta requete : 

        $req= $bdd->prepare('DELETE FROM`' .$bdd_table_name. '` WHERE id=?');

        Car une fois traduit, cela donnerait un truc du genre : DELETE FROM`users` WHERE id = 2;

        Donc : 

        $req= $bdd->prepare('DELETE FROM `' .$bdd_table_name. '` WHERE id=?');

        Deuxièmement, je ne sais pas si c'est très "propre" d'utiliser une variable dans la requête SQL, pourquoi pas un switch case pour effectuer la bonne requête :) 

        -
        Edité par Hsuissia 30 juin 2020 à 17:29:48

        • Partager sur Facebook
        • Partager sur Twitter
        Voir une araignée c'est rien ... Le pire c'est quand tu ne la vois plus !
          30 juin 2020 à 17:32:42

          Suggestion : activer les erreurs PDO/SQL comme ça aurait dû être fait dès le départ.

          > il manque un espace dans ta requete

          Je ne pense pas qu'il soit nécessaire :

          1. il dit que la requête fonctionne pour au moins une table
          2. la ` doit permettre une tokenisation correcte de la requête (ie aucune raison que pour le lexer la ` fasse partie et continue le même token que FROM)

          > Deuxièmement, je ne sais pas si c'est très "propre" d'utiliser une variable dans la requête SQL, pourquoi pas un switch case pour effectuer la bonne requête :)

          Un switch/case ne va rien apporter si ce n'est un code plus long. Au mieux, si le nom de la table transite par le client (variable $_GET & cie), ça permettrait tout de même d'éviter une injection SQL mais on peut aussi échapper/protéger correctement le nom de la table.

          -
          Edité par julp 30 juin 2020 à 17:43:29

          • Partager sur Facebook
          • Partager sur Twitter
            2 juillet 2020 à 17:03:28

            je viens  d'activer les erreurs PDO/SQL , j'ai mis l'espace dans la requête et j'ai oublié de préciser que c'est un traitement pour la page d'administration.

            j'ai suivie tout vos conseille mais le problème est toujours là, seul la suppression dans la table user fonctionne.

            si vous avez encore d'autre proposition, ça va beaucoup m'aider.

            merci.

            <section class="container" id="articles_actu">
                    <h3>Actualités</h3>
                    <br />
                    <table class="table table-hover">
                        <thead>
                            <tr>
                                <th scope="col">#</th>
                                <th scope="col">Code_actu</th>
                                <th scope="col">Titre</th>
                                <th scope="col">Contenus</th>
                                <th scope="col">date_actu_pub</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php
                                $req2=$bdd->query('SELECT * FROM actu');
                                  while($actu=$req2->fetch()){
                                      ?>
                            <tr>
                                <th scope="row"><button type="button" class="btn btn-warning btn-sm alert_delete" id="<?= $actu['code_actu']?>"><a href="admi.php?id=1&amp;delete_actu=<?= $actu['code_actu']?>">Effacer</a></button></th>
                                <td><?= $actu['code_actu']?></td>
                                <td><?= $actu['titre']?></td>
                                <td style="text-align: justify"><?= $actu['contenus']?></td>
                                <td><?= $actu['date_actu_pub']?></td>
                            </tr>
                            <?php
                                  }
                                ?>
                        </tbody>
                    </table>
                </section>

            c'est le code HTML et c'est le même code que j'utilise pour afficher les deux autres tables.


            • Partager sur Facebook
            • Partager sur Twitter
              2 juillet 2020 à 17:24:11

              Il n'y a pas 36 explications à un DELETE qui ne fait rien :

              • soit la requête plante mais tu dis avoir activé les erreurs PDO/SQL ou alors celles de PHP ne sont pas affichées
              • soit ta clause WHERE est incorrecte/ne correspond à aucune ligne
              • Partager sur Facebook
              • Partager sur Twitter
                5 juillet 2020 à 13:22:25

                je suis encore novice dans le domaine et merci pour vos réponses.

                j'ai trouve la source du problème et c’était au niveau du'un de mes script Js.

                • Partager sur Facebook
                • Partager sur Twitter

                problème lier a l’exécution d'une fonction php

                × 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