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

Posté : 10 févr. 2006, 11:38
par zeus
modération : tu ne parles pas du forum, non ?
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
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 < 1000sans 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
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

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 !

[resolu]