Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/07/2006, 13h20   #1
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
Par défaut [SQL] ma requette ne fonctionne pas

Bonjour a tous ,
voila mon probleme j'ai dans ma requette au moins 20 conditions
mais celle qui me pose un probleme c'est celle qui on des comparaisons
avec les = ya pas de probleme mais les <= a >=
dés que j'entre les conditions
Code :
prix>='$prix_debut' and prix<='$prix_fin' and annee=<'$annee_fin' and annee>='annee_debut'
sa marche plus !!!!!
quelqu'un a une idée

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$recherche=mysql_query(" select cat,souscat,carrosserie_couleur,vehicule_type,prix,annee from annonce where 
`cat`='$cat' and `souscat`='$souscat'  and  `carrosserie_couleur`='carrosserie_couleur' and `vehicule_type`='$vehicule_type' 
and  `prix`>='$prix_debut' and `prix`<='$prix_fin' and  `annee`=<'$annee_fin' and `annee`>='annee_debut' ");
 
mysql_query($recherche) or die("$recherche - " . mysql_error());
 
 while ($resultat= mysql_fetch_array ($recherche))  ligne 279
 
{
$cat=$resultat['cat'];
 
 
}
erreur :
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/122/free.fr/4/d/yyyyyyy/xxxxxxxx/
recherche_et_resultat.php on line 279
apres les modifs l'erreur affiché est
Resource id #3 - Query was empty ( j'ai que deux enregistrement dans ma table annonce ) !!!!
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 13h28   #2
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Mets ta requête dans une chaîne de caractère et affiche-la, ainsi que l'erreur mysql (voir point 2 de ma signature)
Mets les noms de tables et de champs entre backquotes
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 13h58   #3
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
qu'est ce que t'appel mettre la requette dans une chaine de caractére !!

desolé je debute et comme beaucoup seul
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 14h09   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par nebil
qu'est ce que t'appel mettre la requette dans une chaine de caractére !!

desolé je debute et comme beaucoup seul
au lieu de faire :
Code :
mysql_query("select machin");
tu fais :
Code :
1
2
$query = "select machin";
$result = mysql_query($query) or die($query . " - " . mysql_error());
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 14h20   #5
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
As tu essayer BETWEEN ??
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 14h42   #6
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
bon je comprend rien je recommence tout
j'ai un formulaire on entre le cat de l'auto le souscat de l'auto
et le prix mini et le prix maxi

sa, sa marche .....
Code :
1
2
3
4
5
6
7
8
$recherche=mysql_query(" select cat,souscat from annonce where 
cat='$cat' and souscat='$souscat'   ");
 
while ($resultat= mysql_fetch_array ($recherche))
{
$cat=$resultat['cat'];
$souscat=$resultat['souscat'];
}
la je recupere bien les cat et souscat parceque il on pour condition =

mais dés que j'ajoute les entre et entre sa marche plus

Code :
1
2
$recherche=mysql_query(" select cat,souscat from annonce where 
cat='$cat' and souscat='$souscat' and prix>='prix_debut' and prix<='prix_fin'  ");
et la ya pas d'erreur qui s'affiche une page blanche pourtant la donnée prix dans la table et= 10000 et le select mini et a 7000 et le select maxi et a 12500 et je recupere bien les valeurs de select dans $prix_debut et $prix_fin

pour ce qui est des ecritures qui doivent se faire dans les regles de l'art
svp je suis d'accord ,mais je veux comprendre pk les conditions <> ne fonctionne pas
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 14h46   #7
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par nebil
et la ya pas d'erreur qui s'affiche
Parce que tu n'as pas fait ce que je t'ai dit.
Et si tu modifiais ta requête pour avoir : "select cat, souscat, prix from..." ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 14h51   #8
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
Eusebius , ecris comme sa fonctionne pas meme sans prix !!!!

Code :
1
2
3
4
5
6
7
8
9
$recherche=" select cat,souscat from annonce where 
cat='$cat' and souscat='$souscat'  ";
$resultat=mysql_query($recherche) or die("$recherche - " . mysql_error());
 
while ($resultat= mysql_fetch_array ($recherche))
{
$cat=$resultat['cat'];
$souscat=$resultat['souscat'];
}
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 14h58   #9
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Je crois que tu n'as pas compris les principes de bases pour les requêtes... Ou alors c'est des erreurs d'étourderie

ton mysql_fetch_array, tu l'appliques sur $resultat, et le retour de cette fonction, tu l'appelles autrement !
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 15h06   #10
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
effectivement petite erreur la sa marche
Code :
1
2
3
4
5
6
7
8
9
10
 
$recherche=" select cat,souscat from annonce where 
cat='$cat' and souscat='$souscat'  ";
$donne=mysql_query($recherche) or die("$recherche - " . mysql_error());
 
while ($resultat= mysql_fetch_array ($donne))
{
$cat=$resultat['cat'];
$souscat=$resultat['souscat'];
}
bon maintenant si j'ajoute l'argument prix comme sa , sa marche aussi
je recupere le prix puisque les conditions ne reste que sur cat et souscat
Code :
1
2
3
4
5
6
7
8
9
10
11
 
$recherche=" select cat,souscat,prix from annonce where 
cat='$cat' and souscat='$souscat'  ";
$donne=mysql_query($recherche) or die("$recherche - " . mysql_error());
 
while ($resultat= mysql_fetch_array ($donne))
{
$cat=$resultat['cat'];
$souscat=$resultat['souscat'];
$prix=$resultat['prix'];
}


mais si j'ajoute les conditions prix entre et entre sa marche plus

Code :
1
2
3
4
5
6
7
8
9
10
11
 
$recherche=" select cat,souscat,prix from annonce where 
cat='$cat' and souscat='$souscat'  and prix>='prix_debut' and prix<='$prix_fin' ";
$donne=mysql_query($recherche) or die("$recherche - " . mysql_error());
 
while ($resultat= mysql_fetch_array ($donne))
{
$cat=$resultat['cat'];
$souscat=$resultat['souscat'];
$prix=$resultat['prix'];
}
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 15h08   #11
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Code :
1
2
$recherche=" select cat,souscat,prix from annonce where 
cat='$cat' and souscat='$souscat'  and prix between '$prix_debut' and '$prix_fin' ";
Comme ca ?

ou

Code :
1
2
$recherche=" select cat,souscat,prix from annonce where 
cat='$cat' and souscat='$souscat'  and prix>='$prix_debut' and prix<='$prix_fin' ";
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 15h27   #12
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
sa marche pas ni l'une ni l'autre , je comprend pas pourtant sa a l'air simple
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 15h29   #13
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par nebil
sa marche pas ni l'une ni l'autre , je comprend pas pourtant sa a l'air simple
Ca serait extrêmement aimable de nous afficher le résultat du "or die". Ca doit t'afficher (entre autres) une requête, teste-la dans phpmyadmin
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 15h30   #14
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
en remplacant prix_fin et debut par de vrai valeur ca donne quoi ?
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 15h36   #15
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
obsolument rien ne s'affiche ni erreur ni resulat ,
avec des valeurs en dur
>=8000 and <=12000 . (prix de l'auto 10000) rien non plus


comme sa c plus simple

dans la table il y a deux enregistrements
les deux on pour marque mercedes 560 pour 10000 euro
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 15h46   #16
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Citation:
Envoyé par nebil
obsolument rien ne s'affiche ni erreur ni resulat ,
avec des valeurs en dur
>=8000 and <=12000 . (prix de l'auto 10000) rien non plus
fais un echo de $recherche, et teste la requête affichée directement dans phpmyadmin (et pis tu nous la montres au passage)
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 16h07   #17
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
requete dans mysql

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Erreur
 
requête SQL: Documentation
 
$recherche = " select cat,souscat,prix from annonce where cat='$cat' and souscat='$souscat' and prix between'$prix_debut' and '$prix_fin' "
 
MySQL a répondu:Documentation
#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server 
version for the right syntax to use near 
'$recherche=" select cat,souscat,prix from annonce where
cat='$cat' and souscat' at line 1

echo de $recherche
select cat,souscat,prix from annonce where cat='69' and souscat='993' and prix between'1500' and '12500'
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 16h09   #18
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
mets un espace
Citation:
between '1500'
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 16h15   #19
Membre régulier
 
Inscription : juillet 2005
Messages : 484
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 484
Points : 87
Points : 87
revoili voila ma requete meme l'espace enlever entre between et '$prix_debut'
ni change rien
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
$recherche=" select cat,souscat,prix from annonce where 
cat='$cat' and souscat='$souscat'  and   prix between '$prix_debut' and '$prix_fin' ";
 
echo "$recherche"; 
$donne=mysql_query($recherche) or die("$recherche - " . mysql_error());
while ($resultat= mysql_fetch_array ($donne))
 
{
$cat=$resultat['cat'];
$souscat=$resultat['souscat'];
$annee=$resultat['annee'];
$prix=$resultat['prix'];
}
l'erreur affiche dans mysql

Code :
1
2
3
4
5
6
7
8
9
10
11
12
Erreur
 
requête SQL: Documentation
 
$recherche = " select cat,souscat,prix from annonce where cat='$cat' and souscat='$souscat' and prix between'$prix_debut' and '$prix_fin' "
 
MySQL a répondu:Documentation
#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server 
version for the right syntax to use near 
'$recherche=" select cat,souscat,prix from annonce where
cat='$cat' and souscat' at line 1
echo de $recherche

Code :
select cat,souscat,prix from annonce where cat='69' and souscat='993' and prix between '1500' and '12500'
nebil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2006, 16h20   #20
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Tu pourrais tester correctement (sans le "$recherche = ...") ta requête dans phpmyadmin ? Qu'on sache s'il y a une erreur ou pas.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h42.


 
 
 
 
Partenaires

Hébergement Web