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

PHP & Base de données Discussion :

Php & encodage. [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 67
    Par défaut Php & encodage.
    Salut !
    Lorsque j'insère une ligne dans ma table depuis l'onglet "Insérer" de phpmyadmin, je n'ai aucun de soucis d'encodage et tout s'affiche correctement. Mais quand j'insère depuis une requête insert into, j'ai des é & d'autres trucs du genre. Comment je corrige ceci ?

    Affichage des données :
    Code php : 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
    21
    22
    23
    <?php
    	$req = $pdo->prepare("SELECT * FROM notifications WHERE id_membre = :id ORDER BY date_envoi DESC");
    	$req->execute(array("id" => $_SESSION["id"]));
    	while($resultat = $req->fetch()) {
    ?>
    	<div class="minicadre">
    		<table>
    			<tr>
    				<td colspan="2">
    					<?php echo utf8_encode($resultat["titre"]); ?>
    				</td>
    			</tr>
    			<tr>
    				<td style="width: 33px; vertical-align: top" valign="top"><img src="../images/<?php echo $resultat['image']; ?>"></td>
    				<td style="font-size: 10pt; vertical-align: top" valign="top">
    					<?php echo utf8_encode($resultat["description"]); ?><br />
    					<?php echo utf8_encode($resultat["details"]); ?></td>
    			</tr>
    		</table>
    	</div>
    <?php
    	}
    ?>


    Requête d'insertion :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		$req4 = $pdo->prepare("INSERT INTO notifications(id_membre, titre, description, details, image, statut, date_envoi)
    													VALUES(:id_membre, :titre, :description, :details, :image, :statut, NOW())");
    		$req4->execute(array(
    			"id_membre" => $resultat["id_posteur"],
    			"titre" => "Ton mot a été publié !",
    			"description" => utf8_encode("Le mot que tu as publié a été accepté."),
    			"details" => utf8_encode("Tu as gagné 10 points de participation."),
    			"image" => utf8_encode("ajout.png"),
    			"statut" => utf8_encode("non_lu")));

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu n'as pas à mettre des utf8_encode().
    Cette fonction ne sert que lorsque tu n'as pas la main sur l'encodage.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 67
    Par défaut
    Je viens de retirer les utf8_encode() de la requête d'insertion (mais pas de la page d'affichage vu que sinon ça me cause un autre soucis d'encodage). Mais j'ai toujours le même problème !

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    -au niveau de l'affichage de ta page html:
    t'as bien le content-type en utf-8?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

    -au niveau de l'échange mysql et php
    Interclassement pour la connexion MySQL est bien utf8_general_ci?
    -Et les champs de tes tables sont-ils en utf8?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 67
    Par défaut
    Rien de tout ça, sauf pour la balise méta qui est présente, mais ça fonctionne parfaitement pour mes autres tables, c'est ça qui est étrange … mes tables sont toutes en latin1_swedish_ci.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 67
    Par défaut
    Je viens de rajouter ça dans mon php & j'ai retiré la balise meta qui définissait l'encodage (même avec les deux, ça persiste) :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php header('Content-type: text/html; charset=UTF-8'); ?>
    le soucis persiste …
    Edit : j'ai mis en utf8_general_ci, aucun changement (donc j'ai remis en latin1).

    Edit2: le problème est certaitement lors de l'insertion vu que si je modifie l'entrée depuis phpmyadmin, j'obtiens un accent fonctionnel …

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Passez à l'UTF-8 sans manquer une étape (histoire de ne pas louper un cas en les recitant moi-même )
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 67
    Par défaut
    Tuto déjà lu. À part "alter table" j'ai tout fait.

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si ton script est en UTF-8, ta page HTML est en UTF-8 et ta base de données est en UTF-8, normalement ça devrait marcher (tu as bien viré les utf8_encode ?)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 67
    Par défaut
    J'ai essayé avec et sans et sans, ça me met des losanges avec des "?" aux accents ajoutés manuellement sur phpmyadmin.
    Ma table est en latin1_swedich_ci, comme toutes les autres, et je n'ai pas ce problème avec mes autres tables, seulement avec celle-ci.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 67
    Par défaut
    Je m'en suis sorti. J'ai mis utf8_general_ci & j'ai ajouté utf8_decode(). Merci d'avoir voulu m'aider (& de m'avoir indiqué l'encodage à mettre).

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

Discussions similaires

  1. [XML-PHP] Problème encodage
    Par Erebe dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 21/09/2007, 09h03
  2. Flash / XML / PHP et encodage !
    Par ahseed dans le forum Flash
    Réponses: 4
    Dernier message: 16/05/2007, 10h11
  3. [PHP-JS] Encodage entre PHP et JS
    Par Akinion dans le forum Langage
    Réponses: 4
    Dernier message: 14/02/2007, 16h57
  4. Réponses: 4
    Dernier message: 28/09/2006, 20h20
  5. [PHP][XSLT] Encodage balise url
    Par thibaut06 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/02/2006, 17h46

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