Bonjour,
Voila je rencontre un petit problème avec mon code.
je remplis une liste déroulante avec 3 langues differentes
<td><?php _e('Séléctionner les langues maitrisées :', 'profile') ?></td>
<td>
<?php
//get dropdown saved value
$selected = get_the_author_meta( 'langue', $user->ID );
?>
<select name="langue[]" id="langue" required multiple >
<option value="Francais" <?php echo ($selected == "francais")? 'selected="selected"' : '' ?>>Francais</option>
<option value="Anglais" <?php echo ($selected == "anglais")? 'selected="selected"' : '' ?>>Anglais</option>
<option value="Autre" <?php echo ($selected == "autre")? 'selected="selected"' : '' ?>>Autre</option>
</select>
</td>
le code pour l'update :
update_user_meta( $current_user->ID, 'langue', array_map( 'strip_tags', $_POST['langue'] ) );
j'essaye d'afficher le choix des users après , parce que mon formulaire est utilisé pour ajouter et modifier au même temps , mais ca ne me selectionne rien , pourtant quand je fais un echo de $selected , ca me retourne le resultat voulu, je passe à coté de quelques choses :-S
Hello,
La réponse de Carouge10 est totalement fausse.
Dans le cas d'un select avec le paramètre multiple
, qui existe bel et bien, tu reçois un tableau et il faut effectivement ajouter [] au nom de ta balise.
Ton select
est donc bon.
Peux-tu faire un var_dump
de ta variable $selected
et nous poster le résultat ?
Bonjour tout le monde,
voila le code si ca peut servir :
<select name="langue[]" id="langue" required multiple>
<option value="francais" <?php echo in_array('francais', $selected)? 'selected="selected"' : ''; ?>>francais</option>
<option value="anglais" <?php echo in_array('anglais', $selected)? 'selected="selected"' : ''; ?>>anglais</option>
<option value="autre" <?php echo in_array('autre', $selected)? 'selected="selected"' : ''; ?>>autre</option>
</select>
Bonsoir,
Le select ne te retourne pas un tableau. Donc le "name" ne doit pas être un tableau.
<select name="langue" id="langue" required>
De plus le required multiple n'est pas possible pour un select. (D'ailleurs je ne savais pas qu'il existait)
Merci pour votre réponse,
mais je veux que ca soit un mutli select , il me faut une foreach , mais je sais pas comment l'integrer dans les optiions du select
Merci pour votre réponse encore une fois Guique,
var_dump($selected)= array(2) { [0]=> string(8) "Francais" [1]=> string(7) "Anglais" }
j'ai fait ca :
<select name="langue[]" id="langue" required multiple >
<option value="francais" <?php echo ($selected == "francais")? 'selected="selected"' : '' ?>>francais</option>
<option value="anglais" <?php echo ($selected == "anglais")? 'selected="selected"' : '' ?>>anglais</option>
<option value="autre" <?php echo ($selected == "autre")? 'selected="selected"' : '' ?>>autre</option>
</select>
mais ca donne rien
Tu as lu mon message au dessus ?
Tes if
renvoient false
à chaque fois et c'est normal.
Deuxième indice : case sensitive
j'ai fait ca :
<select name="langue[]" id="langue" required multiple >
<option value="francais" <?php echo ($selected = "francais")? 'selected="selected"' : '' ?>>francais</option>
<option value="anglais" <?php echo ($selected = "anglais")? 'selected="selected"' : '' ?>>anglais</option>
<option value="autre" <?php echo ($selected = "autre")? 'selected="selected"' : '' ?>>autre</option>
</select>
il me selectionne les 3 choix que j'ai même si je choisis une seule,
Rooh dis : tu pourrais essayer de debugguer ton code avant de poster tout de même.
Indice : tu ne fais pas une comparaison dans tes if
.
Je t'ai donné la solution à ton problème. Essaie de trouver par toi même et de debugguer ton code seule.
Use et abuse des var_dump
pour bien comprendre les étapes de ton code.
Passer du temps à debugguer son code, ça peut paraitre pénible mais c'est ce qui te permettra de ne pas refaire l'erreur la prochaine fois et de progresser.
($selected = "francais") ---> ($selected == "francais")
($selected = "anglais") -----> ($selected == "anglais")
@plus
Pierre