Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insert input bdd

    20 février 2018 à 14:16:06

    Salut, 

    Dans mon form j'ai un input qui sert a enregistrer le trade link (de steam) dans ma base de données, j'ai donc fais ca :

    <!-- Php traitement trade link -->
    <?php if (isset($_POST['sub'])) {
    		$trade = $_POST['trade'];
    		if (isset($_POST['trade'])) {
    			$reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = $_SESSION[\'pseudo\']');
    			$reqInsert->execute([':link' => $trade, ]);
    			}
    		else {
    			echo 'Error saving your trade link';
    		}
    }
    ?>

    et 

     				<!-- Input pour son trade link -->
     				<form method="POST" action="">
     				<label for="tradelink">Set your trade link: <a href="https://steamcommunity.com/id/lenny74/tradeoffers/privacy#trade_offer_access_url" target="_blank">(find it here)</a> :</label><br />
     				<?php if (!empty($donnees['link'])) {
     						echo '<input type="text" name="trade" id="tradelink" value="'.htmlspecialchars($donnees['link']).'" pattern="https:\/\/steamcommunity\.com\/tradeoffer\/new\/\?partner=[0-9]{9}&token=[A-Za-z0-9]{8}" />';
     					}
     					else {
     						echo '<input type="text" name="trade" id="tradelink" pattern="https:\/\/steamcommunity\.com\/tradeoffer\/new\/\?partner=[0-9]{9}&token=[A-Za-z0-9]{8}" />';
     					}
     				}?>
     				<input type="submit" class="tradesend" name="sub" value="Change" />
     				</form>

    Le problème se situe ligne 21 :

    			$reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = $_SESSION[\'pseudo\']');

    Je n'arrive pas a faire correctement ma requête avec le insert into values where, et je suis obligé de mettre where sinon ca me créer un autre ligne dans ma base de données (alors que je veux juste mettre à jour le trade de l'utilisateur).
    Merci pour votre aide :) 



    • Partager sur Facebook
    • Partager sur Twitter

    "Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas."                                  - Thomas Edison

      20 février 2018 à 14:23:14

      Bonjour,

      Tu utilises une requête préparer c'est très bien alors continu et insère ton $_session de la même sorte car là vu que ta requête est un ' (simple quote), il n'est pas interprété.

      • Partager sur Facebook
      • Partager sur Twitter
        20 février 2018 à 15:01:39

        "sinon ca me créer un autre ligne dans ma base de données (alors que je veux juste mettre à jour le trade de l'utilisateur)"


        Dans ce cas, pourquoi utiliser INSERT INTO et pas UPDATE ? ;)

        -
        Edité par Pres' the Cobra 20 février 2018 à 15:01:47

        • Partager sur Facebook
        • Partager sur Twitter
          20 février 2018 à 16:06:11

          Aurélien.C a écrit:

          Bonjour,

          Tu utilises une requête préparer c'est très bien alors continu et insère ton $_session de la même sorte car là vu que ta requête est un ' (simple quote), il n'est pas interprété.


          En fait le session pseudo ne va pas être inséré c'est juste pour que le trade link soit inséré dans la bonne ligne de ma bdd (la ligne avec le pseudo/mail/mdp de l'utilisateur).

          Comme ca c'est bon ? :

          			$reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = $donnees[pseudo]');
          • Partager sur Facebook
          • Partager sur Twitter

          "Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas."                                  - Thomas Edison

            20 février 2018 à 16:31:12

            Non, c'est ce que je te dis. Passe ta requête avec des " au lieu de ' et tu verras que ça ira mieux
            • Partager sur Facebook
            • Partager sur Twitter
              20 février 2018 à 23:01:36

              Aurélien.C a écrit:

              Non, c'est ce que je te dis. Passe ta requête avec des " au lieu de ' et tu verras que ça ira mieux


              $reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = $_SESSION["pseudo"]'); 
              ??

              -
              Edité par tycyly 20 février 2018 à 23:02:09

              • Partager sur Facebook
              • Partager sur Twitter

              "Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas."                                  - Thomas Edison

                20 février 2018 à 23:06:31

                On va faire les choses bien

                $reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = :pseudo');
                            $reqInsert->execute([':link' => $trade, ':pseudo' => $_SESSION['pseudo']]);



                • Partager sur Facebook
                • Partager sur Twitter
                  20 février 2018 à 23:35:09

                  Aurélien.C a écrit:

                  On va faire les choses bien

                  $reqInsert = $bdd->prepare('INSERT INTO membre(link) VALUES (:link) WHERE pseudo = :pseudo');
                              $reqInsert->execute([':link' => $trade, ':pseudo' => $_SESSION['pseudo']]);



                  Ah oui ok ahah j'avais pas compris x)

                  Par contre ca me met ca ? Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE pseudo = ?' at line 1 in /storage/ssd1/730/4671730/public_html/profile.php:21 Stack trace: #0 /storage/ssd1/730/4671730/public_html/profile.php(21): PDO->prepare('INSERT INTO mem...') #1 {main} thrown in /storage/ssd1/730/4671730/public_html/profile.php on line 21


                  -
                  Edité par tycyly 20 février 2018 à 23:43:34

                  • Partager sur Facebook
                  • Partager sur Twitter

                  "Je n'ai pas échoué. J'ai juste trouvé 10 000 moyens qui ne fonctionnent pas."                                  - Thomas Edison

                    23 février 2018 à 12:24:57

                    Salut,
                    Comme t'as dis <<mise à jour >> il faudra utiliser "UPDATE" dans ce cas

                    <!-- Php traitement trade link -->
                    <?php if (isset($_POST['sub'])) {
                            $trade = $_POST['trade'];
                            if (isset($_POST['trade'])) {
                                $req = $bdd->prepare("UPDATE membre SET link = :link WHERE pseudo = :pseudo");
                                /* ATTENTION l'utilisation des <<:>> correspond à l'utilisation de paramètres nommés, donc bindParam sera nécessaire */
                     $req->bindParam(":link",$trad,PDO::PARAM_STR);
                     $req->bindParam(":pseudo",$_SESSION["pseudo"],PDO::PARAM_STR);
                    $req->execute();
                    
                    //en option, si ça a marché ou pas
                    //retourne le nombre de lignes affectées
                    //retournera 0 si rien n'a marché
                    // retournera 1 si une ligne a été insérée
                    // retournera 2 si 2 lignes insérées
                    //etc
                    $nb = $req->rowCount();
                    
                    //ne pas oublier de fermer la requête
                    $req->closeCursor();
                    
                    
                     
                    
                                }
                            else {
                                echo 'Error saving your trade link';
                            }
                    }
                    
                    


                    -
                    Edité par JohnNes 23 février 2018 à 12:26:00

                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 février 2018 à 13:05:30

                      @ Tous ceux qui liront, AVANT de venir, s'il vous plait apprenez les bases du langage SQL, faire du développement Web c'est maîtriser 5 langages:

                      • HTML
                      • CSS
                      • JavaScript
                      • PHP
                      • SQL (INSERT,UPDATE,SELECT,DELETE)

                      Si vous n'avez pas lu au moins un cours de chaque, Donc au boulot !!!

                      De plus, avant de NOUS demander pourquoi ça ne marche pas, avez-vous réfléchi à afficher votre variable / tableau ?

                      Nous pouvons vous aider, mais faite au moins le minimum syndical.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Insert input bdd

                      × 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