Problème formulaire et requette

Résolu/Fermé
ZAZAVEVE - 1 févr. 2012 à 16:26
 Flog78 - 1 févr. 2012 à 16:49
Bonjour,

1) je suis hyper débutant en PHP
2) je veux récupérer à partir d'un formulaire 2 données ( prixmini et prixmaxi), les mettre dans un programme PHP, et dans ce programme, je veux comparer ces 2 valeurs au contenu d'une entrée (post_notes, INT) dans une table de ma bdd (bdd de dotclear), et j'affiche les donnée extraites du tableau (post_title) . Ma requête ne fonctionne pas. Bon, j'ai l'impression de pas être très clair ( pas très Dot clair haha). je mets le code ci-dessous. Si quelqu'un peut m'aider, ça serait super.

3) voila l'erreur:

Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[prixmini] AND post_notes <=$_POST[prixmaxi]' at line 1

4) et le code largement inspiré ( pompé sur) du Site du Zéro

<?php
try
{
    // On se connecte à MySQL
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=maBDDamoi', 'root', '', $pdo_options);
    
    // On récupère tout le contenu de la table dc_post
    $reponse = $bdd->query('SELECT * FROM dc_post WHERE post_notes >=$_POST[prixmini] AND post_notes <=$_POST[prixmaxi]');
   
    // On affiche chaque entrée une à une
    while ($donnees = $reponse->fetch())
    {
    ?>
        <p>
         <?php echo $donnees['post_title']; ?><br />
        </p>
    <?php
    }
      $reponse->closeCursor(); // Termine le traitement de la requête
}
catch(Exception $e)
{
    // En cas d'erreur précédemment, on affiche un message et on arrête tout
    die('Erreur : '.$e->getMessage());
}
?>
<p>
   
    Veuillez taper prix mini et prix maxi
</p>

<form action="#" method="post">
    <input type="text" name="prixmini" />
	<input type="text" name="prixmaxi" />

    <input type="submit" value="Valider" />

</form>

4 réponses

Complément d'info. Quand je mets des nombres en dur dans ma requête, sans passer par le formulaire, ça fonctionne.
ex:

  $reponse = $bdd->query('SELECT * FROM dc_post WHERE post_notes >=2000 AND post_notes <=12000');
0
Pour corriger l'erreur il faut écrire :
$reponse = $bdd->query('SELECT * FROM dc_post WHERE post_notes >='.$_POST["prixmini"].' AND post_notes <='.$_POST["prixmaxi"]);

voila deja 1 premiere erreur de corrigée, il y en a peut etre d'autres
EDIT : le point est avant la parenthese et le AND
EDIT : pas de guillement entourant la derniere parenthese
0
ok, je vais essayer ça, merci
0
@flog78.
Super , ça marche, juste mettre la dernière apostrophe à l'intérieur de la parenthèse.
0
oui exact pour la derniere apostrophe
0