IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Encodage à la réception par le script PHP [Prototype]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut Encodage à la réception par le script PHP
    Bonjour,

    Je ne sais pas trop où poster cette question mais je la pose ici.
    Note: J'utilise la bibliothèque Prototype.

    Par AJAX j'effectue des échanges entre un script PHP et ma page web.
    J'ai un petit formulaire avec deux champs, un input text et un textarea.
    En cliquant sur Envoyer, j'appelle une fonction Javascript qui fait appel au script PHP en lui transmettant la valeurs des deux champs par POST. Voila le corps de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    		var id_page = document.forms['modifPage'].elements['id_page'].value;
    		var titre = document.forms['modifPage'].elements['titre'].value;
    		var description = $('form-modifier-description').innerHTML;
     
     
    		// Appel du script PHP
    		new Ajax.Request("monscript.php", {
    			method: "post",  
    			parameters: {
    				id_page: id_page,
    				titre: titre,
    				description: description
    			},
    			onSuccess: function(transport) {
     
    					divId = 'page_' + id_page + '_lien';
    					$(divId).innerHTML = titre;
     
    			}
    		});
    En gros:
    • On récupère la valeur des champs
    • On fait appel au script PHP en passant les arguments
    • On affiche dans un Div le nouveau titre


    Le script PHP récupère tout bien, et fait un UPDATE dans la base avec le nouveau titre et la nouvelle description pour la page donnée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql = "
    	UPDATE $sql_table_page
    	SET
    		titre = $titre,
    		description = $description
    	WHERE id_page = $id_page
    ";
    $resultat = mysql_query($sql);
    Le problème: Si j'entre "Première page" l'accent passe mal au script PHP. En gros la requête qu'il fait devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	UPDATE  page 
    	SET
    		titre = 'Première page',
    		description = 'Voila la page principale.'
    	WHERE id_page = 1
    Et du coup la valeur dans la base contient cette erreur d'encodage.
    Comment palier à ce problème ?

    D'avance merci !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Points : 240
    Points
    240
    Par défaut
    Bon en fait c'est une erreur classique, j'ai trouvé la solution en parcourant 3 forums différents...!

    La solution que j'utilise consiste à encoder les caractères cotés Javascript d'abord:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    			parameters: {
    				id_page: escape(id_page),
    				titre: escape(titre),
    				description: escape(description)
    			},
    ...
    Et à les décoder coté PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $titre = urldecode($_POST['titre']);
    $description = urldecode($_POST['description']);
    Ainsi ca passe nickel, comme si l'on avait entré dans l'URL par méthode GET en quelque sorte.


    Cela est différent d'un autre problème que j'ai eu sur la même page, quand je veux remplir mes champs je récupère les informations provenant du script PHP. Là aussi les caractères posaient problème et devenaient des '?'.
    Pour palier à cela, il faut définir l'encodage dans le script PHP qui envoie les informations:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    header("Content-Type: text/html; charset=iso-8859-15");
     
    // Ou alors le plus classique (ne contient pas, entre autre, '€')
    header("Content-Type: text/html; charset=iso-8859-1");
    Voila désolé pour le topic semi-inutile

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Mail] Spammé par un script PHP d'envoi de mails
    Par Dia_FR dans le forum Langage
    Réponses: 5
    Dernier message: 13/09/2006, 21h57
  2. Remplacer les frames par un script PHP/javascript
    Par midiweb dans le forum Webdesign & Ergonomie
    Réponses: 4
    Dernier message: 15/06/2006, 15h51
  3. [Image] Enregistrer une image générée par un script PHP
    Par navis84 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 22/05/2006, 17h35
  4. MySQL ne prend pas les ordres donnés par le script PHP
    Par arkelmy dans le forum Requêtes
    Réponses: 4
    Dernier message: 27/04/2006, 02h06
  5. Réponses: 5
    Dernier message: 21/02/2006, 19h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo