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 :

[Doctrine] Affichage des accents


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut [Doctrine] Affichage des accents
    Bonjour,

    J'ai une base de donnée mysql encodée en utf8 dans laquelle j'ai une table news contenant des news!! Pour l'instant rien de spéciale.

    J'ai fait un module news

    Dans mon action j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->listeNews = Doctrine::getTable('News')->getNews();
    Mon template (indexSuccess) :

    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
     
    foreach ($listeNews as $uneNews){
     
    	echo '
    	<div class="contenu">
    		<table cellspacing="0" border="0" width="100%">
    			<tr >
    				<td align="left" width="70%" valign="top">
    					<label class="titres_page">'.$uneNews->getTitre().'</label>
    				</td>
    				<td align="right" width="30%" valign="top">
    					Ajoutée le '.$uneNews->getDate().'
    				</td>
    			</tr>
    		</table>
    		<p align="justify">
    		'.$uneNews->getNews().'
    		</p>
    	</div>';
    Dans mon model (NewsTable.class.php) :

    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
     
    class NewsTable extends Doctrine_Table
    {
    	/**
         * Récup les $max dernières news
         * 
         * @param $max
         * 
         * @return 
         */
        public function getNews($max=6)
        {
            $q = $this->createQuery('n')        
                ->orderBy('n.date')
                ->limit($max);
     
            return $q->execute();
        }
    }
    J'ai bien le résultat de ma requête qui s'affiche mais tous les corps de mes news et coupé avant le premier caractère accentué.

    Par exemple pour les news suivantes :
    "Bonjour, le site est en place depuis 3 heures." ---> s'affiche entièrement
    "j'ai des problèmes d'accents" ---> affiche "j'ai des probl"

    Je n'arrive pas à récupérer la news entière .... Que se passe-t-il?

    Est-ce que je dois spécifier quelque part l'encodage???

    Merci pour votre aide.

    PS :

    Pour info j'ai changé dans le fichier config/doctrine/schema.yml
    j'ai rajouté le point options et j'ai fait un symfony cc mais ca change rien!!
    News:
    tableName: news
    columns:
    id_news:
    type: integer(4)
    primary: true
    autoincrement: true
    titre:
    type: string(50)
    notnull: true
    news:
    type: string(800)
    notnull: true
    date:
    type: date(25)
    notnull: true
    options:
    collate: utf8_unicode_ci
    charset: utf8

  2. #2
    Membre éprouvé

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Par défaut
    Il y a 3 niveaux d'encodage :

    * La base de données
    * Les fichiers où se situent ton code
    * L'encodage spécifié par le serveur au navigateur

    Le premier a l'air bon. Vérifie que les 2 autres sont bien en UTF8
    Pour le point 3 ca se règle dans les meta de la page HTML avec quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>

  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Merci pour la réponse mais si effectivement j'avais un problème d'encodage au niveau de mes fichiers (php) ou d'affichage (html)

    J'aurai un résultat qui ressemblerai à ça :

    "j'ai des problèmes d'accents" ---> affiche "j'ai des probl@¨~mes d'accents".

    Alors qu'ici mon problème se situe au niveau de doctrine qui ne récupère pas tout mon champs.

    Si je fais un dump de l'objet j'ai les valeurs qui sont scindés juste avant mon caractère accentué.

    Oui mes fichiers sont encodés en utf8 et j'ai bien une méta utf-8 dans mes entêtes html.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Est-ce que la collation de la base de données est bien UTF8?
    Je ne parle pas de la table.

  5. #5
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Bonjour batataw,

    Oui ma base de données est bien utf-8 plus précisément : utf8_unicode_ci
    et mes tables aussi!!

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Okay, comment as-tu inséré tes données dans la base, es-tu passé par un formulaire ?
    Le problème est peut-être en amont.

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

Discussions similaires

  1. Affichage des accents
    Par superseba-be dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/11/2006, 16h05
  2. [FLASH 8] Affichage des accents
    Par jbidou88 dans le forum Flash
    Réponses: 2
    Dernier message: 31/10/2006, 09h19
  3. Réponses: 1
    Dernier message: 22/12/2005, 15h45
  4. Réponses: 1
    Dernier message: 21/11/2005, 11h37
  5. Réponses: 11
    Dernier message: 16/12/2003, 19h58

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