Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
736 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Javascript/PHP] Problème de retour chariot dans un cookie

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Javascript/PHP] Problème de retour chariot dans un cookie

n°2095674
Nicolas_83
Posté le 17-08-2011 à 16:04:53  profilanswer
 

Bonjour à tous,
 
Bon pour commencer je suis pas développeur mais technicien mon niveau de développement est celui d'un autodidacte très curieux  :D .
Pour la réalisation d'un outillage pour mes collègues j'ai entrepris la réalisation d'une page WEB (PHP/JS) afin de rendre le service demandé.
A la base je ne connais que le PHP mais depuis 3/4 semaines je me suis mis au Javascript :
 1 - parce que je me suis servis du code d'un collègue comme base et que ce dernier à utilisé JS.
 2 - parce que j'avais besoin de contrôle dynamique sans recharger la page à chaque fois.
 
Le but :
L'outil que je développe est une page contenant des menus déroulant type <select></select>, 2 menu par choix (liste source -> liste destination). La liste source étant une extraction d'une base de donnée et la liste destination le 'réceptacle' du choix sélectionné.
 
Une fois tous les choix effectué le bouton "Envoyer" du formulaire deviens "Enable" (c'est là que j'utilise JS entre autre). Cela me permet de faire mes contrôles sur mes champs obligatoires et nombres minimum de caractères dans mes champs textarea.
Lorsque le technicien clique sur "Envoyer" cela ouvre une 2ème page qui se charge de structurer et d'entrée en base les données saisies.
Pour se faire j'utilise des cookies, j'ai opté pour cette solution pour "le fun" car je n'avais jamais utilisé les cookies au part avant, et parce que je trouve ça plus propre qu'un $_POST $_GET.
 
Je vous sollicite donc sur le problème suivant :
Pour les champs de type liste pas de soucis chaque valeur sélectionné est concaténé sous forme de chaine avec des séparateurs de mon choix.
Le soucis se situe avec le contenu des champs TEXTAREA. Lorsque je crée mon Cookie avec ce champs les retours chariots ne sont pas interprétés et sont tronqués.
Les cookies sont créés en javascript avant l'envoi du formulaire par le bouton "Envoyer" et sont récupérer en PHP dans la page de contrôle par l'intermédiaire de la variable $_COOKIE
 
QUESTION :
Comment faire pour prendre le contenu de mon TEXTAREA et le placer dans un cookie sans perte de donnée lié aux retours chariot ??
 
Je vais essayé de vous sortir en une seul fois tous les scripts qui permettent de réalisé cette opération.
 
PS : je viens de m'apercevoir que sous IE 7 (WinXP) et IE8 (Seven) cela fonctionne et sous Firefox 5.x mes données sont tronquées.
 
Voici, dans ma page de destination, ce que me donne un print_r($_COOKIE) sous IE8 :

Code :
  1. Array
  2. (
  3.     [list2Applications_Sensibles] => /-/1@ARCOLE/-/2@ETEBAC5/-/3@FLORENCE/-/4@INTERNET/-/
  4.     [list2Applications_Non_Sensibles] => /-/3@Nagios/-/4@Soler/-/5@Base de comp�tence/-/6@Bestiole/-/7@Citemis/-/
  5.     [list2Canal_de_detection] => /-/4@Direct/-/
  6.     [list2Intervenant] => /-/3@LAPRUN/-/
  7.     [Descriptif] => /-/data_text@eraseCookieeraseCookieeraseCookie__popo__poiugr/-/
  8.     [Impact] => /-/data_text@eraseCookieeraseCookieeraseCookie__popo__poiugr/-/
  9.     [Cause] => /-/data_text@eraseCookieeraseCookieeraseCookie__popo__poiugr/-/
  10. )


 
et print_r($_COOKIE) sour Firefox :

Code :
  1. Array
  2. (
  3.     [Descriptif] => /-/data_text@eraseCookieeraseCookieeraseCookiepopo
  4.     [Impact] => /-/data_text@eraseCookieeraseCookieeraseCookie
  5.     [Cause] => /-/data_text@eraseCookieeraseCookieeraseCookie
  6.     [list2Applications_Sensibles] => /-/2@ETEBAC5/-/3@FLORENCE/-/4@INTERNET/-/5@LNA/-/
  7.     [list2Applications_Non_Sensibles] => /-/4@Soler/-/5@Base de comp�tence/-/6@Bestiole/-/7@Citemis/-/
  8.     [list2Canal_de_detection] => /-/4@Direct/-/
  9.     [list2Intervenant] => /-/30@BENACHOUR/-/
  10. )


 
explication :
[list2Canal_de_detection] => /-/4@Direct/-/
[list2Canal_de_detection] = Nom du champs ou de la liste
/-/xxx/-/ = '/-/' séparateur encadrant chacune des valeurs possible pour un champs/liste, il me sert de repère pour le traitement dans la page de destination
4@Direct = le @ sert de séparateur entre le numéros d'ID dans ma base Mysql et sa valeur associé

mood
Publicité
Posté le 17-08-2011 à 16:04:53  profilanswer
 

n°2095694
Nicolas_83
Posté le 17-08-2011 à 16:40:54  profilanswer
 

Voici la fonction de création des cookies (un standard trouvé sur le net, qui fonctionne très bien mais légèrement modifié) :
 

Code :
  1. function setCookie(name,value,minutes) {
  2. if (minutes) {
  3.  var date = new Date();
  4.  date.setTime(date.getTime()+(minutes*60*1000));
  5.  var expires = "; expires="+date.toGMTString();
  6. }
  7. else var expires = "";
  8. document.cookie = name+"="+value+expires+"; path=/";
  9. }


 
Voici les fonctions qui ajoute les séparateurs avant ajout dans le cookie

Code :
  1. function cookie_test_list(value1,nameCookie){
  2. var list = '/-/';
  3. for(i = 0; i<value1.length; i++){
  4.  list += value1.options[i].value+'@'+value1.options[i].text+'/-/';
  5. }
  6. setCookie(nameCookie,list,'10');
  7. }
  8. function cookie_test_text(value1,nameCookie){
  9. value_cooki = '/-/data_text@';
  10. value_cooki += value1.value;
  11. value_cooki += '/-/';
  12. setCookie(nameCookie,value_cooki,'10');
  13. }


 
La fonction qui crée tous les cookies lorsque les conditions sont remplies
 

Code :
  1. function create_all_cookies(){
  2. cookie_test_list(document.myForm.list2Applications_Sensibles,'list2Applications_Sensibles');
  3. cookie_test_list(document.myForm.list2Applications_Non_Sensibles,'list2Applications_Non_Sensibles');
  4. cookie_test_list(document.myForm.list2Canal_de_detection,'list2Canal_de_detection');
  5. cookie_test_list(document.myForm.list2Intervenant,'list2Intervenant');
  6. cookie_test_text(document.myForm.Descriptif,"Descriptif" );
  7. cookie_test_text(document.myForm.Impact,"Impact" );
  8. cookie_test_text(document.myForm.Cause,"Cause" );


 
 
et voici le code de la page de traitement, pour l'instant je ne fait qu'afficher les données sous forme de tableau afin d'être sûr que tout est OK avant de faire le traitement et l'INSERT en base :
 
 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <html>
  3. <head>
  4. <title>Test Cookie</title>
  5. <?php
  6. function traitement_cookies($lst_cookies,$titre){
  7.  $arr_appsensible = split('/-/',$lst_cookies);
  8.  $arr_result = '<table border="1"><th colspan="2">'.$titre.'</th>';
  9.  foreach($arr_appsensible as $elmt){
  10.   $arr_elmt = NULL;
  11.   $arr_elmt = split('@',$elmt);
  12.   if($arr_elmt[0] != ''){
  13.    $arr_result .= '<tr><td>ID = '.$arr_elmt[0].'</td><td> valeur = '.$arr_elmt[1].'</td></tr>';
  14.   }
  15.  }
  16.  $arr_result .= '</table>';
  17.  return $arr_result;
  18. }
  19. $i = 0;
  20. foreach($_COOKIE as $key => $value){
  21.  if(strlen($value) > 3 ){
  22.   $lst[$i] = traitement_cookies($value,$key);
  23.  }
  24.  $i++;
  25. }
  26. ?>
  27. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  28. <meta http-equiv="CONTENT-LANGUAGE" CONTENT="fr">
  29. </head>
  30. <body>
  31. <pre>
  32. <?php print_r($_COOKIE);?>
  33. <h1>Test de cookie</h1>
  34. <?php
  35. if(count($lst) > 0 ){
  36.  foreach($lst as $popo){ echo $popo; }
  37. }
  38. ?>
  39. </pre>
  40. </body>
  41. </html>



Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [Javascript/PHP] Problème de retour chariot dans un cookie

 

Sujets relatifs
Petit moteur en javascript[PHP] réflection avant developpement
[PHP/MYSQL] Updater la valeur des radio dans une base [Résolu]Démon PHP avec du fork :)
[C] Problème fscanf avec stringprobleme instalation open modelSphere3,1
probleme de dessin du mcd[FLASH] Problème de mise en forme du texte
Google Maps - problème infobox sous IEprobleme requete sql jointure entre les tables
Plus de sujets relatifs à : [Javascript/PHP] Problème de retour chariot dans un cookie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR