Vous n'êtes pas identifié(e).
Pages :: 1
Bonsoir à tous,
J'ai fait une requete alimentée par 5 variables (issues de 5 menus déroulants).... mon problème est qu'i faut absoluement faire une selection dans les 5 menus, d'ou ma question : comment pour faire pour que la requete fonctionne si seulement 1, 2, 3 ou 4 menus sont sélectionnés.
J'ai essayé de mette * comme valeur dans un menu mais cela ne fonctionne..!!!!
si quelqu'un avait une idée.....Merci d'avance
Cordialement
Infograph61 (sous la neige)
Hors ligne
met un peu de code
a++
Hors ligne
Saluton,
Essayes qqe chose comme ça
Attention, ce n'est absolument pas sécurisé contre les injections SQL.
C'est juste une piste à explorer.
En outre il faudrait tenir compte du type de chaque colonne, les colonnes numériques ne doivent pas être comparées à des chaînes, donc il faudrait virer les quotes.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Mon code :
$xls_output = "N° BAT\tdate butoir\tCode article\tDésignation\tStatut\tLigne\tClient\tSite\tPays";
$xls_output .= "\n";
$query ="Select * FROM agenda_events WHERE ligne = $ligne AND type = $type AND client = $client AND site_prod = $site_prod AND country = $country" ;
$result = mysql_query($query)
or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
while($row = mysql_fetch_array($result)) {
$xls_output .= "$row[id]\t $row[date_bis]\t$row[titre]\t $row[texte]\t $row[type]\t $row[ligne]\t $row[client]\t $row[site_prod]\t $row[country]\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=Requete-Suivi-Infographie_" . date("d-m-Y").".xls");
print $xls_output;
exit;
?>
merci de votre aide
Hors ligne
J'ai oublié de préciser....
en ce qui concerne la sécurité, ce n'es tpas trop le problème car c'est en local sur 3 postes.
@+
Hors ligne
Bonsoir, j'ai fait quelque test et j'ai toujours le même problème.
en fait je "POST" systematiquement mes 5 valeurs, si une menu n'est pas activé , j'ai la valeur 'NA' d'envoyer. .... donc il faudrait que lorsque 'NA' est envoyé, ma requette remplace 'NA' par '*' comme par exemple :
$query ="Select * FROM agenda_events WHERE ligne = $ligne AND type = * AND client = $client AND site_prod = * AND country = *" ;
Je ne sais pas du tout si cela est une piste, mes connaissances sont trop limitées pour cela ....
@+
Infograph61
Hors ligne
Comme ça, ça devrait régler ton problème
on peut faire plus concis, mais peut être aussi moins claire pour toi
a++
Hors ligne
Vraiment merci pour ton aide Pierrot,
Mais je dois avoir un gros problème de conception, en fait ma valeur 'NA' ne doit pas correspondre à mon besoin. Si je laisse un menu déroulant avec cette valeur, le résultat de ma requête est vide alors q'en fait je devrais avoir tout.
je m'explique : mon but est si je ne sélectionne pas le menu "country" je veux obtenir tout les "client" de la base (tout les "type","site_prod"..... etc..) alors que si je sélectionne "country" j'obtiendrai tous les "client" d'un pays déterminé........ et ainsi de suite pour les 5 menus
Si j'envoie la valeur "NA' je ne dois pas avoir de tris sur la colonne correspondante.
@+
infograph61 sous la neige
Hors ligne
tu me fais bosser un samedi matin
tu es dur
Alors, comme ca
@++
Hors ligne
Faut bien que je m'occupe, je ne peux pas mettre le nez dehors avec ce temps pourri....
je teste au plus vite.
merci
@+
Hors ligne
Bon, j'ai fais le test et j'ai toujours le même résultat .....avec "NA" ma requête est vide.... je vois pas comment faire
@+
infograph61
Hors ligne
met le code
j'vé r'gardé
@++
Hors ligne
C'est vraiment sympa de m'aider.
mon but est lorsque une variable = "NA" cela me sélectionne tous les enregistrements. il faut que j'arrive à faire la requête avec seulement 1, 2, 3, 4 ou 5 variables.
$where = '';
$where .= ($ligne<>'') ? " AND ligne = '$ligne'" : "ligne > '' ";
$where .= ($type <>'NA') ? " AND type = '$type'" : " AND type > '' ";
$where .= ($client <>'NA') ? " AND client = '$client'" : " AND client > '' " ;
$where .= ($site_prod <>'NA') ? " AND site_prod = '$site_prod'" : " AND site_prod > '' " ;
$where .= ($country <>'NA') ? " AND country = '$country '" : " AND country > '' ";
$where = substr($where,5);
$query ="Select * FROM agenda_events WHERE $where" ;
$xls_output = "N° BAT\tdate butoir\tCode article\tDésignation\tStatut\tLigne\tClient\tSite\tPays";
$xls_output .= "\n";
$result = mysql_query($query)
or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
while($row = mysql_fetch_array($result)) {
$xls_output .= "$row[id]\t $row[date_bis]\t$row[titre]\t $row[texte]\t $row[type]\t $row[ligne]\t $row[client]\t $row[site_prod]\t $row[country]\n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=Requete-Suivi-Infographie_" . date("d-m-Y").".xls");
print $xls_output;
exit;
?>
Hors ligne
change le
$where .= ($ligne<>'') ? " AND ligne = '$ligne'" : "ligne > '' ";
par
$where .= ($ligne<>'NA') ? " AND ligne = '$ligne'" : " AND ligne > '' ";
a++
Hors ligne
Je vois que tu travaille très tard le soir.......
mes premiers tests ne sont pas vraiment concluant, j'ai la même chose...... et je ne pourrai pas m'y remettre avant demain soir....
Bon dimanche à tous.
Cordialement
@+
infograph61
Hors ligne
Bonsoir,
Je tiens à présenter mes excuses pour le temps que j' ai faire perdre Pierrot, car en fait le script fontionne très bien.
Ce n'est pas "NA" qu'il falait que je mette, mais la valeur de l'id correspondante, cette correction faîtes tout fonctionne parfaitement.
Merci PIERROT, pour ta patience, ta persévérence et tes connaissances.
Bonne soirée.
@+
Infograph61
Hors ligne
Pages :: 1