Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Prb des caractères spéciaux avec php

Envoyé par : servlet1

Date : 19/04/2006 01:20

normalement je devellope en java et c ma première app en php...!!!

j'ai un formulaire en XUL texte + combox: normalement je fait un simple ajout ds ma table grace a sql "INSERT..." et la Methode c envoyer un tableau js vers un tableau php .....

$champ_val = unserialize(stripslashes($_POST["champ_val"]));

le prb que lorsque j'essai dajouter a la bd des valeur qui contient pas des caractères spéciaux ca marche !!!!!

Si avec des caractères spéciaux il m'ajout une ligne vide ....

Kelk'un peux aider ,?!!!

et Merci d'avance..!!!

# Re: Prb des caractères spéciaux avec php

Envoyé par : laurentj

Date : 19/04/2006 09:46

qu'appelles-tu caractères speciaux ?

Pourquoi ce unserialize ?

# Re: Prb des caractères spéciaux avec php

Envoyé par : skygreg

Date : 19/04/2006 14:03

essaye de passer tes données du javascript vers PHP en les encodant en Base64 :

js: btoa (donnees) php : base64_decode (donnees)

# Re: Prb des caractères spéciaux avec php

Envoyé par : servlet1

Date : 19/04/2006 16:11

  • caractères speciaux c comme : é,à,è.....
  • unserialize prend une variable linéarisée (voir serialize ) et la convertit en variable PHP .

Par exemple je forme une variable lin...

$champ='a:3:{i:0;s:28:"string";i:1;s:3:"100";i:2;s:2:"20";}'

puis

$champ2 = unserialize(stripslashes($champ));

ca me retourne un tableau de 3 variable($champ2);...

# Re: Prb des caractères spéciaux avec php

Envoyé par : servlet1

Date : 19/04/2006 16:14

skygreg

Comment ca encodant en Base64 !!!!!!

# Re: Prb des caractères spéciaux avec php

Envoyé par : laurentj

Date : 19/04/2006 16:51

En fait, je ne demandais pas ce qu'était la fonction unserialize, mais pourquoi tu l'utilisais. Je ne vois pas bien le rapport entre l'utilisation de cette fonction, et ton problème. En fait, je vois pas du tout ce que tu cherches à faire globalement. Elle vient d'où $champs ? pourquoi lui faire subir ce traitement ? tu veux obtenir quoi au final ? tu as quoi au départ ?

# Re: Prb des caractères spéciaux avec php

Envoyé par : servlet1

Date : 19/04/2006 17:38

voila Mon prb que je veux construire une requête d'jout"INSERT TO..." bien , exemple

INSERT INTO MATABLE (CODE, Libelle,) VALUES ("11", "NULL")

Ben Cette requete pour la construire normalement je dois me basé :

  • Coté client sur les valeur de mon formulaire .
  • Coté serveur sur les les champs de ma base .$

pour envoyer les valeur du client vers l'utilisateur je dois utiliser un tableau jscript vers un tableau PHP, en js j'utilise la function suivante :

var _MAX_INT = 256*256*256*16-1;
 function jsArray2Php(tab) {
  var chaine = "";
  var idx = 0;
  for (i in tab) {
      if (isNaN(i)) chaine += "s:" + i.length + ":\"" + i + "\";";
      else chaine += "i:" + i + ";";
      var valeur = tab[i];
      switch (typeof valeur) {
          case "string" :
            //  valeur = formaterChaine(valeur);
              chaine += "s:" + valeur.length + ":\"" + valeur +  "\";";
              break;
          case "number" :
              if (valeur > parseInt(valeur)) chaine += "d:" + valeur + ";";
              else if (valeur > _MAX_INT) chaine += "d:" + valeur + ";";
              else chaine += "i:" + valeur + ";";
              break;
          case "boolean" :
              chaine += "b:" + ((valeur === true) ? 1 : 0) + ";";
              break;
          case "object" :
              if (valeur === null) chaine += "N;";
              else chaine += jsArray2Php(valeur);
              break;
          default :
              chaine += "N;";
      }
      idx++;
  }
  return "a:" + idx + ":{" + chaine + "}";
}
function formaterChaine(chaine) {
  return chaine.replace(/\"/g, """);
}

