Condition php sur un formulaire qui ne passe pas?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par tryan, 14 Mai 2013.

  1. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Bonjour,

    D'un côté j'ai un simple tableau nommé $pays :
    Code:
    $pays = array(
     'AF' => 'Afghanistan',
     'ZA' => 'Afrique du Sud',
    ...
    De l'autre côté une variable nommé $choixdupays qui sort d'une boucle while et qui correspond à la sélection du pays enregistré précédemment par l'utilisateur.
    L'utilisateur souhaite modifier certains éléments enregistrés dont le pays, je procède donc ainsi pour lui ré-afficher les données :
    Code:
    <select id="pays" name="pays">
    <option value="">Sélectionnez votre pays</option>
    <?php
    foreach($pays as $nom){
    	echo '<option value="'.$nom.'"';
    	if(isset($_POST["pays"]) && $_POST["pays"] == $nom){ 
    		echo " selected";
    	} 
    	elseif($choixdupays == $nom){ echo " selected"; }
    	echo '>'.$nom.'</option>'."\n";
    }
    ?>
    </select>
    En supposant que l'utilisateur oubli un champ du formulaire et qu'il est changé son pays, la liste prend la seconde condition en compte au lieu de la première ... pourquoi?
    Si je fais :
    Code:
    if(isset($_POST["pays"])) echo  $_POST["pays"];
    ...j'ai bien la sélection de l'utilisateur mais la première condition n'est pas prise en compte :?:

    C'est quoi le truc?

    Merci

    Edit :

    Je viens de me rendre compte que la condition ne fonctionnait pas seulement si l'utilisateur sélectionnait dans la liste un pays qui se trouve au dessus de son choix précédent ... la je ne pige pas 8O
     
  2. p0k3
    p0k3 WRInaute occasionnel
    Inscrit:
    2 Juin 2010
    Messages:
    314
    J'aime reçus:
    0
    C'est normal, tu parses ton tableau, à chaque valeur du tableau, tu vérifies s'il est égal au POST ET à la variable $choixdupays !

    Si tu veux que ton select affiche la valeur du POST, commence par faire un :
    $choixdupays = $_POST['pays'];
     
  3. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    La variable $choixdupays sort d'une boucle while et correspond au choix enregistré précédemment par l'utilisateur.
    Si je veut comparer la valeur du POST aux éléments de la boucle foreach, il faut bien que j'utilise le nom du select soit $_POST["pays"] .. non ?
     
  4. lambi521
    lambi521 WRInaute passionné
    Inscrit:
    15 Juin 2010
    Messages:
    1 463
    J'aime reçus:
    0
    Faudrait revoir ton if/elseif, parce que dans le 1er cas tu echo selected, et dans le 2ème cas tu... echo selected, problème de conception

    Code:
    if ( (isset($_POST['pays']) && ($_POST['pays'] == $nom)) || ($choixdupays == $nom) ) {
          echo " selected";
       }
     
  5. p0k3
    p0k3 WRInaute occasionnel
    Inscrit:
    2 Juin 2010
    Messages:
    314
    J'aime reçus:
    0
    Volontairement, j'ai affecté une valeur à mon POST et une valeur à mon $choixpays pour te montrer ce que fait la boucle :

    Code:
    <?php
    	$choixdupays = 'Afrique du Sud';
    	$_POST["pays"] = 'Afghanistan';
    	$pays = array(
    	'AF' => 'Afghanistan',
    	'ZA' => 'Afrique du Sud'
    	);
    	 
    	foreach($pays as $nom){
    	   echo '<option value="'.$nom.'"';
    	   if(isset($_POST["pays"]) && $_POST["pays"] == $nom){ 
    	      echo " selected";
    	   } 
    	   elseif($choixdupays == $nom){ echo " selected"; }
    	   echo '>'.$nom.'</option>'."\n";
    	}
    ?>
    
    en sorti, je vais avoir :

    Code:
    <option value="Afghanistan" selected>Afghanistan</option>
    <option value="Afrique du Sud" selected>Afrique du Sud</option>
    
    J'ai deux valeurs "selected" dans mon select ! Naturellement HTML prend la dernière selected !
     
  6. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Ok, j'y voit un peut plus claire :mrgreen: et j'ai eu beaucoup de mal à comprendre la logique..

    @lambi521 : J'ai testé votre solution et ça donne le même résultat décrit par le dernier poste de @p0k3, à savoir 2 "selected". Pour résoudre ce problème, j'ai procédé de la façon suivante, dite-moi ce que vous en pensez :
    Code:
    <?php
    foreach($pays as $nom){
    	echo '<option value="'.$nom.'"';
    	//Si POST existe et différent de ce qu'il y a en BD
    	if(isset($_POST["pays"]) && $_POST["pays"] != $choixdupays){
    	//$selection vaut POST
    		$selection = $_POST["pays"];
    	}
    	//Sinon $selection vaut ce qu'il y a en BD
    	else{
    		$selection = $choixdupays;
    	}
    	//Si $selection existe et est strictement égal à la valeur du formulaire
    	if(isset($selection) && $selection == $nom){ 
    		echo " selected";
    	} 
    	echo '>'.$nom.'</option>'."\n";
    }
    ?>
    
     
Chargement...
Similar Threads - Condition php Forum Date
PHP : Condition ternaire en doublon Développement d'un site Web ou d'une appli mobile 31 Mai 2018
conditions php Développement d'un site Web ou d'une appli mobile 19 Mars 2017
Améliorer une suite de conditions php Développement d'un site Web ou d'une appli mobile 10 Novembre 2016
Condition mysql/php Développement d'un site Web ou d'une appli mobile 12 Mai 2014
[PHP] Condition et include Développement d'un site Web ou d'une appli mobile 31 Janvier 2013
[Wordpress] Php tag conditionnel Développement d'un site Web ou d'une appli mobile 8 Avril 2012
Condition php pour exclure un département Développement d'un site Web ou d'une appli mobile 5 Mars 2012
Aide pour des conditions php Développement d'un site Web ou d'une appli mobile 31 Janvier 2012
Nofollow sur phpbb3 sauf si condition remplie ? Développement d'un site Web ou d'une appli mobile 6 Octobre 2010
[Résolu] Php condition avec test sur url Développement d'un site Web ou d'une appli mobile 14 Janvier 2010
Condition php Développement d'un site Web ou d'une appli mobile 27 Juin 2009
PHP for à double conditions Développement d'un site Web ou d'une appli mobile 6 Juin 2008
XML et condition php Développement d'un site Web ou d'une appli mobile 6 Septembre 2007
[PHP] Condition : ça veut pô... :'( Développement d'un site Web ou d'une appli mobile 10 Août 2007
[Résolu] Afficher du javascript en php sous condition Développement d'un site Web ou d'une appli mobile 21 Juillet 2007
PHP Dernier enregistrement + condition Développement d'un site Web ou d'une appli mobile 25 Janvier 2007
Condition URL Rewriting: *.php => *.html URL Rewriting et .htaccess 31 Août 2006
Problème avec des conditions en PHP Développement d'un site Web ou d'une appli mobile 30 Juin 2006
[Résolu] Probleme pour faire une condition en PHP Développement d'un site Web ou d'une appli mobile 26 Avril 2006
Problème de conditions en PHP avec mysql_result Développement d'un site Web ou d'une appli mobile 5 Janvier 2006