Mysql - PHP - SELECT .... WHERE ..... AND

Résolu
nab13 Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   -  
nab13 Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un petit pb avec se script :



$att1=$_POST["ing1"];
$att2=$_POST["ing2"];
$att3=$_POST["ing3"];
$att4=$_POST["ing4"];

echo $att1;
echo $att2;
echo $att3;
echo $att4;

$dphoto=array();
$aphoto=array();
$i=0;


mysql_connect("localhost", "root", "");
mysql_select_db("met");
$reponse = mysql_query ("SELECT Chemin FROM model WHERE Ing1 = '$att1' AND Ing2 = '$att2' AND Ing3 = '$att3' AND Ing4 = '$att4' ") OR DIE ( mysql_error()) ;

while ($dphoto = mysql_fetch_array($reponse))
{
$aphoto[$i]=$dphoto['Chemin'];
echo $dphoto['Chemin'];
echo $aphoto[$i];
$i++;
}

for ($j=0 ; $j < $i ; $j++)
{
echo "'<a href='mphoto.php?dossier=".$aphoto[$j]."&adresse=selectmodel.php'><img src='".$aphoto[$j]."cover_mini.jpg' width='100px'/></a>";
}


Les valeurs du formulaire s'affichent bien, pas d'erreur mysql, le nom des tables et des colonnes sont corrects et les données recherchées existent bien puisque dans le formulaire, je récupère les données des mêmes tables et colonnes.

Le problème est que rien ne s'affiche à l'écran à exception des 4 premiers echo



Pour finir, cette requête :

$reponse = mysql_query ("SELECT Chemin FROM model WHERE Ing1 = '$att1'") OR DIE ( mysql_error()) ;

fonctionne (avec n'importe laquelle des données postées).

Merci pour votre aide
A voir également:

3 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Affiche ta requête telle qu'exécutée pour voir :
$requete = "SELECT Chemin FROM model WHERE Ing1 = '$att1' AND Ing2 = '$att2' AND Ing3 = '$att3' AND Ing4 = '$att4' ";
echo $requete;
$reponse = mysql_query ($requete) OR DIE ( mysql_error()) ; 

Puis exécute-la directement dans un interpréteur de commande mysql, voir si elle retourne bien des résultats.

Xavier
0
nab13 Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   12
 
Merci Xavier, alors,

Dans le navigateur j'ai :

****SELECT 'chemin' FROM model WHERE Ing1 = '*' AND Ing2 = '*' AND Ing3 = '*' AND Ing4 = '*'

Et dans l'interpréteur j'ai :

MySQL a retourné un résultat vide (aucune ligne). (Traitement en 0.0020 sec)

J'ai mis des * pour avoir un résultat à coup sûr et dans l'interpréteur, j'ai cliqué directeur sur les colonnes pour les saisir automatiquement histoire de ne pas faire de faute de frappe.

C'est peut être ça le problème, pour rechercher n'importe quelle résultat c'est bien * ?
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
En effet, pour avoir n'importe quelle chaine de caractère, il ne faut utiliser ni le « = » ni le « * », mais « LIKE » et « % ».
Donc ton
Ing1 = '*'
devient
WHERE Ing1 LIKE '%'


Dans ta requête, du coup, je te suggère ceci :
$requete = "SELECT Chemin FROM model
    WHERE Ing1 LIKE '%$att1%' AND Ing2 LIKE '%$att2%' AND Ing3 LIKE '%$att3%' AND Ing4 LIKE '%$att4%' ";
$reponse = mysql_query ($requete) OR DIE ( mysql_error()) ;


Xavier
0
nab13 Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   12
 
Je savais que c'était un truc a la c.n.... Je ne sais pas pourquoi j'étais persuadé que c'était * ...

Merci beaucoup pour ton aide en tout cas.
0