Requete php ac atribut selectioné dans liste

Fermé
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 - 19 févr. 2009 à 15:42
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 - 19 févr. 2009 à 18:20
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

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

8 réponses

drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
19 févr. 2009 à 16:46
up
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
19 févr. 2009 à 16:50
Qu'est ce qui ne fonctionne pas ?

Lu comme ça rapidement, tu as l'air d'utiliser la bonne méthode
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
19 févr. 2009 à 17:00
Bah en fait je suppose que ce sont mes conditions qui sont fausse

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
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
19 févr. 2009 à 17:11
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 *
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
19 févr. 2009 à 17:48
je n'ai pas tout compris je sais que c'est culoter mais pouvez vous adapter votre solution a mon code svp?

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
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
19 févr. 2009 à 17:57
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/>');

}


0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
19 févr. 2009 à 18:17
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
0
IpIpIpIpOne Messages postés 436 Date d'inscription mercredi 18 février 2009 Statut Membre Dernière intervention 24 mai 2009 116
19 févr. 2009 à 18:20
heu .. normalement avec unset ça devrait marcher ...

unset($_SESSION['a_supprimer']);

Je ne pense pas qu'il existe une autre méthode que celle là vu que la fonction unset est faite pour ça ...

ou si c juste pour la vider sans la supprimer ...

$_SESSION['a_vider'] = '';

?
0