Une question de select

Résolu
vol68 Messages postés 33 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 8 mai 2016 - 1 févr. 2009 à 11:43
vol68 Messages postés 33 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 8 mai 2016 - 1 févr. 2009 à 20:19
slt

j'ai un petit probleme avec ceci$lecturetable "SELECT DISTINCT $critererecherche FROM $nomtable WHERE $critererecherche $paramrecherche ";

tout s'arrete à cette lorsque je mets WHERE ........ dans la ligne select, dés que je l'enleveca marche

serait il possible d'avoir quelques infos merci 

vol68

8 réponses

kohntark Messages postés 3706 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
1 févr. 2009 à 12:26
Salut,

Suffit peut être de ne pas le mettre tout simplement
$lecturetable "SELECT DISTINCT $critererecherche FROM $nomtable WHERE $critererecherche $paramrecherche ";
=>$lecturetable "SELECT DISTINCT $critererecherche FROM $nomtable WHERE $critererecherche '$paramrecherche'";

Mais surtout :
Ta requête n'a pas de sens , en gros tu fais une recherche d'éléments distincts alors qu'ils ne peuvent pas l'être puisque tu le précises dans la clause WHERE.

Que cherches tu à faire au juste ?

Kohntark-

Kohntark -
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
1 févr. 2009 à 12:26
Salut

Peut etre
SELECT DISTINCT $critererecherche FROM $nomtable WHERE $critererecherche = '$paramrecherche'
3
vol68 Messages postés 33 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 8 mai 2016
1 févr. 2009 à 18:21
voici les lignes de code:
en fonction des checkbox et des listes de choix selectionnées plus haut je cherche à trier une base de données et à en selectionner une ligne

<select name="resultats recherche" >
 <!--option value = "pas_de_resultat">Pas des résultat pour ces parametres de recherche</option-->
<?php
//formulation de la requete*************************************************************
 if ($critererecherche <> "*") {  $where "WHERE $critererecherche ".$paramrecherche." ";
 } else {
  $where = " ";
 }
 $lecturetable = "SELECT DISTINCT $critererecherche FROM $nomtable $where ";
//execution de la requete*************************************************************** 
 $resultatlecture = mysql_query($lecturetable, $link);
//verification de la requete***********************************************************
 if (!$resultatlecture) {
  echo "Requête invalide : ";
    }
//utilisation des resultats*************************************************************
 //for ($i=1;$i<($nombreenregistrement+1);$i++){
 while ($enregistrements = mysql_fetch_assoc($resultatlecture)){ 
  //$enregistrements = mysql_fetch_assoc($resultatlecture);
  $choix = $enregistrements['Numero_enregistrement'].".-.".
  $enregistrements['Denom'].".-.".
  $enregistrements['Numero']."...".
  $enregistrements['Adresse']."...".
  $enregistrements['Ville']."...".
  $enregistrements['Code_Postal']."..-..".
  "Tel Fixe : 0".$enregistrements['Tel']."..-..".
  "Mobile : 0".$enregistrements['Mobile']."..-..".
  "Site : ".$enregistrements['Site'];
  echo "<option value=$choix>$choix</option>";
 }
?>
</select>

ceci fonctionne maintenant grace à vos reponses il suffisait de mettre '$paramrecherche' mais je ne parviens pas à afficher les resultats correctementen effet lorsque  $critererecherche "*" alors j'affiche la totalité de la base mais lorsque $critererecherche"Region" (le champ Region dans la base) et que $paramerecherche = "Bretagne" par exemple je n'affiche rien, comment afficher toutes les lignes de la base concernanées par le champ "Region" = "Bretagne".

merci de votre aide
vol68
0
vol68 Messages postés 33 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 8 mai 2016
1 févr. 2009 à 18:23
tout juste merci

vol68
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
1 févr. 2009 à 18:36
J'ai du mal a comprendre

"WHERE $critererecherche = ".$paramrecherche." "

-->

"WHERE region = 'BRETAGNE'"

Il faut que tu arrives a faire une requete comme ca ;-)

et pas comme ça
"WHERE "region" = 'BRETAGNE'"
qui n'est pas sqlment correctement meme qui plante normalement
0
vol68 Messages postés 33 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 8 mai 2016
1 févr. 2009 à 19:57
en fait $critererecherche et $paramrecherche sont extrait de plusieurs liste de choix activé ou non par une checkbox
je mexplique : lorsque la checkbox critere est coché elle active automatiquement une liste de choix qui permet de selectionner $paramrecherche
sachant qu'il y a plusieurs checkbox et donc plusieurs listes de choix, une fois  $critererecherche et $paramrecherche renseigné je les utilises pour faire la recherche recherche suivante select distinct $critererecherche from ma_table where $critererecherche = $paramrecherche je cherche donc à faire apparaitre uniquement les lignes de la base pour lequelles le champ s'appel Region ($critererecherche) et la valeur Bretagne ($paramrecherche).

en fait à la place de $critererecherche et $paramrecherche je ne veux pas mettre de valeur j'aimerais que ce soit des variables

vol68
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
1 févr. 2009 à 20:06
Oui j'ai compris

Il y faut que tu arrives a faire une requete dynamique qui te gere
au final
"WHERE region = 'BRETAGNE'"

donc
"WHERE " . $critererecherche ."= '" .$paramrecherche."'"
                                                    single quote double quote ......................double quote, single quote, double quote

Attention, il faut pas que $paramrecherche contienne de ' dans le cas contraire il faut les doubles avec par
exemple replace($paramrecherche,"'","''")

Mais le mieux est de passer par des requetes parametrées
0
vol68 Messages postés 33 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 8 mai 2016
1 févr. 2009 à 20:19
effectivement en utilisant cette methode je parviens à afficher quelque chose single quote double quote ..........double quote single quote double quote
mais je n'obtiens q'une seule ligne et elle ne correspont pas à la requete $lecturetable SELECT DISTINCT Region FROM ma_table WHERE Region 'Bretagne' et bretagne entre quote ne me permets pas d'afficher les lignes "Bretagne" de la base
alors que sans le WHERE ca m'affiche la totalité de la base, j'ai donc un souci avec la syntaxe de WHERE

vol68
0
Rejoignez-nous