Partage
  • Partager sur Facebook
  • Partager sur Twitter

Sélectionner la bonne catégorie dans un POST

Sujet résolu
    1 octobre 2021 à 9:02:10


    .

    -
    Edité par PaulLebrop 27 octobre 2021 à 23:03:57

    • Partager sur Facebook
    • Partager sur Twitter
      1 octobre 2021 à 9:49:22

      Hello, 

      Ta requête n'est jamais exécutée, il faut que tu la prépare puis que tu l'exécute en utilisant prepare/execute (comme tu l'a fait avec ton INSERT dans ta table `topics`). 

      Après tu n'auras plus qu'a utiliser fetchAll (https://www.php.net/manual/fr/pdostatement.fetchall.php) pour récupérer toutes des données que te retourne ta requête.

      Si tu utilises MySQL/PDO, ça devrait ressembler à quelque chose comme ça : 

      //Les données du topic
      $sql = $bdd->prepare('SELECT category_name FROM categories VALUES(?)');
      
      // exécution requête préparée
      $sql->execute(array($tavaleur));
      
      // récupération des datas
      $topics_category = $sql->fetchAll();
      
      
      

      A savoir que tu n'est pas toujours obligé de préparer tes requêtes, tu peux aussi directement les exécuter via `query`(https://www.php.net/manual/fr/pdo.query.php)  UNIQUEMENT si tu n'a pas de données qui proviennent de l'utilisateur qui sont injectées dans ta requête. 

      En espérant t'avoir aider.

      Bon courage

      • Partager sur Facebook
      • Partager sur Twitter
        1 octobre 2021 à 11:02:44

        .

        -
        Edité par PaulLebrop 27 octobre 2021 à 23:03:24

        • Partager sur Facebook
        • Partager sur Twitter
          1 octobre 2021 à 12:19:29

          PaulLebrop a écrit:

          Pour récuperer les données j'utilise donc :

          $topic_category = $bdd->query('SELECT category_name FROM categories VALUES(?)');

          ma fonction est executée dans le :

          $insertTopicOnWebsite->execute(
                      array(
                          $topic_category,)

          Tu mélanges un peu tout (j'ai peut être pas été assez clair aussi ahah), `execute` est uniquement à utiliser si tu as préparé ta requête au préalable.

          Si tu veux faire une requête non-préparée (ce que je ne recommande pas dans ton cas puisque tu injectes une valeur qui provient directement de ton formulaire), il faut que tu utilises query sans prepare fait au préalable et sans execute par la suite.

          Par ailleurs, il est impossible de placer dans une requête non-préparée des marqueurs interrogatifs (ce que tu fais ici avec "?") ou nominatif.

          En général, on utilise query pour des requêtes simples et qui ne nécessite pas de marqueur pour prévenir les attaques par injections SQL (https://www.php.net/manual/fr/security.database.sql-injection.php), exemple de cas où tu peux utiliser query :

          $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
          
          $conn->query($sql);

          Exemple de mauvaise utilisation de query :

          $login = $_POST['login'];
          $password = $_POST['password'];
          $conn->query("SELECT * from users WHERE login = " . $login . " AND password=" . $password ); // vulnérable au injections SQL

          Pour revenir à ta requête, je te renvoi au code que j'ai mis dans ma précédente réponse qui devrait faire l'affaire ;) 

          Concernant fetchAll, si ta requête est ok la fonction va te retourner un tableau assiociatif, t'auras plus qu'a faire un foreach sur ton <select> dans ton html pour ajouter les <option> que tu souhaites avoir. Un exemple sera peut être plus parlant :

          $sth = $dbh->prepare("SELECT nom, couleur FROM fruit");
          $sth->execute();
          
          /* Récupération de toutes les lignes d'un jeu de résultats */
          $results = $sth->fetchAll();
          
          // affichage du résultat pour débugger
          var_dump($results);
          
          Array
          (
              [0] => Array
                  (
                      [nom] => apple
                      [0] => apple
                      [couleur] => red
                      [1] => red
                  )
          
              [1] => Array
                  (
                      [nom] => pear
                      [0] => pear
                      [couleur] => green
                      [1] => green
                  )
          
              [2] => Array
                  (
                      [nom] => watermelon
                      [0] => watermelon
                      [couleur] => pink
                      [1] => pink
                  )
          
          )
          
          // puis ensuite tu peux boucler sur ton tableau comme ceci
          foreach($results as $result) {
           var_dump($result['nom']) // pour accéder à la colonne "nom" / affichera "apple" puis "pear" puis "watermelon"
          } 

          J'espère que c'est plus clair, hésite pas à aller (re)checker les cours sur le MYSQL/PHP etc qu'il y a sur ce site qui sont très bien fait et qui peuvent aussi t'aider à te débloquer  

          -
          Edité par hippomssc 1 octobre 2021 à 12:26:31

          • Partager sur Facebook
          • Partager sur Twitter
            1 octobre 2021 à 12:24:29

            Oh vraiment désolé j'ai été trop long à éditer T_T

            J'avais trouvé comment utiliser la fonction que tu m'avais donné lol j'ai bien réussi à retrouver les catégories maintenant

            • Partager sur Facebook
            • Partager sur Twitter
              1 octobre 2021 à 12:33:34

              Y'a pas de galère ahah, impec' alors ;)
              • Partager sur Facebook
              • Partager sur Twitter
                1 octobre 2021 à 12:56:24

                PaulLebrop a écrit:

                J'avais trouvé comment utiliser la fonction que tu m'avais donné lol j'ai bien réussi à retrouver les catégories maintenant

                Bonjour,

                Sujet résolu

                Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)

                • Partager sur Facebook
                • Partager sur Twitter
                  2 octobre 2021 à 11:18:57

                  .

                  -
                  Edité par PaulLebrop 27 octobre 2021 à 23:03:39

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Sélectionner la bonne catégorie dans un POST

                  × 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