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 :

Probleme affectation données dans un vecteur [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut Probleme affectation données dans un vecteur
    Bonjour
    je viens de réaliser un parser pour la lecture d'un matricule et de localiser le département, il marche tres bien mais là j'ai un souci dans l'affichage
    voici le code dans mon action.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $objVoiture=VoiturePeer::getAllVoiture();
     
    $i=0;
        foreach ($objVoiture as $Voiture)
        {
        	$this->Departement[$i]=Traitement::Parser($Voiture->getMatricule());
     
        }
    avec ce code je recupere un vecteur de département ainsi pour l'utiliser pas une autre methode pour faire des stats,

    parcontre je me suis rendu compte que le vecteur été vide or que si je fais un print_r à l'interrieur de la boucle foreach il y a bien des données qui sont affectés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $i=0;
        foreach ($objVoiture as $Voiture)
        {
        	$this->Departement=Traitement::Parser($Voiture->getMatricule());
        	print_r($this->Departement);
    $i++;
        }
    Merci de 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
    J'ai un pue de problèmes avec ton code.

    Je ne comprend pas ce que tu entends par vecteur du département.

    Par contre, ne serait-il pas plus simple de mettre ton code dans le modèle ? Et de récupérer directement le vecteur par un $voiture->getVecteur() le vecteur étant alors inclus dans le modèle, même si la méthode peut être très simpliste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    pulblic function getVecteur()
    {
         return Traitement::Parser($this->getMatricule);
    }
    Le fait que ton parser ne retourne rien ne viendrait-il pas d'un manque de test sur le parser ?

    Il n'y a pas d'incrémentation de $i dans la première boucle exemple.

    $departement n'est plus un tableau dans la deuxième boucle.

    Je suppose que tu n'utilises que $departement dans ton template, avec le système donné ici, tu pourrais carrément te passer du tableau $departement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    Merci pour ta réponse
    j'utilise le vecteur pour stocké les résultats i.e:
    - interoger la base et recuprer tous les matricules des vehicules
    - parser chaque matricule (le parseur analyse et fournit le département)
    - stocké le résultat du parse dans un vecteur pour une utilisation dans un algorithme

    le parser marche j'ai effectué plusieurs test
    le $i s'incremente parfaitement
    j'ai fait des test sur $objVoiture et il n'est pas vide il retourne bien un objet voiture dont les attributs sont : matricule, kilometrage...etc

    est-ce qu'il y a possibilité que sa soit du fait qu'il y a des methode en

  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
    Non, le static est indispensable pour ce type d'objet, si non tu ne pourrais pas l'utiliser.

    Donc ton parser fonction hors du context objet.

    Ton objet retourne des données.

    A priori ton parser ne doit pas pouvoir traiter les données retournée par ton objet... reste a trouver le pourquoi.

    Il faudrait soit le code du parser et le type des données retournées par tes matricule.

    Juste un truc qui me chiffonne, sur les nouvelles immatriculation, il n'y a plus de département ???

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 21
    Par défaut
    Il peut s'agir d'un effet de bord : tu n'initialises pas $this->Departement, donc c'est peut être une instance d'autre chose au moment où tu arrives ici, qui redéfinirait l'accès par index.

    Tu devrais faire plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Là tu es sûr que tu as bien un array au départ
    $this->Departement = array();
    // Tu n'a pas besoin de $i
    // Enfin la boucle ([] remplace ton [$i] avec un $i incrémenté : ça rajoute à la fin)
    foreach (VoiturePeer::getAllVoiture() as $Voiture) $this->Departement []= Traitement::Parser( $Voiture -> getMatricule() );

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    si je supprime le $this->Departement par $Departement sa marche
    et comme je ne vais pas l'utilisé dans le template je me contente de cette démarche, et pour l'initialisation c'est pareil c'est le meme probleme
    Merci de votre aide

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 21
    Par défaut
    Citation Envoyé par megaloplex Voir le message
    si je supprime le $this->Departement par $Departement sa marche
    et comme je ne vais pas l'utilisé dans le template je me contente de cette démarche, et pour l'initialisation c'est pareil c'est le meme probleme
    Merci de votre aide
    Je viens de comprendre pourquoi !!

    Dans une classe dérivée de sfAction, le fait de faire $this->trucmuche utilise en fait __get et __set de sfAction (en fait de sfComponent dont elle dérive) (pour les rendre accessibles ensuite depuis le template), sauf si tu déclares trucmuche comme membre de ta classe (mais dans ce dernier cas ils ne sont plus accessibles depuis le template (j'ai testé)).

    Donc $this->trucmuche[index] ne peut en effet pas marcher en modif car dans ce cas il fait un __get() suivit d'un __set() mais comme dans certaines versions précoces de symfony le __get() n'était PAS déclaré comme &__get() (appel par référence), du coup il fait une COPIE sur laquelle tu travaillais et le __set ensuite ne faisait donc rien. Sur la 1.4, ce problème ne se pose plus.

    voir
    http://www.php.net/manual/fr/languag...oading.members

    Donc pour toi, si tu tiens absolument à faire $this->Departement, il faut que
    • soit tu le déclares dans ta classe ( var $Departement )
    • soit tu modifies sfComponent de Symfony pour faire public function & __get (dans symfony/lib/action)
    • soit tu construit d'abord ton array sur une variable locale ex : $deps et ensuite tu fais $this->Departement = $deps

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2008
    Messages : 176
    Par défaut
    Merci pour ton explication, en faite je vais procéder à la modification ou bien passer a la 1.4
    Ciao et bonne soirée

  9. #9
    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
    Note que si tu travailes que un nouveau projet, tu n'as aucun intérêt à utiliser une autre version que la 1.4

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

Discussions similaires

  1. Probleme affichage données dans un tableau
    Par spider_sup dans le forum NetBeans
    Réponses: 0
    Dernier message: 15/08/2008, 11h10
  2. Réponses: 3
    Dernier message: 29/09/2007, 14h45
  3. Probleme insertion données dans base ACCESS
    Par Ice-tea dans le forum SGBD
    Réponses: 7
    Dernier message: 20/08/2007, 14h38
  4. probleme récupération donnée dans script xsl
    Par jmacdev dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 12/05/2006, 17h37

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