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 :

Problème d'accès aux données (BDD)


Sujet :

Symfony PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème d'accès aux données (BDD)
    Bonjour, je viens ici car j'arrive à bout, 3 jours sans réussir à afficher des données...

    Mon code dans le controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      public function executeIndex(sfWebRequest $request)
      {
      	$dql = "select email LIMIT 3";
      	$this->request = YbNetworknodeTable::getInstance()->findBySql($dql);
      }
    Et dans l'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php foreach($request as $Rrequest): ?>
    Email : <?php echo $Rrequest->getEmail(); ?><br />
    <?php endforeach; ?>
    J'ai beau faire un print_r() un var_dump() le tableau n'existe pas... aucune variable rien.

    Alors que si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->request = YbNetworknode::getInstance()->findAll();
    dans le controller et bien là je reçois le tout donc j'explose la mémoire.

    Je suis perplexe.

  2. #2
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Il faudrait que vous passiez en version dev (par ex: frontend_dev.php) afin d'avoir la barre de debug et voir comment est formée la requête SQL générée par le findAll().

    Je penche pour une erreur dans votre requête SQL :
    Il manque une indication sur la table où effectuer cette requête !

    Une requête telle que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT email FROM nom_de_la_table LIMIT 3
    devrait convenir.

    Cordialement,
    Valentin

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de votre réponse Georges !

    Le soucis c'est que justement le principe d'utiliser Doctrine c'est qu'il n'y a pas besoin de préciser la base plus que justement on passe par le model.

    Sur ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public function executeIndex(sfWebRequest $request)
      {
      	$dql = "select email LIMIT 3";
      	$this->request = YbNetworknodeTable::getInstance()->findBySql($dql);
      }
    La ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->request = YbNetworknodeTable::getInstance()->findBySql($dql);
    YbNetworknode::getInstance() permet déjà de préciser sur qu'elle table on travail.

    Mais j'ai tout de même tester n'ayant pas la science infuse
    Et je reçois cette erreur si je mets un FROM
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row. Failing Query: "SELECT y.inetworknode AS y__inetworknode, y.ilogin AS y__ilogin, y.ipropertycivility AS y__ipropertycivility, y.ipropertygender AS y__ipropertygender, y.lastname AS y__lastname, y.firstname AS y__firstname, y.logicaldeleted AS y__logicaldeleted, y.modificationtimestamp AS y__modificationtimestamp, y.creationuser AS y__creationuser, y.creationdate AS y__creationdate, y.modificationuser AS y__modificationuser, y.modificationdate AS y__modificationdate, y.idmck AS y__idmck, y.ismember AS y__ismember, y.email AS y__email, y.title AS y__title, y.birthdate AS y__birthdate, y.birthplace AS y__birthplace, y.birthzipcode AS y__birthzipcode, y.birthcountry AS y__birthcountry, y.adressplacelabel AS y__adressplacelabel, y.adressstreetnumber AS y__adressstreetnumber, y.adressvoicelabel AS y__adressvoicelabel, y.adresszipcode AS y__adresszipcode, y.adressziplabel AS y__adressziplabel, y.adresscountry AS y__adresscountry, y.xmlphonenumber AS y__xmlphonenumber, y.xmlcellularphonenumber AS y__xmlcellularphonenumber FROM yb_networknode y WHERE (select email FROM `yb_networknode` LIMIT 3)"
    Ma requête de base fonctionne c'est surtout que je ne reçois pas l'array dans le view

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 5
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Désolé d'avoir répondu un peu à côté de la plaque, je me rend compte que ça fait un moment que j'ai pas touché Sf en fait ...

    Au risque de dire une bêtise de plus, il me semble que Doctrine gère les fonctions de façon assez magique, notamment avec les findBy*

    Le problème ne viendrait-il pas de cette fonction ?

    Personnellement j'avais plutôt l'habitude d'écrire mes requêtes de façon plus explicite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Doctrine::getTable('YbNetworknode')
          ->createQuery()
          ->select('email')
          ->limit(3)
          ->execute();
    Valentin.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Le soucis c'est que votre méthode est dépréciée :/

    Mais je vais changer le titre de mon sujet !
    Car c'est surtout le passage de l'array du controller à la view qui ne fonctionne pas.

  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    ATTENTION !

    Il existe deux version de doctrine, la 1.2 et la 2.

    La méthode proposée correspond à doctrine 1.2 qui fonctionne avec symfony 1.

    La méthode que tu proposes "SELECTE ....." est celle qui fonctionne avec doctrine 2 et Syfmony2.

    Ce forum est dédié à doctrine 1.2 sur symfony 1, la réponse me semble donc plus que pertinente. Si tu tournes en Symfony2, le mieux serait de reposer la question dans la salle Symfony2, il n'y a pas de salle pour doctrine 2, pour l'instant.

Discussions similaires

  1. Problème d'acces aux données d'une liste Chainée
    Par Le Payton dans le forum Langage
    Réponses: 4
    Dernier message: 27/08/2007, 11h00
  2. Problème d'accès aux données
    Par phinks94 dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/06/2007, 11h40
  3. [MVC][SQLServer 2005 trial] problème d'accès aux données
    Par olivier57b dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 01/02/2007, 11h23
  4. problème d'accès aux données sur serveur par poste client
    Par rahan_dave dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/02/2006, 09h13
  5. [Hibernate]Accès aux données BDD via Hibernate
    Par LESOLEIL dans le forum Hibernate
    Réponses: 8
    Dernier message: 17/05/2005, 20h39

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