C'est Urgent

cs_elantri Messages postés 9 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 1 janvier 2011 - 19 déc. 2010 à 22:35
cs_elantri Messages postés 9 Date d'inscription vendredi 16 mai 2008 Statut Membre Derniè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 ;

Merci de votre aide.

2 réponses

Lyle56 Messages postés 240 Date d'inscription jeudi 1 mai 2008 Statut Membre Dernière intervention 19 juillet 2012 2
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.
0
cs_elantri Messages postés 9 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 1 janvier 2011
23 déc. 2010 à 12:09
Merci Beaucoup Lyle56
je vais essayer d'appliquer ta méthode.
0
Rejoignez-nous