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

Langage PHP Discussion :

Accès aux fonctions objets dans tableau


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut Accès aux fonctions objets dans tableau
    Bonjour,

    Je sèche depuis un bon moment sur ce problème : dans un script Php, je crée un tableau d'objets "médecin". Cet objet médecin contient lui-même un tableau d'objets "adresse" car un médecin peut avoir de 0 à x adresses. Je passe mon tableau d'objets "médecin" en variable de session. Lors de la récuprération de ma variable de session, je parviens bien à accéder aux fonctions de mon ojet "médecin" mais pas à celles de mon ou mes objets "adresse" liés.

    Voici la partie de code du script dans lequel ma variable de session contenant le tableau d'objets "médecin" est créée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for($i = 0; $i < $cpt; $i++) 
     { 
      $tableau[0] = $resuReq[$i]['cle_contact']; 
      $tabCont[$i] = new CMedecin($tableau); 
      .... 
     } 
    $_SESSION['tabCont'] = $tabCont;
    Voici maintenant le code dans ma classe CMedecin dans lequel je crée mon tableau d'adresses et une autre portion où je retourne toutes les variables de ma classe:

    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
    for($cpt = 0; $cpt < count($resuReq); $cpt++) 
     $this->tabObjAdresses[] = new CAdresse($resuReq[$cpt]); 
     
    /*A cet endroit, si je fais, pour chaque passage dans la boucle, echo "adresse vaut " . $this->tabObjAdresses[]->getAdresse();, ça m'affiche bien le résultat escompté lors de la création de chaque objet "médecin".*/ 
     
    ... 
    public function getAll() 
     { 
      ... 
      $tab['indexTitre'] = $this->titre; 
      $tab['sexe'] = $this->getSexe(); 
      $tab['inami'] = $this->inami; 
      $tab['gsm'] = $this->getGsm; 
      $tab['email'] = $this->getEmail(); 
     
      $tab['adresses'] = $this->tabObjAdresses; 
      return $tab; 
     }
    Voici la portion de code dans laquelle j'utilise ma variable de session :

    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
    20
    21
    22
    23
    24
    include_once("../fichiersInclusion/classes.php"); 
    session_start(); 
     
    $tab = $_SESSION['tabCont']; 
     
    $i = $_GET['idTab']; 
    $med = $tab[$i]; 
    $_SESSION['medecin']= serialize($tab[$i]); 
    $tabDonnes = $med->getAll(); 
    ... 
    for($i = 0; $i < count($tabDonnes['adresses']); $i++) 
     { 
      $loc = $tabDonnes['adresses'][$i]->getLoc(); 
     
      echo "      <tr> 
            <td id='tdres'>" . $tabDonnes['adresses'][$i]->getAdresse() . "<input type='hidden' id='indexTab' name='indexTab' value='" . $i . "'></td> 
            <td id='tdres'>" . $loc[0]['codePostal'] . "</td> 
            <td id='tdres'>" . $loc[0]['localite'] . "</td> 
            <td id='tdres'>" . $tabDonnes['adresses'][$i]->getTel() . "</td> 
            <td id='tdres'>" . $tabDonnes['adresses'][$i]->getFax() . "</td> 
            <td id='tdres' onclick=\"window.location.href='../interfaces/interface.php?fichier=modifAdr.inc&titre=Ajout adresse&popup=1&indexTab=" . $i . "'\"><font color='red'>Modifier</font></td> 
            <td id='tdres'onclick='suppAdr(" . $i . ");'><font color='red'>Supprimer</font></td> 
         </tr>"; 
     }
    Dans cette dernière boucle for, mon n ombre de lignes (correspondant au nombre d'éléments contenu dans mon tableau d'adresses) est correct, mais aucune information n'est affichée (même pas un message d'erreur).

    Quelqu'un aurait une idée?

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    c'est peut être un problème de déréférencement, si tu utilises une version de php <5. J'ai pas regardé ton code en détail. Essaye, avant d'appeler la dernière méthode, de recueillir dans une variable la valeur de la variable tableau (qui contient le 1er objet) et puis appelle la méthode (getLoc, getAdresse...).

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Merci beaucoup pour ton intérêt.

    Voici ce que j'ai effectué pour tester ce que tu proposais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $i = $_GET['idTab'];
    $med = $tab[$i];
    $_SESSION['medecin']= serialize($tab[$i]);
    $tabDonnes = $med->getAll();
     
    $tabTemp = $med->getAdresses();
     
    echo "adrTemp = " . $tabTemp[0]->getAdresse();
    Ca m'affiche "adrTemp = "

    De plus, je travaille avec Php5

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    fait des print_r ou var_dump de tes tableaux.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Encore merci de te pencher sur mon désespoir...

    Voici ce que me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tabTemp = $med->getAdresses();
     
    var_dump($tabTemp[0]);


    "object(CAdresse)#3 (6) { ["cle_adresse:private"]=> string(6) "136796" ["cle_personne:private"]=> NULL ["adresse:private"]=> NULL ["cle_localite:private"]=> NULL ["tel:private"]=> NULL ["fax:private"]=> NULL }"

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    rien n'est desespéré
    Ton objet à l'air de ne pas avoir de donnée (NULL), donc c'est sans doute au moment où tu mets tes adresses que ça doit clocher. Vérifie chaque étape de tes variables avec des echo. C'est un debuggage d'affectation de variables plutôt que de la syntaxe objet.

Discussions similaires

  1. [V6] Paramétrer l'accès aux classes/objets dans l'univers
    Par kiralina dans le forum Designer
    Réponses: 4
    Dernier message: 11/12/2012, 17h24
  2. WCF et WebService: Avoir accès aux fonctions dans IE
    Par lutecefalco dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 11/11/2008, 11h21
  3. Réponses: 6
    Dernier message: 12/09/2007, 15h58
  4. Réponses: 6
    Dernier message: 23/01/2007, 14h08
  5. Accès aux valeurs contenues dans un objet
    Par WalidNat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/05/2006, 17h26

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