Une question de select [Résolu]

Signaler
Messages postés
33
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
8 mai 2016
-
Messages postés
33
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
8 mai 2016
-
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

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
27
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 -
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

Peut etre
SELECT DISTINCT $critererecherche FROM $nomtable WHERE $critererecherche = '$paramrecherche'
Messages postés
33
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
8 mai 2016

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
Messages postés
33
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
8 mai 2016

tout juste merci

vol68
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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
Messages postés
33
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
8 mai 2016

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
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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
Messages postés
33
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
8 mai 2016

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