Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 23-06-2005 08:11:00

aurelie
Membre
Date d'inscription: 21-06-2005
Messages: 28

requetes sql succesives

Bonjour,

j'ai toujours une interface de recherche composée de plusieurs menus déroulants.
Pour chaque menu, je recupere la valeur sélectionnée au moyen d'une requete et je la stocke dans une variable.
Seulement, j'ai une requete finale qui effectue la recherche multi-critères, mais cette requête ne semble pas fonctionner avec les variables recueillies précédemment, est-ce normal?
Peut-être que l'on ne peut pas effectuer des requetes sur des resultats de requetes?

Merci d'avance.

Hors ligne

 

#2 23-06-2005 13:03:27

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: requetes sql succesives

tu veux dire utiliser une valeur trouvée via une requête comme critère dans une autre requête ? Si, ca doit être faisable.
Pour éviter les ennuis, tu passes ton résultat dans une variable puis tu te sert de la variable.

Code:

$result_query1['Champ'] = $Champ1;

et ensuite tu fais ta requête :

Code:

SELECT * FROM table WHERE champ='$Champ1'

Bien entendu, tu peux utiliser plusieurs variables et des requêtes complexes....

Hors ligne

 

#3 24-06-2005 03:51:35

aurelie
Membre
Date d'inscription: 21-06-2005
Messages: 28

Re: requetes sql succesives

merci beaucoup.

Je vais essayer mais à peu de choses près c'est ce que j'avais essayer de faire.
Comme ca marchait pas, je voulais m'assurer que c'etait possible.

Alors merci.

Hors ligne

 

#4 24-06-2005 04:10:11

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: requetes sql succesives

oops... me suis trompé :

c'est pas

Code:

$result_query1['Champ'] = $Champ1;

mais l'inverse ;o) Désolé

Hors ligne

 

#5 24-06-2005 04:30:38

aurelie
Membre
Date d'inscription: 21-06-2005
Messages: 28

Re: requetes sql succesives

pas de probleme,
j'avais retabli l'ordre!
merci

Hors ligne

 

#6 24-06-2005 07:47:54

aurelie
Membre
Date d'inscription: 21-06-2005
Messages: 28

Re: requetes sql succesives

je comprens pas, j'ai essayé sur un seul menu déroulant, j'ai beau stocker le résultat de ma requete dans une variable, ca ne fonctionne pas dans la requete finale.
Voici mon code au cas où:

Code:

<!--mon menu deroulant qui est dans un formulaire-->
<select name="couleur">
<option value="indifferent">indifferent</option>
<option value="rouge">rouge</option>
<option value="vert">vert</option>
<?
//mes requetes
$sqlC="SELECT couleur FROM table";
$couleur=$_POST['couleur'];
switch
{case 'rouge':
$sqlC="SELECT couleur FROM table WHERE couleur='rouge'";break;
case 'vert':
$sqlC="SELECT couleur FROM table WHERE couleur='vert'";break;
default:
$sqlC=$sqlC;break;
}
$queryC=mysql_query($sqlC);
//jusque la si je demande l'affichage des resultats ici les 3 cas fonctionnent
$requete="SELECT couleur FROM table WHERE couleur='$queryC'";
$resultat=mysql_query($requete);
//là si je demande l'affichage, j'obtiens 0 resultat pour les trois cas

NB: ici ma requete finale est inutile mais c'est que normalement j'effectue la première requete pour les 5 menus deroulants que j'ai.
La c'était pour tester dans un premier temps sur un.

Merci au courageux ou à la courageuse qui me répondra!

Hors ligne

 

#7 24-06-2005 08:19:53

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: requetes sql succesives

ben c normal...

Code:

$requete="SELECT couleur FROM table WHERE couleur='$queryC'"; 

n'est pas bon... il faut remplacer $queryC par $couleur (ou alors je n'ai aps bien compris ce que tu voulais faire...)

ensuite, en cas d'erreur de requête, je mettrais :

Code:

$resultat=mysql_query($requete) or die (mysql_error());

Hors ligne

 

#8 24-06-2005 08:25:16

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: requetes sql succesives

Pour raccourcir ton code, tu peux remplacer tes 3 requêtes par :

Code:

$sqlC = "SELECT couleur FROM table"

if(@isset($_POST['couleur'])) {
$couleur=$_POST['couleur']; 
$sqlC .= " WHERE couleur = '$couleur'"; // L'espace avant WHERE est important !!!
}

Hors ligne

 

#9 24-06-2005 08:37:56

aurelie
Membre
Date d'inscription: 21-06-2005
Messages: 28

Re: requetes sql succesives

merci
j'essaie de suite.
Par contre, en ce qui concerne ma requete, il me semble avoir essayé justement $couleur à la place de $queryC.
Bref, j'essaie et merci

Hors ligne

 

#10 24-06-2005 08:49:12

aurelie
Membre
Date d'inscription: 21-06-2005
Messages: 28

Re: requetes sql succesives

Bon, ca marche pour le choix "rouge" et pour le choix "vert" mais pas pour le choix indifférent pour lequel je veux tout, à la fois rouge et vert.
J'obtiens toujours 0 resultat.
En tout cas merci

Hors ligne

 

#11 24-06-2005 11:02:39

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: requetes sql succesives

let's do it again lol

Code:

if((@isset($_POST['couleur'])) && ($_GET['couleur'] != "indifferent")) { 
$couleur=$_POST['couleur']; 
$sqlC .= " WHERE couleur = '$couleur'"; // L'espace avant WHERE est important !!! 
} 

Hors ligne

 

#12 27-06-2005 04:05:17

aurelie
Membre
Date d'inscription: 21-06-2005
Messages: 28

Re: requetes sql succesives

bon, j'ai ressayé, j'obtiens toujours 0 résultat pour mon choix 'indifférent'.
Mais n'est-ce pas parce-que dans ma requete finale je recupere '$couleur' qui ne correspond qu'à mes choix 'rouge' et 'vert' ?
Voilà d'ailleurs pourquoi j'avais mis au depart '$queryC' dans ma requete finale, pour vraiment recuperer tous les choix possibles.
Merci smile

Hors ligne

 

#13 27-06-2005 04:20:43

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: requetes sql succesives

Non. Selon le code, si $couleur est vide ou est égal à 'indifferent', la rêquête qui s'exécute est "SELECT couleur FROM table". Si $couleur contient qqch alors on ajoute la clause WHERE à la fin de la requête.

Par contre je viens de voir que c'est une méthode post qui est utilisée.

Hors ligne

 

#14 27-06-2005 04:47:13

aurelie
Membre
Date d'inscription: 21-06-2005
Messages: 28

Re: requetes sql succesives

j'ai essayé en mettant method="get" dans mon formulaire et en changeant donc les "$_POST" par "$_GET" mais rien n'y fait.
En tout cas je suis rassurée, la requete en cas indifferent est bien "SELECT couleur FROM table", j'avais bien compris, c'est deja ca.
Mais je vois vraiment pas pourquoi "indifferent" marche pas. :?:

Merci quand-même!

Hors ligne

 

#15 27-06-2005 04:53:28

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: requetes sql succesives

si c'est indifférent, ta variable est à la valeur 'indifferent' ?
si oui, il faut que tu la définisse à la valeur '' (vide)
car sinon, il fait un WHERE couleur = 'indifferent'
et tu n'a pas de couleur indifférent wink

Hors ligne