cs_elantri
Messages postés9Date d'inscriptionvendredi 16 mai 2008StatutMembreDernière intervention 1 janvier 2011
-
19 déc. 2010 à 22:35
cs_elantri
Messages postés9Date d'inscriptionvendredi 16 mai 2008StatutMembreDernière intervention 1 janvier 2011
-
23 déc. 2010 à 12:09
Bonjour Tout le monde,
J’ai un petit problème que je n’arrive pas à le résoudre.
J’ai une liste déroulante qui donne à l’utilisateur la possibilité de choisir le type de livre qui veut afficher son prix. Jusqu’a ce point pas de problème une simple requête SQL .
Le problème : si un utilisateur veut afficher les prix de chaque livre stocké dans ma base de donnée, j’ai pensé a jouter au niveau de la liste déroulante un choix ‘ALL’ qui permet d’afficher tous les livres.
Il y a deux méthodes :
La première consiste à faire des if :
Exemple :
$G = $_POST['G'] ;
$I = $_POST['I'] ;
$H = $_POST['H'] ;
if($G=='All' AND $I=='All' AND $H=='All')
{
$select = "SELECT * FROM table)";
}
else
if($G=='All' AND $I=='All')
$select "SELECT * FROM table WHERE (H '$H')";
…
Le problème de cette méthode si on a plusieurs variables(G,I,…..) donc on a besoin de plusieurs if
Pour cette raison j’ai pensé à une autre méthode qui consiste à vérifier le choix de l’utilisateur avant de faire la requête :
Exemple :
$G = $_POST['G'] ;
$I = $_POST['I'] ;
$H = $_POST['H'] ;
if($G=='All')
{
$G='livre1';//comment faire si j’ai plusieurs livres qui sont stoké dans un enregistrement de ma base
}
if($I=='All')
{
$I='page1';
}
if($H=='All')
{
$H='feuille1';
}
…
$select "SELECT count(id) FROM table WHERE (H '$H') AND (AK = '$AK') AND (E = '$E') ORDER BY A ASC";
Exemple de livre si je fais $G='livre1'; c’est bon mais si dans l'enregistrement on a plusieur livres comment je peux faire pour pouvoir stocker tous les livres au niveau du variable G ;
Lyle56
Messages postés240Date d'inscriptionjeudi 1 mai 2008StatutMembreDernière intervention19 juillet 20122 21 déc. 2010 à 13:23
Bonjour,
Dans tes variables $_POST[], qui sont des listes déroulantes, tu ne peut avoir qu'une seule valeur . Donc $G ne peut avoir qu'une seule valeur par script; Par contre cette variable peut concerné plusieurs livres;
Pour moi tu as un petit soucis d'analyse;
Je te propose une autre méthodes ;)
// Tu as toujours tes 3 valeurs en entrées Soit ALL soit une valeur Spé
$G = $_POST['G'] ;
$I = $_POST['I'] ;
$H = $_POST['H'] ;
// Ta requéte commence toujours de la même maniére :
$requete = "SELECT * FROM table"
// Tes conditions maintenant
// Si une des valeurs n'est pas à ALL c'est que tu recherche sur un champ
if($G !='All' || $I !='All' || $H !='All' ) {
$requete .= " WHERE "
// on tag le premier element de recherche
$isfirst = true;
if($G != ALL) { $requete .= "G =" $G; $isfisrt = false; }
if($I != ALL) { if(!$isfisrt) { $requete .= " AND " } $requete .= "I =" $I; $isfisrt = false; }
if($H != ALL) { if(!$isfisrt) { $requete .= " AND " }$requete .= "H =" $
H; }
}
Normalement ta requête est construite suivant le choix de l'utilisateur.
Sans maitrise, la puissance n'est rien
Il ne faut pas vendre la peau de l'ours, non il ne faut pas.