Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2890 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  impossible de rentrer dans le while

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

impossible de rentrer dans le while

n°2303854
Ainoul
Posté le 26-07-2017 à 16:20:26  profilanswer
 

Bonjour a tous !  
 Je debute en programmation et en realisant un petit site me voila coince parce que je n'arrive pas a rentrer dans la boucle while !  
 
voici le code :  

Code :
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title>Face</title>
  5. <meta charset="UTF-8" />
  6. </head>
  7. <body>
  8.    
  9.     <?php include("header.php" ); ?>
  10.     <?php include("menu.php" ); ?>
  11.     <div id="body">
  12.            
  13.         <p>
  14.            
  15.             <?php try
  16. {
  17. $bdd = new PDO('mysql:host=localhost;dbname=website;charset=utf8', 'root', '');
  18.     $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  19. }
  20. catch (Exception $e)
  21. {
  22.         die('Erreur : ' . $e->getMessage());
  23. }
  24. // On récupère tout le contenu de la table
  25. $reponse = $bdd->query('SELECT * FROM makeup where name=".$_POST[choix]."');
  26. // On affiche chaque entrée une à une
  27. while ($donnees = $reponse->fetch())
  28. {
  29.    
  30. ?>
  31.     <p>
  32.         <strong>Brand</strong> : <?php echo $donnees['brand']; ?><br />
  33.         <strong>Name</strong> : <?php echo $donnees['name']; ?><br />
  34.         <strong>Description</strong> : <?php echo $donnees['description']; ?><br />
  35.         <strong>Price</strong> : <?php echo $donnees['price']; ?><br />
  36.         <strong>Link</strong> : <a href="<?php echo $donnees['link']; ?>">link</a><br />
  37.         <div class="img_face">
  38.             <strong>img1<br /></strong> : <img src="img/<?php echo $donnees['image1']; ?>" style="width: 50%; margin-left: 25%;"/><br />
  39.             <strong>img2<br /></strong> : <img src="img/<?php echo $donnees['image2']; ?>"style="width: 50%; margin-left: 25%;"/><br />
  40.             <strong>img3<br /></strong> : <img src="img/<?php echo $donnees['image3']; ?>"style="width: 50%; margin-left: 25%;"/><br />
  41.         </div>
  42.    </p>
  43. <?php
  44. }
  45. $reponse->closeCursor(); // Termine le traitement de la requête
  46. ?>
  47.         </p>
  48.     </div>
  49.    
  50.     <?php include("footer.php" ); ?>
  51.    
  52.     </body>
  53. </html>


 
Merci pour votre retour

mood
Publicité
Posté le 26-07-2017 à 16:20:26  profilanswer
 

n°2303856
pluj
Posté le 26-07-2017 à 16:47:19  profilanswer
 

Ta requête est fausse : tu cherches littéralement un name qui a pour valeur .$_POST[choix].
 
Pour rappel, les variables ne sont pas substituées par leur valeur quand la chaîne est délimitée par des quotes simples ('). Il en faut des doubles (" ) pour ça. De plus, ou tu fais une concaténation (via l'opérateur .) ou tu comptes sur une interpolation de la variable mais pas les deux sinon tes points font partie de la chaîne, ça n'en fait plus des concaténations.
 
Il aurait fallu écrire (concaténation) :

Code :
  1. $reponse = $bdd->query('SELECT * FROM makeup where name="' . $_POST['choix'] . '"');


ou (toujours une concaténation mais les types de quotes sont inversés)

Code :
  1. $reponse = $bdd->query("SELECT * FROM makeup where name='" . $_POST['choix'] . "'" );


ou (interpolation de la variable)

Code :
  1. $reponse = $bdd->query("SELECT * FROM makeup where name='{$_POST['choix']}'" );


 
Mais n'en fais rien,  $_POST['choix'] serait un vecteur d'injection SQL.
 
Il faut, au final, pour du non-préparé échapper avec PDO::quote (noter qu'elle ajoute les quotes pour le SQL autour de la valeur) comme ceci :

Code :
  1. $reponse = $bdd->query('SELECT * FROM makeup where name=' . $bdd->quote($_POST['choix']));


Ou bien meilleure option, préparer la requête :

Code :
  1. $reponse = $bdd->prepare('SELECT * FROM makeup where name=?');
  2. $reponse->execute([$_POST['choix']]);


 
PS : il vaut mieux éviter d'utiliser les doubles quotes pour délimiter une chaîne dans une requête - niveau SQL donc - ce n'est pas standard et, de toute façon, même si MySQL l'accepte, ça dépend de son sql_mode où elles peuvent prendre une autre signification (celle des ` pour protéger des identificateurs)


Message édité par pluj le 26-07-2017 à 16:57:41

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  impossible de rentrer dans le while

 

Sujets relatifs
Connexion à la base impossible sur 1 PCsuppression de fichier impossible
[pgsql] ☑ impossible de se connecter avec nouvel utilisateurboucle while avec affectation en python
Prestashop installation impossible ![Bash] While read line & awk
[RSOLU] [bash] while avec if/elif/fi qui tourne en boucle[Résolu] [SQLite] Importation impossible fichier .dump > .db
problème whileCopie parfois impossible à travers le réseau
Plus de sujets relatifs à : impossible de rentrer dans le while


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR