probleme de passage de parametre avec accent.

probleme de passage de parametre avec accent. - PHP - Programmation

Marsh Posté le 08-07-2008 à 16:24:54    

Bonjour,
 
Voici deux petits scripts tout simple qui fonctionne sous Easy PHP (windows)
 

Code :
  1. <form name="form1" method="post" action="test3.php">
  2.   <select name="test" size="1">
  3.     <option>f&eacute;vrier</option>
  4.   </select>
  5.   <input type="submit" name="Submit" value="Envoyer">
  6. </form>


 
ensuite mon but est de récupérer la valeur "février" sur test3.php :
 

Code :
  1. <?php
  2. $mois = $_POST['test'];
  3. echo $mois;
  4. if($mois == "février" ){
  5. echo "ok";
  6. }
  7. if($mois == "f&eacute;vrier" ){
  8. echo "ok1";
  9. }
  10. if($mois == "fevrier" ){
  11. echo "ok2";
  12. }
  13. ?>


 
Lorsque je stocke ces deux petits fichiers sous easy php j'obtiens : févrierok
 
Alors que quand j'insère celui ci sous le serveur Apache qui se trouve sur une machine linux fedora 8, j'obtiens uniquement février
Il ne rentre dans aucune des boucles je ne comprend pas pourquoi...
 
Avez vous une solution ?

Reply

Marsh Posté le 08-07-2008 à 16:24:54   

Reply

Marsh Posté le 08-07-2008 à 16:51:35    

<?php
$mois = $_POST['test'];
echo $mois;
if($mois == "février" ){
echo "ok";
}
if($mois == "f&eacute;vrier" ){
echo "ok1";
}
if($mois == "fevrier" ){
echo "ok2";
}
?>
 
test ça pour voir si ça fonctionne avec cet façon de coder.
 
<?php
$mois = $_POST['test'];
if($mois == "février" ){
echo $mois."ok";
}
elseif($mois == "f&eacute;vrier" ){
echo $mois."ok1";
}
elseif($mois == "fevrier" ){
echo $mois."ok2";
}
else{
echo $mois;
}
?>


Message édité par guiguich le 08-07-2008 à 16:53:33
Reply

Marsh Posté le 08-07-2008 à 17:04:11    

Merci de ta réponse,
J'ai testé et j'obtiens la même chose.

Reply

Marsh Posté le 08-07-2008 à 18:12:52    

johnson950 a écrit :

Bonjour,
 
Voici deux petits scripts tout simple qui fonctionne sous Easy PHP (windows)
 

Code :
  1. <form name="form1" method="post" action="test3.php">
  2.   <select name="test" size="1">
  3.     <option>f&eacute;vrier</option>
  4.   </select>
  5.   <input type="submit" name="Submit" value="Envoyer">
  6. </form>


 
ensuite mon but est de récupérer la valeur "février" sur test3.php :
 

Code :
  1. <?php
  2. $mois = $_POST['test'];
  3. echo $mois;
  4. if($mois == "février" ){
  5. echo "ok";
  6. }
  7. if($mois == "f&eacute;vrier" ){
  8. echo "ok1";
  9. }
  10. if($mois == "fevrier" ){
  11. echo "ok2";
  12. }
  13. ?>


 
Lorsque je stocke ces deux petits fichiers sous easy php j'obtiens : févrierok
 
Alors que quand j'insère celui ci sous le serveur Apache qui se trouve sur une machine linux fedora 8, j'obtiens uniquement février
Il ne rentre dans aucune des boucles je ne comprend pas pourquoi...
 
Avez vous une solution ?


 
 [:mlc2]  
 
Normal, parce que ton code affiche le mois transmis par POST et teste si c'est février (dans ce cas il affiche ok) , f&eacute;vrier (dans ce cas il affiche ok1) et fevrier (dans ce cas il affiche ok2).
Vire donc les echo "ok";
Et le mois est contenu dans la variable $_POST['test']


Message édité par Profil supprimé le 08-07-2008 à 18:17:20
Reply

Marsh Posté le 09-07-2008 à 09:13:15    

Bonjour,
 
merci de ta réponse!
Cependant, je pense que je me suis mal exprimé, mon but est bien de récupérer (ceci est effectué avec la méthode POST) puis je dois savoir qu'elle est cette données pour ensuite récuperer le nombre de jours de ce mois.
Or je récupère bien "février" mais ensuite pas moyen de rentrer dans une de ces boucles pour savoir si ce que je récupere est correct.

Reply

Marsh Posté le 09-07-2008 à 09:33:55    

Voici mon code en entier avec le charset :
 

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. <title>Document sans titre</title>
  6. </head>
  7. <body>
  8. <form name="form1" method="post" action="test3.php">
  9.   <select name="test" size="1">
  10.     <option value="f&eacute;vrier">f&eacute;vrier</option>
  11.   </select>
  12.   <input type="submit" name="Submit" value="Envoyer">
  13. </form>
  14. </body>
  15. </html>


 
et le second :

Code :
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. <title>Document sans titre</title>
  6. </head>
  7. <body>
  8. <?php
  9. $mois = $_POST['test'];
  10. if($mois == "février" ){
  11. echo $mois."ok";
  12. }
  13. elseif($mois == "f&eacute;vrier" ){
  14. echo $mois."ok1";
  15. }
  16. elseif($mois == "fevrier" ){
  17. echo $mois."ok2";
  18. }
  19. else{
  20. echo $mois;
  21. }
  22. ?>
  23. </body>
  24. </html>

Reply

Marsh Posté le 09-07-2008 à 10:27:49    

Bonjour,
 
Alors j'ai peut etre trouvé une solution (bricolage)
 
Sur test3.php, lorsque je récupere la valeur $mois :
 

Code :
  1. $mois = $_POST['test'];


 
je le remplace par :

Code :
  1. $mois = utf8_decode($_POST['test']);


 
lorsque je fais un echo du résultat je me retrouve avec un losange à la place du "é" mais ceci me fait rentrer dans la premiere boucle.
J'obtiens donc "f vrierok"
A la place de l'espace vous ajoutez un losange.


Message édité par johnson950 le 09-07-2008 à 10:28:12
Reply

Marsh Posté le 09-07-2008 à 19:05:23    

alors tu remplaces ton if par :
if($mois == utf_encode("février" ) ){

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed