par
Patriboom » 25 nov. 2008, 21:34
Voici ce que je te propose ... nous allons construire une requête étape par étape, sans perdre de vue l'objectif final. Il y a, dans de telles requêtes, de nombreux pièges à orthographe, Nous les éliminerons ainsi un à un. À chaque étape, tu valides la chose dans PhpMyAdmin via le taquet "SQL". Tu notes les messages d'erreur en chemin et corriges jusqu'à ce que l'étape donne des résultats valides.
pour faire le test dans PhpMyAdmin, tu ajoutes à ton programme PHP une ligne qui te retournera la requête précise qui sera traitée par MySQL
Dans le cas présent:
echo $req.'</br>';
Pour commencer:
$req="SELECT a.* ";
$req.="FROM article AS a ";
echo $req.'</br>';
Ensuite ...
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
echo $req.'</br>';
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="LEFT JOIN mes_creations AS c ON c.id = a.id_vendeur ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
echo $req.'</br>';
...
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="LEFT JOIN mes_creations AS c ON c.id = a.id_vendeur ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
$req.="AND a.publie = 1 ";
$req.="AND a.stock > 0 ";
echo $req.'</br>';
...
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="LEFT JOIN mes_creations AS c ON c.id = a.id_vendeur ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
$req.="AND a.publie = 1 ";
$req.="AND a.stock > 0 ";
$req.="AND c.publie > 0 ";
echo $req.'</br>';
...
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="LEFT JOIN mes_creations AS c ON c.id = a.id_vendeur ";
$req.="LEFT JOIN marque AS m ON m.id = a.id_vendeur ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
$req.="AND a.publie = 1 ";
$req.="AND a.stock > 0 ";
$req.="AND c.publie > 0 ";
$req.="AND m.publie > 0 ";
echo $req.'</br>';
Malgré tout cela, je garde soupçon de la valeur que tu obtiens de la variable $_SESSION['mot_recherche']
Si tu obtiens sa valeur d'un formulaire POST ou GET, ce n'est pas $_SESSION, mais bien POST ou GET, ainsi: $_POST['mot_recherche'] ou $_GET['mot_recherche']
Tiens nous au courant des modifications apportées à ta requête et des résultats obtenus à chaque étape.
Voici ce que je te propose ... nous allons construire une requête étape par étape, sans perdre de vue l'objectif final. Il y a, dans de telles requêtes, de nombreux pièges à orthographe, Nous les éliminerons ainsi un à un. À chaque étape, tu valides la chose dans PhpMyAdmin via le taquet "SQL". Tu notes les messages d'erreur en chemin et corriges jusqu'à ce que l'étape donne des résultats valides.
pour faire le test dans PhpMyAdmin, tu ajoutes à ton programme PHP une ligne qui te retournera la requête précise qui sera traitée par MySQL
Dans le cas présent:
[php]echo $req.'</br>';[/php]
Pour commencer:
[php]$req="SELECT a.* ";
$req.="FROM article AS a ";
echo $req.'</br>';
[/php]
Ensuite ...
[php]$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
echo $req.'</br>';
[/php]
[php]
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="LEFT JOIN mes_creations AS c ON c.id = a.id_vendeur ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
echo $req.'</br>';
[/php]
...
[php]
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="LEFT JOIN mes_creations AS c ON c.id = a.id_vendeur ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
$req.="AND a.publie = 1 ";
$req.="AND a.stock > 0 ";
echo $req.'</br>';
[/php]
...
[php]
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="LEFT JOIN mes_creations AS c ON c.id = a.id_vendeur ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
$req.="AND a.publie = 1 ";
$req.="AND a.stock > 0 ";
$req.="AND c.publie > 0 ";
echo $req.'</br>';
[/php]
...
[php]
$req="SELECT a.* ";
$req.="FROM article AS a ";
$req.="LEFT JOIN mes_creations AS c ON c.id = a.id_vendeur ";
$req.="LEFT JOIN marque AS m ON m.id = a.id_vendeur ";
$req.="WHERE a.nom LIKE '%".$_SESSION['mot_recherche']."%' ";
$req.="AND a.publie = 1 ";
$req.="AND a.stock > 0 ";
$req.="AND c.publie > 0 ";
$req.="AND m.publie > 0 ";
echo $req.'</br>';
[/php]
Malgré tout cela, je garde soupçon de la valeur que tu obtiens de la variable $_SESSION['mot_recherche']
Si tu obtiens sa valeur d'un formulaire POST ou GET, ce n'est pas $_SESSION, mais bien POST ou GET, ainsi: $_POST['mot_recherche'] ou $_GET['mot_recherche']
Tiens nous au courant des modifications apportées à ta requête et des résultats obtenus à chaque étape.