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

Zend Framework PHP Discussion :

Récursion impossible avec un rowset ?


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 842
    Par défaut Récursion impossible avec un rowset ?
    Bonjour à tous

    Je fais une migration d'un ancien site en ZF (du moins certaines parties), et là je récupère des données dans un Zend_Db_Table_Rowset de manière classique, ensuite je dois faire un traitement récursif sur ces données.

    La fonction est la même que sur l'ancien site (donc elle marche), sauf qu'au lieu d'avoir mes données sous forme de tableau bi-dimensionnels (row/col), je les ai sous forme de Zend_Db_Table_Rowset. Hé bien figurez-vous qu'après avoir changé l'accès aux colonnes dans le code ($elem["colonne"] $elem->colonne) ça ne marche pas (il s'arrête au bout de 2 ou 3 niveaux de récursion) !!
    Par contre, si je convertis mon rowset en tableau ($rowset->toArray()), là ça marche nickel !!!

    Est-ce normal et y aurait-il une solution ? Ce ne serait pas gênant en soi si ce n'était que ça, mais malheureusement mes rows ont une classe personnalisée car j'ai besoin de certaines fonctions pour l'affichage...

    Bref comment faire ?


    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  2. #2
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 842
    Par défaut
    Je rêve
    http://framework.zend.com/wiki/displ...an+Hope-Bailie

    Pourquoi ai-je la désagréable impression que tout ce que je cherche dans ZF n'a pas encore été implémenté ?

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  3. #3
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 842
    Par défaut
    Bon j'ai réussi à contourner le problème, ouf

    J'explique, dans ma fonction itérative je fais ça :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $liste = $rowset->toArray();
    		for ($i=0; $i < sizeof($liste); $i++) {
    			$data  = array(
    		       'table'    => $rowset->getTable(),
    		       'data'     => $liste[$i],
    		       'stored'   => true
    		    );
    		    $item = new CategorieRow($data);
    Donc je commence par convertir le rowset en tableau, puis à boucler sur le tableau, mais ensuite je reconstruis mon élément Zend_Db_Table_Row_Abstract en me basant sur le contenu de l'élément courant du tableau, et en le liant à l'objet Zend_Db_Table renvoyé par la fonction getTable du rowset initial

    C'est tordu mais ça marche Et je n'ai pas d'autre solution puisqu'un simple foreach ($rowset as $item) ne récurse pas

    Voilà donc un workaround qui permet de récurser sans problème en continuant à avoir accès à ses objets !

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

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

Discussions similaires

  1. [ZF 1.8] Impossible de "peupler" un formaire avec un Rowset
    Par Feng-Huang dans le forum Zend_Db
    Réponses: 3
    Dernier message: 08/07/2009, 16h31
  2. [EJB] Remote call impossible avec WEBSPHERE
    Par nighma dans le forum Websphere
    Réponses: 1
    Dernier message: 19/06/2006, 16h18
  3. Réponses: 6
    Dernier message: 28/11/2005, 12h03
  4. [D2005]Compilation impossible avec version Personnal
    Par fab56 dans le forum Delphi .NET
    Réponses: 4
    Dernier message: 16/08/2005, 19h10
  5. [Requête] Difficile (impossible ?) avec des dates
    Par starch dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/04/2004, 11h26

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