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

Résolu/Fermé
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 - 10 févr. 2014 à 13:45
nab13 Messages postés 54 Date d'inscription dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 - 10 févr. 2014 à 15:07
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
10 févr. 2014 à 13:58
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 dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
10 févr. 2014 à 14:35
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
10 févr. 2014 à 14:57
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 dimanche 23 mars 2008 Statut Membre Dernière intervention 18 juillet 2016 12
10 févr. 2014 à 15:07
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