Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
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. |
||
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
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.
$result_query1['Champ'] = $Champ1;
et ensuite tu fais ta requête :
SELECT * FROM table WHERE champ='$Champ1'
Bien entendu, tu peux utiliser plusieurs variables et des requêtes complexes....
Hors ligne
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
pas de probleme,
j'avais retabli l'ordre!
merci
Hors ligne
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ù:
<!--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
ben c normal...
$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 :
$resultat=mysql_query($requete) or die (mysql_error());
Hors ligne
Pour raccourcir ton code, tu peux remplacer tes 3 requêtes par :
$sqlC = "SELECT couleur FROM table"
if(@isset($_POST['couleur'])) {
$couleur=$_POST['couleur'];
$sqlC .= " WHERE couleur = '$couleur'"; // L'espace avant WHERE est important !!!
}
Hors ligne
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
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
let's do it again
if((@isset($_POST['couleur'])) && ($_GET['couleur'] != "indifferent")) {
$couleur=$_POST['couleur'];
$sqlC .= " WHERE couleur = '$couleur'"; // L'espace avant WHERE est important !!!
}
Hors ligne
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 ![]()
Hors ligne
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
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
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 ![]()
Hors ligne