Requete php ac atribut selectioné dans liste
drogba7213
Messages postés
1524
Date d'inscription
Statut
Membre
Dernière intervention
-
IpIpIpIpOne Messages postés 436 Date d'inscription Statut Membre Dernière intervention -
IpIpIpIpOne Messages postés 436 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila j'ai un gros problème j'ai une page.php
en haut il y a deux champ pour taper une période
en dessous 5 liste
le principe est de pouvoir trier par rapport a ce qui est entré en période et sélectionné dans les listes
donc je garde bien les données des champs et des listes même après qu'il soit posté
par contre la ou je bloque c'est pour la requete alors voici une des listes
et voici ce que j'ai fait actuellement mais ca ne fonctionne pas et j'aimerais que quelqu'un m'aide svp
aidez moi svp
merci d'avance
Voila j'ai un gros problème j'ai une page.php
en haut il y a deux champ pour taper une période
en dessous 5 liste
le principe est de pouvoir trier par rapport a ce qui est entré en période et sélectionné dans les listes
donc je garde bien les données des champs et des listes même après qu'il soit posté
par contre la ou je bloque c'est pour la requete alors voici une des listes
echo "<br><center>"; $sql = "SELECT DESIGNATION FROM TYPE"; $req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql); echo " <select name= 'TYPE' size=\"1\" onchange=\"active(this)\">"; while($data = odbc_fetch_array($req)) { if ($data["DESIGNATION"] == $_POST['TYPE']) { $selected = ' selected="selected" '; } else { $selected = ''; } echo "\n <option value=\"".$data["DESIGNATION"]."\" " . $selected . ">".$data["DESIGNATION"]."</option>"; } //echo "<option value='' selected='selected'> </option>"; //echo "<option value='' selected='selected'>Type</option>"; echo '</select>';
et voici ce que j'ai fait actuellement mais ca ne fonctionne pas et j'aimerais que quelqu'un m'aide svp
if (isset($_POST['d']) && isset($_POST['f'])) { $sql = "SELECT * FROM ARRET_CHAINE WHERE DEBUT BETWEEN #$date_deb# AND #$date_fin#" ; $rs = odbc_exec($conn,$sql) or die('<br><br><br><br><center>-------- Saisir une période -------- et cliquer sur OK --------<center/>'); $_SESSION['d'] = $_POST['d']; $_SESSION['f'] = $_POST['f']; if (isset ($_POST['TYPE'])) { $TYPE = $_POST['TYPE']; } else { $TYPE = ''; } if(isset($_POST['CONSTAT'])) { $CONSTAT = $_POST['CONSTAT']; } else { $CONSTAT = ''; } if (isset($_POST['DEMANDE'])) { $DEMANDE = $_POST['DEMANDE']; } else { $DEMANDE = ''; } if (isset($_POST['CAUSE'])) { $CAUSE = $_POST['CAUSE']; } else { $CAUSE = ''; } if (isset($_POST['IMPUTATION'])) { $IMPUTATION = $_POST['IMPUTATION']; } else { $IMPUTATION = ''; } $sql1 = " SELECT * FROM ARRET_CHAINE WHERE DEBUT BETWEEN #$date_deb# AND #$date_fin# AND TYPE = '$TYPE' AND CONSTAT = '$CONSTAT' AND DEMANDE = '$DEMANDE' AND CAUSE = '$CAUSE' AND IMPUTATION = '$IMPUTATION'"; $rs = odbc_exec($conn,$sql1) or die('<br><br><br><br><center>-------- Saisir une période -------- et cliquer sur OK --------<center/>'); }
aidez moi svp
merci d'avance
A voir également:
- Requete php ac atribut selectioné dans liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Easy php - Télécharger - Divers Web & Internet
- Site dangereux liste - Guide
8 réponses
Bah en fait je suppose que ce sont mes conditions qui sont fausse
vu que les listes prennent forcément une valeur du coup ca m'affiche rien
je sais pas si je si plus compréhensible dite moi
if (isset ($_POST['TYPE'])) { $TYPE = $_POST['TYPE']; } else { $TYPE = ''; }
vu que les listes prennent forcément une valeur du coup ca m'affiche rien
je sais pas si je si plus compréhensible dite moi
En fait une champ select simple n'est jamais indéfini. (Un select multiple peut être indéfini si rien n'a été sélectionné.)
Donc, le mieux c'est à mon avis de mettre une première valeur vide dans tes select (<option value=""></option>) et d'utiliser "!empty" plutôt que "isset" :
$sql = "SELECT * FROM table ";
if(!empty($_POST['nom_de_ton_select'])) $sql .= ' WHERE champ=\''.$_POST['nom_de_ton_select'].'\'';
//etc ...
Pense aussi vérifier les valeurs passées par le formulaire avant de faire ta requête SQL et de nommer tes champs plutôt que d'utiliser le *
Donc, le mieux c'est à mon avis de mettre une première valeur vide dans tes select (<option value=""></option>) et d'utiliser "!empty" plutôt que "isset" :
$sql = "SELECT * FROM table ";
if(!empty($_POST['nom_de_ton_select'])) $sql .= ' WHERE champ=\''.$_POST['nom_de_ton_select'].'\'';
//etc ...
Pense aussi vérifier les valeurs passées par le formulaire avant de faire ta requête SQL et de nommer tes champs plutôt que d'utiliser le *
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je n'ai pas tout compris je sais que c'est culoter mais pouvez vous adapter votre solution a mon code svp?
la liste :
et pour les tris :
merci d'avance
la liste :
echo "<br><center>"; $sql = "SELECT DESIGNATION FROM TYPE"; $req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql); echo " <select name= 'TYPE' size=\"1\" onchange=\"active(this)\">"; while($data = odbc_fetch_array($req)) { if ($data["DESIGNATION"] == $_POST['TYPE']) { $selected = ' selected="selected" '; } else { $selected = ''; } echo "\n <option value=\"".$data["DESIGNATION"]."\" " . $selected . ">".$data["DESIGNATION"]."</option>"; } //echo "<option value='' selected='selected'> </option>"; //echo "<option value='' selected='selected'>Type</option>"; echo '</select>';
et pour les tris :
if (isset($_POST['d']) && isset($_POST['f'])) { $sql = "SELECT * FROM ARRET_CHAINE, PLAN_ACTION WHERE ARRET_CHAINE.NUMERO_PLAN_ACTION = PLAN_ACTION.NUMERO_PLAN_ACTION AND DEBUT BETWEEN #$date_deb# AND #$date_fin#" ; $rs = odbc_exec($conn,$sql) or die('<br><br><br><br><center>-------- Saisir une période -------- et cliquer sur OK --------<center/>'); $_SESSION['d'] = $_POST['d']; $_SESSION['f'] = $_POST['f']; if (isset ($_POST['TYPE'])) { $TYPE = $_POST['TYPE']; } else { $TYPE = ''; } if(isset($_POST['CONSTAT'])) { $CONSTAT = $_POST['CONSTAT']; } else { $CONSTAT = ''; } if (isset($_POST['DEMANDE'])) { $DEMANDE = $_POST['DEMANDE']; } else { $DEMANDE = ''; } if (isset($_POST['CAUSE'])) { $CAUSE = $_POST['CAUSE']; } else { $CAUSE = ''; } if (isset($_POST['IMPUTATION'])) { $IMPUTATION = $_POST['IMPUTATION']; } else { $IMPUTATION = ''; } $sql1 = " SELECT * FROM ARRET_CHAINE WHERE DEBUT BETWEEN #$date_deb# AND #$date_fin# AND TYPE = '$TYPE' AND CONSTAT = '$CONSTAT' AND DEMANDE = '$DEMANDE' AND CAUSE = '$CAUSE' AND IMPUTATION = '$IMPUTATION'"; $rs = odbc_exec($conn,$sql1) or die('<br><br><br><br><center>-------- Saisir une période -------- et cliquer sur OK --------<center/>'); }
merci d'avance
Voilà, les quelques modifications sont en gras. Bien sur, j'ai adapté ton code uniquement pour le select "TYPE" ;)
----
echo "<br><center>";
$sql = "SELECT DESIGNATION FROM TYPE";
$req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql);
echo " <select name= 'TYPE' size=\"1\" onchange=\"active(this)\">";
echo '<option value=""></option>';
while($data = odbc_fetch_array($req))
{
if ($data["DESIGNATION"] == $_POST['TYPE'])
{
$selected = ' selected="selected" ';
}
else {
$selected = '';
}
echo "\n <option value=\"".$data["DESIGNATION"]."\" " . $selected . ">".$data["DESIGNATION"]."</option>";
}
//echo "<option value='' selected='selected'> </option>";
//echo "<option value='' selected='selected'>Type</option>";
echo '</select>';
et pour les tris :
if (isset($_POST['d']) && isset($_POST['f']))
{
$sql = "SELECT *
FROM ARRET_CHAINE, PLAN_ACTION
WHERE ARRET_CHAINE.NUMERO_PLAN_ACTION = PLAN_ACTION.NUMERO_PLAN_ACTION
AND DEBUT BETWEEN #$date_deb#
AND #$date_fin#" ;
$rs = odbc_exec($conn,$sql) or die('<br><br><br><br><center>-------- Saisir une période -------- et cliquer sur OK --------<center/>');
$_SESSION['d'] = $_POST['d'];
$_SESSION['f'] = $_POST['f'];
//if (isset ($_POST['TYPE']))
//{
if(!empty($_POST['TYPE'])){
$TYPE = $_POST['TYPE'];
}
else
{
$TYPE = '';
}
if(isset($_POST['CONSTAT']))
{
$CONSTAT = $_POST['CONSTAT'];
}
else
{
$CONSTAT = '';
}
if (isset($_POST['DEMANDE']))
{
$DEMANDE = $_POST['DEMANDE'];
}
else
{
$DEMANDE = '';
}
if (isset($_POST['CAUSE']))
{
$CAUSE = $_POST['CAUSE'];
}
else
{
$CAUSE = '';
}
if (isset($_POST['IMPUTATION']))
{
$IMPUTATION = $_POST['IMPUTATION'];
}
else
{
$IMPUTATION = '';
}
$sql1 = " SELECT *
FROM ARRET_CHAINE
WHERE DEBUT BETWEEN #$date_deb#
AND #$date_fin#";
if(!empty($TYPE)) $sql1.= "AND TYPE = '$TYPE'";
$sql1.= " AND CONSTAT = '$CONSTAT'
AND DEMANDE = '$DEMANDE'
AND CAUSE = '$CAUSE'
AND IMPUTATION = '$IMPUTATION'";
$rs = odbc_exec($conn,$sql1) or die('<br><br><br><br><center>-------- Saisir une période -------- et cliquer sur OK --------<center/>');
}
----
echo "<br><center>";
$sql = "SELECT DESIGNATION FROM TYPE";
$req = odbc_exec($conn,$sql) or die('Erreur SQL : <br />'.$sql);
echo " <select name= 'TYPE' size=\"1\" onchange=\"active(this)\">";
echo '<option value=""></option>';
while($data = odbc_fetch_array($req))
{
if ($data["DESIGNATION"] == $_POST['TYPE'])
{
$selected = ' selected="selected" ';
}
else {
$selected = '';
}
echo "\n <option value=\"".$data["DESIGNATION"]."\" " . $selected . ">".$data["DESIGNATION"]."</option>";
}
//echo "<option value='' selected='selected'> </option>";
//echo "<option value='' selected='selected'>Type</option>";
echo '</select>';
et pour les tris :
if (isset($_POST['d']) && isset($_POST['f']))
{
$sql = "SELECT *
FROM ARRET_CHAINE, PLAN_ACTION
WHERE ARRET_CHAINE.NUMERO_PLAN_ACTION = PLAN_ACTION.NUMERO_PLAN_ACTION
AND DEBUT BETWEEN #$date_deb#
AND #$date_fin#" ;
$rs = odbc_exec($conn,$sql) or die('<br><br><br><br><center>-------- Saisir une période -------- et cliquer sur OK --------<center/>');
$_SESSION['d'] = $_POST['d'];
$_SESSION['f'] = $_POST['f'];
//if (isset ($_POST['TYPE']))
//{
if(!empty($_POST['TYPE'])){
$TYPE = $_POST['TYPE'];
}
else
{
$TYPE = '';
}
if(isset($_POST['CONSTAT']))
{
$CONSTAT = $_POST['CONSTAT'];
}
else
{
$CONSTAT = '';
}
if (isset($_POST['DEMANDE']))
{
$DEMANDE = $_POST['DEMANDE'];
}
else
{
$DEMANDE = '';
}
if (isset($_POST['CAUSE']))
{
$CAUSE = $_POST['CAUSE'];
}
else
{
$CAUSE = '';
}
if (isset($_POST['IMPUTATION']))
{
$IMPUTATION = $_POST['IMPUTATION'];
}
else
{
$IMPUTATION = '';
}
$sql1 = " SELECT *
FROM ARRET_CHAINE
WHERE DEBUT BETWEEN #$date_deb#
AND #$date_fin#";
if(!empty($TYPE)) $sql1.= "AND TYPE = '$TYPE'";
$sql1.= " AND CONSTAT = '$CONSTAT'
AND DEMANDE = '$DEMANDE'
AND CAUSE = '$CAUSE'
AND IMPUTATION = '$IMPUTATION'";
$rs = odbc_exec($conn,$sql1) or die('<br><br><br><br><center>-------- Saisir une période -------- et cliquer sur OK --------<center/>');
}
franchement merci beaucoup tu me sauve merci par contre saurais tu comment vider une variable session pas avec unset() ni destroy ou alors je l'ai place mal stp