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

Symfony PHP Discussion :

Requête sur BD externe [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 277
    Par défaut Requête sur BD externe
    Bonsoir à tous !

    Sur la page d'accueil de mon site j'affiche les x derniers titres des posts de mon blog.
    Ca fonctionne mais lorsque le titre contient un caractère accentué alors il ne m'affiche pas le post_titre.
    Le problème ne vient surement pas de la base de données ou de son contenu mais de la requête.
    Voici ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    	$dsn = 'mysql:dbname=mondbname;host=monhost';
    	$user = 'login';
    	$password = 'mdp';
    	$dbh = new PDO($dsn, $user, $password);
    	$conn = Doctrine_Manager::connection($dbh);
    	$this->blogs = $conn->execute('SELECT * FROM blog_posts WHERE post_status = \'publish\' AND post_type = \'post\' ORDER BY post_date DESC');
    Je récupère toutes les infos pour faire les liens et faire des traitements.

    Une idée du petit problème ?
    Merci pour votre aide !!

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Un peu tard pour bien réfléchir, mais à mon avis tu as un problème d'encodage de caractères. Ta base externe doit avoir un autre encodage que celui du site.

    Utilise des fonctions du style utf8_encode pour passer l'encodage de la base externe sur le même encodage que ton site.

    Bonne chance,
    Michel

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 277
    Par défaut
    Non ça ne vient pas de l'encodage.
    Mes pages sont en utf8, les tables de wordpress aussi (utf8_general_ci).
    La fonction ut8_encode ne change rien.

    Dans la table, les données sont écrites avec l'accent (et pas avec le code &....)

    --

    C'est bizarre car avec un var_dump, de ma variable $blog dans la vue, je récupère bien le titre avec accent (l'accent est modifié par le losange à point d'interrogation) mais si j'affiche $blog['post_title'], ça n'affiche rien :s

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Un peu plus réveillé !

    Je ne pense pas que le problème provienne de la requête. Par contre, tu utilises doctrine d'une manière plus que minimaliste ! Ce qui, pour une base de donnée externe peut se comprendre. Pourquoi ne pas récupérer des données à partir du feed de ton site ? Cela donnerait plus d'indépendance à l'autre site (il n'aurait pas besoins de partager un accès en directe aux bases de données).

    Je me demande si le problème ne viendrait pas du moteur d'échappement de symfony. Je te suppose en 1.4 et le moteur est automatiquement activé lors de la génération d'une application (--escaping-strategy=on par défaut) ?

    Quant tu récupères avec $blog['post_title'] (je suppose dans une boucle foreach), tu récupères un objet sfDoctrineRecord qui te renvoie une version "échappée" et non pas le contenu "brut de fonderie" de la variable.

    Par contre, je n'ai pas trouvé dans la doc de symfony la méthode pour ne pas échapper une variable à ce niveau là, la doc est bien fournie mais nul pour les arguments des méthodes et nul pour les méthodes auto-générées, ce qui est le cas ici. Je vais chercher encore un peu...

    ---
    En cherchant un peu j'ai trouvé une possibilité, non testée par moi.
    foreach
    $blog->render(ESC_RAW);
    $blog['post_title'];

    Je reste dubitatif sur la viabilité de cette construction
    Et on désactive toutes les sécurités d'affichage, ce qui ne peut se faire que si l'on est parfaitement sur des données contenues dans l'autre base.

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2005
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2005
    Messages : 277
    Par défaut
    wouhaha...

    Alors plusieurs petites choses à propos de ta (longue ) réponse !

    Tu dis que j'utilise doctrine d'une manière succincte... Qu'est ce que tu entends par là ? (histoire de progresser)

    Sinon j'utilise Symfony 1.2 (j'ai commencé mon projet sur cette version et les mises à jour automatique :s )
    Je suis les mises à jour pour voir les nouveautés et être au courant des choses qui changent pour mes prochains projets.

    Sinon la méthode de récupération par le flux rss me semble pas mal ! je n'y avais pas pensé!! Je test ça de suite ! (Faut juste que je cherche comment on fait! je sais les créer mais pas les exploiter. mais ça ne doit pas être sorcier )

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Pour Doctrine, a priori, tu crées directement ta requêtes en SQL et tu la donne tel quel à Doctrine, probablement parce que tu n'as pas défini la table dans le schéma de ton application. D'où l'usage succin, qui peut ici ce comprendre.

    OK pour la 1.2 mais le EXC_RAW ne semble pas avoir évolué entre les deux et le peu d'information que j'ai trouvé se rapportent à la ... 1.2.

    Pour l'exploitation des flux RSS, ce qu'il y a de bien dans symfony c'est que quelqu'un a surement (souvent) déjà eu le problème. Peut-être ta solution se trouve-t-elle ici : sfFeed2Plugin. Il est utilisé par 172 personnes déclarée, ce qui est un bon signe et testé sur la 1.2.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/05/2008, 08h51
  2. Réponses: 6
    Dernier message: 20/09/2004, 15h26
  3. courant sur port extern
    Par bobymaw dans le forum C++Builder
    Réponses: 16
    Dernier message: 06/05/2004, 13h16
  4. Requête sur un serveur lié
    Par Guizz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/08/2003, 11h35
  5. requête sur l'année d'une date
    Par jo77 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/07/2003, 09h28

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