Page 1 sur 1

concatener une requête avec une condition

Posté : 10 févr. 2006, 11:25
par mlkaia
Bonjour,
je voudrais savoir s'il est possible de concatener une requête avec une condition . Ma question est un peu stupide car ça ne fonctionne pas et je ne comprends pas :oops:

Code : Tout sélectionner

$query="SELECT * FROM croisiere WHERE destination ='$id_destination' "; if (($_POST["budget"])!="Budget") { $budget=$_POST["budget"]; $query.="AND prix_exterieur < '$budget'" ; } $result = mysql_query($query); while ($val=mysql_fetch_array($result)) { ...... }
Merci pour votre aide ! :lol:

Posté : 10 févr. 2006, 11:38
par zeus
modération : tu ne parles pas du forum, non ?
:arrow: sujet déplacé ;)

Posté : 10 févr. 2006, 11:40
par zeus
Quand tu dit que ça ne fonctionne pas, tu entend quoi ?
Est-ce que tu as essayé d'afficher la requete générée pour la vérifier visuellement ?
Je pense que ton problème vient plus de $id_destination ou de $budget que de la concaténation qui à l'air juste

Posté : 10 févr. 2006, 11:50
par mlkaia
merci de te pencher sur mon cas :lol:

justement je viens d'afficher $query avec echo et le resultat est :
SELECT * FROM croisiere WHERE destination ='2' AND prix_exterieur < '1000'
je vérifie le reste et je te tiens au courant .


Merci !

Posté : 10 févr. 2006, 11:59
par zeus
Il me semble, mais ça reste à confirmer que pour comparer des chiffres avec <, >, <=, >=, ..., il ne faut pas encadrer les chiffres par des '

essaye la requete suivante

Code : Tout sélectionner

SELECT * FROM croisiere WHERE destination ='2' AND prix_exterieur < 1000
sans les ' autour de 1000

Posté : 10 févr. 2006, 13:09
par albat
Dans une requête SQL,
une valeur numérique doit être indiquée sans apostrophes ni guillements.
Sinon, c'est une valeur alphanumérique.
SELECT * FROM croisiere WHERE destination = 2 AND prix_exterieur < 1000
Dans sa grande bonté, MySQL s'est accordé la capacité
d'interpréter si nécessaire la chaîne "4" comme étant la valeur 4,
mais ce n'est pas une raison pour abuser de cette tolérance...

Posté : 10 févr. 2006, 20:37
par mlkaia
merci pour votre aide !
donc j'ai réussi à concaténer les requêtes

Code : Tout sélectionner

$query="SELECT * FROM destination WHERE id_destination ='$id_destination' "; $result = mysql_query($query); $val=mysql_fetch_array($result); echo $val["destination"]."<br/><br/>"; $SQL="SELECT * FROM croisiere WHERE destination ='$id_destination' "; if ($budget!=0) { $SQL.="AND prix_exterieur < $budget" ; } if ($date!="0") { $SQL.=" AND date LIKE '%$date%'" ; } $result = mysql_query($SQL); while ($val=mysql_fetch_array($result)) { ......}
Mais...j'ai une autre question :oops:
avec cette requête, je récupere des données de ma table à condition qu'il y ait au moins un enregistrement correspondant à la requête.
Comment faire pour qu'un message précisant qu'il n'y a pas de croisiere disponible s'affiche lorsqu'aucun enregistrement ne correspond à la requête. Je ne trouve pas quelle fonction utiliser..

Je sais pas si c'est très clair...

Merci :lol:

Posté : 10 févr. 2006, 22:32
par zeus
utilise mysql_num_rows pour ça

Posté : 12 févr. 2006, 13:48
par mlkaia
ca marche !!!!
voici donc le code correct :

Code : Tout sélectionner

$query="SELECT * FROM destination WHERE id_destination ='$id_destination' "; $result = mysql_query($query); $val=mysql_fetch_array($result); echo $val["destination"]."<br/><br/>"; $SQL="SELECT * FROM croisiere WHERE destination ='$id_destination' "; if ($budget!=0) { $SQL.="AND prix_exterieur < $budget" ; } if ($date!="0") { $SQL.=" AND date LIKE '%$date%'" ; } $result = mysql_query($SQL); [color=brown]$num_rows = mysql_num_rows($result); if($num_rows==0) {?> il n'y a pas de croisière disponible<br> <a href="form.php">retour</a><? }[/color] while ($val=mysql_fetch_array($result)) { ......}
Merci zeus ! :lol:
[resolu]