Problème de sélection dans un table

Ezixel
Invité n'ayant pas de compte PHPfrance

24 mars 2014, 19:44

Bonjour,
étant étudiant je dois faire un site fictif de vente en ligne. Mon problème est le suivant :
Il faut faire une page "Petit Budget" pour permettre à l'utilisateur de rentrer son budget , voici le code du formlaire :
<div id="form">
  <h2>Pour les petits budget...</h2>
  <p>Tapez ci-dessous votre budget :</p>
  <form method="POST" action="budget_art.php>
   Budget :&nbsp<input type="text" name="primax">€<br/><br/>
   <input type="submit" name="ok" value="Valider"><br/>
    </form>
Dans ce formulaire, je fais appelle à un fichier php et l'utilisateur rendre une donnée dans la variable primax,
le problème est dans le fichier php qui est le suivant :
<?php
$db=new mysqli(localhost,id,mdp,basededonnée);
$req="SELECT *
    FROM dutaf_article
    WHERE prix_art<=$_POST.['primax'].
    INNER JOIN dutaf_fournisseur
    ON dutaf_article.num_four = dutaf_fournisseur.num_four";
$tous=$db->query($req);
echo "<table border='1'>";
while ($unarticle=$tous->fetch_object()){
    echo"<tr>";
    echo"<td>";
    echo $unarticle->num_art.'<br/>';
    echo "</td>";

    echo"<td>";
    echo $unarticle->desig_art.'<br/>';
    echo "</td>";

    echo"<td>";
    echo $unarticle->desc_art.'<br/>';
    echo "</td>";

    echo"<td>";
    echo $unarticle->prix_art.'<br/>';
    echo "</td>";

    echo"<td>";
    echo $unarticle->qte_art.'<br/>';
    echo "</td>";

    echo"<td>";
    echo $unarticle->nom_four.'<br/>';
    echo "</td>";

    echo "</tr>";
}
echo "</table>";
Lorsque je tape un nombre dans le formulaire, le fichier php m'indique une erreur (Call to a member function fetch_object() on a non-object ) , si j'ai bien compris la raison de cette erreur , cela veut dire que dans ma requête il y a une variable non-définie, j'ai chercher sur le web une solution mais sans résultat, je sais juste que le problème vient de la condition WHERE et de la méthode POST, j'aurai besoin d'être éclaircis sur ce point. Merci d'avance pour vos réponses.
Modifié en dernier par moogli le 25 mars 2014, 10:57, modifié 1 fois.
Raison : bbcode php & html

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 mars 2014, 11:06

salut,

merci d'utiliser le bbcode !
le fichier php m'indique une erreur (Call to a member function fetch_object() on a non-object ) , si j'ai bien compris la raison de cette erreur , cela veut dire que dans ma requête il y a une variable non-définie,
non cela veux dire que tu essai d’accéder à une propriété de quelque chose qui n'est pas un objet, à la façon d'un objet.

en clair $tous n'est pas un objet.

Pourquoi ?

parce que ta requête sql est foireuse, et que le query retourne false.

c'est un cas à gérer dans ton code.

ensuite la requête sql est foireuse parce que tu ne sais pas faire de concaténation.
utiliser les variables directement dans les chaines de caractères ets une mauvaises idées car tu perd en lisibilité du code et au final aussi en perfo (analyse de la chaine alors que l'on peux faire autrement) ;)
tu coup utiliser des ' pour délimiter tes chaines de caractères et la concaténation pour la construire.

autre chose ta requête est sensible aux injection sql, utilise mysqli_real_escape_string pour protéger les données utilisées.

d'ailleurs vérifier qu'il s'agisse bien d'un nombre me semble plutôt indiqué (que ce passe t'il si tu met "cent cinquante" dans le champs ?

dernière chose, comme te le montre la coloration syntaxique, ton code html n'est pas valide ;)

@+
Il en faut peu pour être heureux ......

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 mars 2014, 00:15

Modération :
Le multipostage est interdit sur le forum.

Ce sujet a été verrouillé et sera supprimé sous peu.
Des réponses peuvent être apportées à cette adresse :
php-debutant/probleme-selection-dans-table-t270692.html

Merci de prendre le temps de lire les règlements.
Il en faut peu pour être heureux ......