PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 02-12-2010 18:03:36

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Requête avec plusieur variables

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

#2 02-12-2010 19:56:04

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Requête avec plusieur variables

met un peu de code wink
a++

Hors ligne

#3 02-12-2010 20:47:51

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requête avec plusieur variables

Saluton,
Essayes qqe chose comme ça

<?php
// exemple avec 5 critères issus de $_POST
$where =' WHERE 1 ';
if(isset($_POST['premier'])){
    $where .= " AND premier ='{$_POST['premier']}' ";
    }
if(isset($_POST['deuxieme'])){
    $where .= " AND deuxieme ='{$_POST['deuxieme']}' ";
    }
if(isset($_POST['troisieme'])){
    $where .= " AND troisieme ='{$_POST['troisieme']}' ";
    }
if(isset($_POST['quatrieme'])){
    $where .= " AND quatrieme ='{$_POST['quatrieme']}' ";
    }
if(isset($_POST['cinquieme'])){
    $where .= " AND cinquieme ='{$_POST['cinquieme']}' ";
    }

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

#4 02-12-2010 20:54:20

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

Mon code :

<?php
$ligne = $_POST['ligne'];
$type = $_POST['type'];
$client = $_POST['client'];
$site_prod = $_POST['site_prod'];
$country = $_POST['country'];

$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

#5 02-12-2010 20:56:20

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

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

#6 03-12-2010 19:34:06

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

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

#7 03-12-2010 20:08:31

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Requête avec plusieur variables

Comme ça, ça devrait régler ton problème wink



     $where = ''
     $where .= ($ligne<>'NA') ? " AND  ligne = '$ligne'" : "";
     $where .= ($type <>'NA') ? " AND  type = '$type '" : "";
     $where .= ($client <>'NA') ? " AND  client = '$client '" : "";
     $where .= ($site_prod <>'NA') ? " AND  site_prod = '$site_prod '" : "";
     $where .= ($country <>'NA') ? " AND  country = '$country '" : "";
     $where = substr($where,5)
     $query ="Select * FROM agenda_events WHERE  $where" ;
 

on peut faire plus concis, mais peut être aussi moins claire pour toi wink


a++

Hors ligne

#8 04-12-2010 10:53:34

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

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

#9 04-12-2010 11:22:17

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Requête avec plusieur variables

tu me fais bosser un samedi matin mad
tu es dur sad


Alors, comme ca wink


     $where = ''
     $where .= ($ligne<>'NA') ? " 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" ;
 

@++

Hors ligne

#10 04-12-2010 11:31:17

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

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

#11 04-12-2010 12:14:46

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

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

#12 04-12-2010 12:51:57

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Requête avec plusieur variables

met le code
j'vé r'gardé wink
@++

Hors ligne

#13 04-12-2010 13:34:53

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

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.


<?php
$ligne = $_POST['ligne'];
$type = $_POST['type'];
$client = $_POST['client'];
$site_prod = $_POST['site_prod'];
$country = $_POST['country'];

$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

#14 04-12-2010 23:10:47

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Requête avec plusieur variables

change le
$where .= ($ligne<>'') ? " AND  ligne = '$ligne'" : "ligne > '' ";
par
$where .= ($ligne<>'NA') ? " AND  ligne = '$ligne'" : " AND ligne > '' ";

a++

Hors ligne

#15 05-12-2010 10:18:55

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

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

#16 06-12-2010 16:51:11

infograph61
Membre
Inscription : 25-09-2009
Messages : 74

Re : Requête avec plusieur variables

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

Pied de page des forums