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..!!!
Envoyé par : laurentj
Date : 19/04/2006 09:46
qu'appelles-tu caractères speciaux ?
Pourquoi ce unserialize ?
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)
Envoyé par : servlet1
Date : 19/04/2006 16:11
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);...
Envoyé par : servlet1
Date : 19/04/2006 16:14
skygreg
Comment ca encodant en Base64 !!!!!!
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 ?
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é :
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
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"....
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.
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 ?
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.
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!!!
Envoyé par : Christophe Charron
Date : 20/04/2006 11:22
même € œ Œ ‘ ’ “ ” ?
Envoyé par : laurentj
Date : 20/04/2006 11:49
Christophe : relis ça /wiki/ApplisWeb/Request. j'ai complété à propos des charset
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.