IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

champ posté en les gardant en mémoire dans liste déroulante


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut champ posté en les gardant en mémoire dans liste déroulante
    Bonjour,

    Je vous explique mon problème
    J'ai ma page.php de départ je fait un method post sur elle meme

    Le principe de cette page est de faire des tris.

    Pour cela il faut rentrer une période

    voila comment le champ est définit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <input name='d' value='<?php if (isset($_POST['d']))
    									{
    									echo $_POST['d'];
    									}
    									else
    									{
    									echo "Début de période";
    									} ?>'class='calendrier' type='date'>
    Maintenant la ou je bloque :

    Donc dans cette page il y a 5 liste déroulante dans lesquels je dois garder leur donnée en mémoire quand chaque tris est effectué

    Et la je ne vois pas ce que je dois modifié dans ma liste déroulante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     $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)) 
    			{
    				echo "\n <option value=\"".$data["DESIGNATION"]."\" >".$data["DESIGNATION"]."</option>";		
    			}
    				echo "<option value='' selected='selected'> </option>";
    				echo "<option value='' selected='selected'>Type</option>";
    	echo '</select>';
    Je ne pense pas que ce problème soit très compliqué mais mon manque de connaissances me bloque voila si vous pouvez m'aider svp

    merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux faire comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while($data = odbc_fetch_array($req)) 
    			{
                          if ($data["DESIGNATION"]) == $valeurselection) {
                                   $selected = ' selected="selected" ';
                           }
                           else {
                                  $selected = '';
                           }
    				echo "\n <option value=\"".$data["DESIGNATION"]."\" " . $selected . ">".$data["DESIGNATION"]."</option>";		
    			}
    Et puis sur tu retires tes deux options selected en dessous.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    merci sabotage pour ta réponse rapide

    Par contre je ne vois pas comment ce code permet que je garde la valeur quand j'appuie sur mon bouton submit...

    J'avais commencé a faire ca mais la boucle while m'embete.

    Ce n'est pas une meilleur solution?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    echo " <select name= 'TYPE' size=\"1\" onchange=\"active(this)\">"; 
    		while($data = odbc_fetch_array($req)) 
    		{
    	             echo '<option value=\'if (isset($_POST[\'TYPE\']))			{
    		echo $_POST[\'TYPE\'];
    		}
    		else
    		{
    		".$data["DESIGNATION"]."
    		}
    		\' >".$data["DESIGNATION"]."</option>';		
    		}
    		echo "<option value='' selected='selected'> </option>";
    		echo "<option value=''selected='selected'>Type</option>";
    	echo '</select>';

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Par contre je ne vois pas comment ce code permet que je garde la valeur quand j'appuie sur mon bouton submit...
    Ta liste reprend toujours la valeur postée, ce n'est pas ce que tu veux ?

    Au passage : dans ton code actuel, tu as deux lignes qui sont indiqués comme selectionnées.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    bah quand je met ton code que je sélectionne une valeur dans la liste déroulante et que je clic sur le bouton ok qui est un submit la valeur sélectionné précédemment n'est pas selectionné après

    je sais pas si je suis clair

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu l'as copié tel quel forcemment ca ne marche pas

    Il faut remplacer $valeurselection par ce que tu veux en fonction des listes.

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    ah d'accord mdr

    donc je remplace ta variable par un $_POST['...']

    par exemple?

    edit : effectivement ca marche bcp mieux


    par contre pour une question d'esthétique je ne peut vraiment pas rajouter ces deux lignes?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "<option value='' selected='selected'> </option>";
    echo "<option value='' selected='selected'>Type</option>";

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne vois pas bien a quoi servent ces lignes, tu ne peux pas avoir plusieurs lignes selectionnées.

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    Elles servent d'une part a l'esthétique
    ensuite c'est une aide pour l'utilisateur car il sait quelle liste correspond a quel liste.

    Enfin elle me permettrait aussi a faire ma requete car je galère regarde

    Donc j'ai ma première liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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 ensuite par raport a ce qui a été coché je dois faire une requete le principe des tris lol

    et donc la requete doit changer a chaque fois que le choix change et je trouve ca assez dure alors j'ai essayé de faire quelquechose mais ca ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    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/>');
     
    	}
    Si tu aurais une idée pour effectuer ce que je veut faire je suis toute ouïe lol

  10. #10
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    je te montre la démarche mais je te laisse écrire ton code

    Admettons que je suis dans une base de données de prénoms et de ville.
    Je voudrais, par exemple, tous les Robert ET/OU de Paris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
    if( isset($_POST['action']) && $_POST['action'] == "trier" ) {
    // je te le fais en MySQL pcq j'ai plus l'habitude ;)
    $sql = "SELECT * FROM ma_base";
    $sql_more = "";
    if( !isset($_POST['prenom']) && !empty($_POST['prenom']) )
         $sql_more .= " WHERE prenom = '".$_POST['prenom']."' ";
    }
    if( !isset($_POST['ville']) && !empty($_POST['ville']) )
         $sql_more .= (empty($sql_more)) ? " WHERE " : " AND ";
         $sql_more .= " ville= '".$_POST['ville']."' ";
    }
     
    $sql .= $sql_more; 
    // Si on a envoyé 'prenom' ET 'ville' ça donnera (avec ROBERT et PARIS) :
    // SELECT * FROM ma_base WHERE prenom = 'Robert' AND ville= 'Paris'
    $q = mysql_query($sql);
     
    // requete DB ici, je récup tous mes prénoms dans un array => $prenom
    // requete DB ici, je récup toutes mes villes dans un array => $villes
    // --
    // Affichage du formulaire
    ?>
    <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
    <select name="prenom">
    <option value="">prénom</option>
    <?php
    foreach( $prenom AS $v ) {
           echo '<option value="'.$v.'">'.$v.'</option>';
    }
     
    // Faire pareil pour les villes
    ?>
    </select>
    <input type="hidden" name="action" value="trier" />
    <input type="submit" value="Envoyer" />
    </form>

    PS : Pour rajouter du ORDER BY c'est pareil

  11. #11
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Points : 61
    Points
    61
    Par défaut
    merci beacuoup ca marche nikel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/07/2009, 13h06
  2. [MySQL] Extraire les données à partir d'une liste déroulante dans une autre liste deroulante
    Par Amel_B dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 26/11/2008, 13h20
  3. Réponses: 2
    Dernier message: 03/12/2007, 09h57
  4. Champ caché dans liste déroulante
    Par Dobyan08 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/08/2006, 18h18
  5. mettre par défaut un champ dans liste déroulante
    Par zouzou1010 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/05/2006, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo