concatener une requête avec une condition

mlkaia
Invité n'ayant pas de compte PHPfrance

10 févr. 2006, 11:25

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:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 févr. 2006, 11:38

modération : tu ne parles pas du forum, non ?
:arrow: sujet déplacé ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 févr. 2006, 11:40

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

mlkaia
Invité n'ayant pas de compte PHPfrance

10 févr. 2006, 11:50

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 !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 févr. 2006, 11:59

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 févr. 2006, 13:09

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...

mlkaia
Invité n'ayant pas de compte PHPfrance

10 févr. 2006, 20:37

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:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 févr. 2006, 22:32

utilise mysql_num_rows pour ça
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

mlkaia
Invité n'ayant pas de compte PHPfrance

12 févr. 2006, 13:48

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]