Puis .........par exemple

var tableauT = new Array("Veronique", 100,"coca");
var chaine = jsArray2Php(tableauT);...
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");   
       var data = "champ_cache=" + chaine ;
       xhr_object.send(data);

Maint coté serveur je dois recevoir mes parametre passé en POST

<?
$champ_cache = unserialize(stripslashes($_POST["champ_cache"]));
?>

le prb que si je remplace "Veronique" par "véronique" j'aurai une ligne vide ds ma table si non ca marche nekel....!!!

et Merci d'avance

# Re: Prb des caractères spéciaux avec php

Envoyé par : servlet1

Date : 19/04/2006 17:59

je crois laurent que le prb c durant l'envoie du tableau par exemple

car si j'execute un script php comme ca

<?
  $champ_cache =     unserialize(stripslashes('a:3:{i:0;s:9:"véronique";i:1;s:2:"15";i:2;s:2:"45";}'));
 echo "'".($champ_cache[0])."'"."\n";
 echo"'".($champ_cache[1])."'"."\n";
 echo"'".($champ_cache[2])."'"."\n";
?>

ca donne :'véronique' '15' '45'

avec (i:0;s:9:"véronique"): 9 spécif le nbre de caractère ds le string "véronique"....

# Re: Prb des caractères spéciaux avec php

Envoyé par : laurentj

Date : 19/04/2006 23:33

ah ba voilà une explication claire du problème ! ;-)

Bon, déjà, une chose, tu as oublié d'encoder les caractères non autorisés dans les valeurs (qui sont entre autre & ) :

var data = "champ_cache=" + encodeURIComponent(chaine);

Peut être qu'il faut aussi indiquer le charset correspondant à l'encodage de ta chaîne.

xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=iso-8859-1");   

En fait je pense que ce que tu reçois dans $_POST n'est pas un bon contenu sérialisé PHP. Donc unserialize doit certainement echouer et donc renvoi tout naturellement FALSE (+ erreur NOTICE), d'où tes enregistrement avec des valeurs vides. Tu devrais d'ailleurs capturer toutes les erreurs php et les logger afin de voir là où ça merde..

Et vérifier aussi le contenu de $_POST.

# Re: Prb des caractères spéciaux avec php

Envoyé par : Christophe Charron

Date : 20/04/2006 07:42

Bonjour, il me semble avoir fait ce genre d'essai lors de mes tentatives d'insertion du signe €, par exemple et ne pas avoir réussi à encode en base64 côté javascript, puis décodeer la chaine obtenue côté php pour faire un insert "intelligible", c'est à dire dont les données soit lisibles via phpmyadmin par exemple ... As-tu un petit bout de code ?

# Re: Prb des caractères spéciaux avec php

Envoyé par : laurentj

Date : 20/04/2006 10:29

pourquoi cherchez vous absolument à encoder en base64 ? ça bouffe une bande passante terrible, et ne résoud pas du tout les problèmes.

# Re: Prb des caractères spéciaux avec php

Envoyé par : servlet1

Date : 20/04/2006 11:13

ben, pour po casser la tete j'ai changer de methodologie..!!! :

envoyer po un tableau mais des parametre de forme po,p1,p2...,pn

et coté serveur j'utilise un boucle pour récupérer mes paramètres...

for ($i=0; $i<=$nbrechp-1; $i++){$qte_[$i] =utf8_decode($_POST["valchps".$i]); }

ca marche nekel ,Merci!!!

# Re: Prb des caractères spéciaux avec php

Envoyé par : Christophe Charron

Date : 20/04/2006 11:22

même € œ Œ ‘ ’ “ ” ?

# Re: Prb des caractères spéciaux avec php

Envoyé par : laurentj

Date : 20/04/2006 11:49

Christophe : relis ça /wiki/ApplisWeb/Request. j'ai complété à propos des charset

# Re: Prb des caractères spéciaux avec php

Envoyé par : Christophe Charron

Date : 20/04/2006 12:35

Merci Laurent, vu l'arbre en boule ... je teste le full utf8 et je te dis...

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.