concatener une requête avec une condition

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : concatener une requête avec une condition

par mlkaia » 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]

par zeus » 10 févr. 2006, 22:32

utilise mysql_num_rows pour ça

par mlkaia » 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:

par albat » 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...

par zeus » 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

par mlkaia » 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 !

par zeus » 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

par zeus » 10 févr. 2006, 11:38

modération : tu ne parles pas du forum, non ?
:arrow: sujet déplacé ;)

concatener une requête avec une condition

par mlkaia » 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: