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 -
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
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:
- Mysql - PHP - SELECT .... WHERE ..... AND
- Spybot search and destroy - Télécharger - Antivirus & Antimalwares
- Where is it - Télécharger - Gestion de fichiers
- Easy php - Télécharger - Divers Web & Internet
- Find and mount - Télécharger - Récupération de données
- Mysql community server - Télécharger - Bases de données
3 réponses
Bonjour,
Affiche ta requête telle qu'exécutée pour voir :
Puis exécute-la directement dans un interpréteur de commande mysql, voir si elle retourne bien des résultats.
Xavier
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
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 * ?
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 * ?
En effet, pour avoir n'importe quelle chaine de caractère, il ne faut utiliser ni le « = » ni le « * », mais « LIKE » et « % ».
Donc ton
Dans ta requête, du coup, je te suggère ceci :
Xavier
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