Accents liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Accents liste déroulante

Re: Accents liste déroulante

par yeste64 » 26 avr. 2011, 11:09

Bonjour,

C'est donc qu'il y a un retour chariot dans $mot. Utilises trim($mot) pour le supprimer dans la comparaison.

(http://fr2.php.net/manual/fr/function.trim.php)
En effet ça marche parfaitement :) Merci encore à toi et à bientôt!

Re: Accents liste déroulante

par Mazarini » 26 avr. 2011, 11:03

Bonjour,

C'est donc qu'il y a un retour chariot dans $mot. Utilises trim($mot) pour le supprimer dans la comparaison.

(http://fr2.php.net/manual/fr/function.trim.php)

Re: Accents liste déroulante

par yeste64 » 26 avr. 2011, 11:01

Je viens de comprendre!
En fait, mon tableau de mots correspondait à la première ligne d'un fichier texte (qui correspondait elle aux titres des colonnes du fichier texte).
Et le mot accentué en question était le dernier de la ligne, ce qui veut dire que quand je lisais la première ligne du fichier texte et que je la stockais dans un tableau, je stockais aussi le retour à la ligne avec le dernier mot...
Comment faire pour ne pas le stocker d'ailleurs ??

[PS: Merci déjà beaucoup de ton aide Mazarini! Hier j'ai cherché toute la journée sans avoir pensé à regarder le code source de la page html, merci encore à toi!

Re: Accents liste déroulante

par yeste64 » 26 avr. 2011, 10:54

Bonjour,

Vérifie les valeurs dans le source de la page HTML, pas dans la liste.
Fais un echo '",$motChoisi,'"'; pour voir les blancs avant et après. Pour $mot tu as déjà > et < pour bien les déliminer.
Alors, $motChoisi ne contient pas d'espaces blancs ni avant ni après. En revanche, mon code source de la liste déroulante affiche tous les <option>...</option><option>...</option> etc. sur la même ligne, et au moment d'arriver au mot accentué, il va à la ligne juste après, comme ceci :
<select>
<option>...</option><option>...</option><option>motAccentué
</option></select>

Re: Accents liste déroulante

par Mazarini » 26 avr. 2011, 10:44

Bonjour,

Vérifie les valeurs dans le source de la page HTML, pas dans la liste.
Fais un echo '",$motChoisi,'"'; pour voir les blancs avant et après. Pour $mot tu as déjà > et < pour bien les déliminer.

Re: Accents liste déroulante

par yeste64 » 26 avr. 2011, 10:23

Non je n'ai pas l'égalité.
J'ai donc changé le contenu de ma boucle pour l'avoir :
Je fais un utf8_encode($mot) à chaque tour de boucle car jusqu'à maintenant je ne le faisais qu'à l'affichage.
Je me suis dit qu'ainsi le $mot comparé au $motChoisi serait encodé correctement mais ça ne marche toujours pas...
foreach ($tableauDeMots as $mot)
{
        $mot= utf8_encode($mot);
        echo "<option";
        if (isset($motChoisi) && $mot == $motChoisi){
                echo ' selected';
        }
        echo ">". $mot ."</option>";
}

Re: Accents liste déroulante

par Mazarini » 26 avr. 2011, 10:17

Bonjour,

Pour ($mot == $motChoisi), as tu vérifié que tu a l'égalité en tenant compte d'éventuelles modifications lié à HTML comme &ecute; pour é ?

Accents liste déroulante

par yeste64 » 26 avr. 2011, 09:41

Bonjour à tous.
Je galère sur un problème d'accents depuis hier..
Voici mon problème :
Je possède un tableau de mots pouvant être accentués. Ce tableau me sert à alimenter une liste déroulante. Lorsque l'utilisateur fait son choix dans la liste, la valeur est stockée dans une variable de session dans la page pointée par le formulaire de la liste déroulante. Sur cette même page, l'utilisateur a possibilité de revenir à l'écran précédent pour pouvoir modifier son choix dans la liste déroulante.
Le problème : je stock donc l'option sélectionnée dans la liste et la mémorise dans une variable de session. Lorsque l'utilisateur revient sur le formulaire précédemment rempli, je pré-sélectionne le champ choisi auparavant dans la liste. Pour ce faire, je compare chaque valeur du tableau (qui alimente la liste déroulante) avec la valeur de la variable de session, et si elles sont égales, j'écris "checked" dans la balise <option> de ma liste déroulante. Sauf que lorsque l'utilisateur a choisi un mot accentué, le pré-remplissage ne marche pas... Pourtant, si j'affiche la valeur de la variable de session, le mot accentué apparaît sans soucis...
Voici le bout de code correspondant :
if(isset($_SESSION['motChoisi'])){
	$motChoisi= $_SESSION['motChoisi'];

        echo $_SESSION['motChoisi']; //Affiche correctement le mot accentué
        echo $motChoisi; //Affiche correctement le mot accentué
}


foreach ($tableauDeMots as $mot)
{
	echo "<option";
	if (isset($motChoisi) && $mot == $motChoisi){
		echo ' selected';
	}
	echo ">". utf8_encode($mot) ."</option>";
}
Merci d'avance à tous ceux qui essaieront de m'aider!