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

Flex Discussion :

Flex Zend AMF et JOIN


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Par défaut Flex Zend AMF et JOIN
    Bonjour à tous,

    j'essai avec beaucoup de mal de faire fonctionner Flex et les data service PHP (qui utilise zend amf)
    J'ai 2 tables :
    1 table t_adherents (adhId, adhNom...) et 1 table t_adresses (adrId, adhId, adrLigne1...)

    La classe PHP automatiquement généré par Flex me permet de lister, d'ajouter correctement des données dans ma table t_adhérents (sans s'occuper des adresses).

    J'ai donc modifier la requete de cette façon
    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
    25
    26
    27
    public function getAllT_adherents() {
     
    		$this->throwExceptionOnError();
    		$stmt = mysqli_prepare($this->connection, 
    		"SELECT adh.adhId, adh.adhNom, adh.adhPrenom, adh.adhDateN, adh.adhSecu, adr.adrLigne1 
    		FROM t_adherents AS adh 
    		LEFT OUTER JOIN t_adresses AS adr ON adh.adhId = adr.adr_adhId");		
     
    		mysqli_stmt_execute($stmt);
    		$this->throwExceptionOnError();
     
    		$rows = array();
     
    		mysqli_stmt_bind_result($stmt, $row->adhId, $row->adhNom, $row->adhPrenom, $row->adhDateN, $row->adhSecu, $row->adrLigne1);
     
    	    while (mysqli_stmt_fetch($stmt)) {
    	      $rows[] = $row;
    	      $row = new stdClass();
    	      mysqli_stmt_bind_result($stmt, $row->adhId, $row->adhNom, $row->adhPrenom, $row->adhDateN, $row->adhSecu, $row->adrLigne1);
     
    	    }
     
    		mysqli_stmt_free_result($stmt);
    	    mysqli_close($this->connection);
     
    	    return $rows;
    	}
    Toutefois dans la partie Flex je ne parviens pas a afficher dans mon datagrid les données correspondants à la table t_adresses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <s:DataGrid id="dataGrid" x="141" y="45" width="628" height="122"
    				creationComplete="dataGrid_creationCompleteHandler(event)" requestedRowCount="4">
    		<s:columns>
    			<s:ArrayList>
    				<s:GridColumn dataField="adhId" headerText="adhId"></s:GridColumn>
    				<s:GridColumn dataField="adhNom" headerText="adhNom"></s:GridColumn>
    				<s:GridColumn dataField="adhPrenom" headerText="adhPrenom"></s:GridColumn>
    				<s:GridColumn dataField="adhDateN" headerText="adhDateN"></s:GridColumn>
    				<s:GridColumn dataField="adhSecu" headerText="adhSecu"></s:GridColumn>
    				<s:GridColumn dataField="adrLigne1" headerText="adre"></s:GridColumn>
    			</s:ArrayList>
    		</s:columns>
    Les données adhNom, adhPrenom... s'affichent correctement.

    Une idée. Merci par avance..

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    tu peux tester via PHP de faire un var_export dans un fichier de ta variable $row pour voir si le résultat est celui attendu. C'est peut être pour cela que Flex te montre pas toutes les données, il t'en manque peut être

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Par défaut
    Merci pour ton aide.
    J'ai fait une petite fonction qui fait un var_dump
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function logMe($var) {
        $filename = dirname(__FILE__) . '/__lognico.txt';          
        if (!$handle = fopen($filename, 'a')) {
            echo "Cannot open file ($filename)";         
            return;
         }          
        $toSave = var_export($var, true);    
        fwrite($handle, "[" . date("y-m-d H:i:s") . "]");     
        fwrite($handle, "\n");    
        fwrite($handle, $toSave);     fwrite($handle, "\n");     
        fclose($handle); 
    }
    J'ai testé dans comme ceci :
    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
    25
    26
    27
    public function getAllT_adherents() {
     
    		$this->throwExceptionOnError();
    		$stmt = mysqli_prepare($this->connection, 
    		"SELECT adh.adhId, adh.adhNom, adh.adhPrenom, adh.adhDateN, adh.adhSecu, adr.adrLigne1 
    		FROM t_adherents AS adh 
    		LEFT OUTER JOIN t_adresses AS adr ON adh.adhId = adr.adr_adhId");		
     
    		mysqli_stmt_execute($stmt);
    		$this->throwExceptionOnError();
     
    		$rows = array();
     
    		mysqli_stmt_bind_result($stmt, $row->adhId, $row->adhNom, $row->adhPrenom, $row->adhDateN, $row->adhSecu, $row->adrLigne1);
     
    	    while (mysqli_stmt_fetch($stmt)) {
    	      $rows[] = $row;
    	      $row = new stdClass();
    	      mysqli_stmt_bind_result($stmt, $row->adhId, $row->adhNom, $row->adhPrenom, $row->adhDateN, $row->adhSecu, $row->adrLigne1);
    	    logMe($row);
    	    }
     
    		mysqli_stmt_free_result($stmt);
    	    mysqli_close($this->connection);
     
    	    return $rows;
    	}
    et voilà ce que cela me retourne :

    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
    25
    26
    27
    [11-09-04 19:29:50]
    stdClass::__set_state(array(
       'adhId' => NULL,
       'adhNom' => NULL,
       'adhPrenom' => NULL,
       'adhDateN' => NULL,
       'adhSecu' => NULL,
       'adrLigne1' => NULL,
    ))
    [11-09-04 19:29:50]
    stdClass::__set_state(array(
       'adhId' => NULL,
       'adhNom' => NULL,
       'adhPrenom' => NULL,
       'adhDateN' => NULL,
       'adhSecu' => NULL,
       'adrLigne1' => NULL,
    ))
    [11-09-04 19:29:50]
    stdClass::__set_state(array(
       'adhId' => NULL,
       'adhNom' => NULL,
       'adhPrenom' => NULL,
       'adhDateN' => NULL,
       'adhSecu' => NULL,
       'adrLigne1' => NULL,
    ))
    Là où je ne comprend rien c'est que cela "log" bien le nombre d'enregistrement dans la base et que mon datagrid se complete bien pour adhID, adhNom mais rien pour adrLigne1. (j'ai également essayé les autres champs de ma table adresse et idem)

    Je ne comprends plus rien.

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    C'est normal, tu insères ton $row dans ton tableau puis tu affectes tes valeurs. Remplaces par ceci

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while (mysqli_stmt_fetch($stmt)) {
        $row = new stdClass();
        mysqli_stmt_bind_result($stmt, $row->adhId, $row->adhNom, $row->adhPrenom, $row->adhDateN, $row->adhSecu, $row->adrLigne1);
        $rows[] = $row;
        logMe($row);
    }

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Par défaut
    Merci pour ton aide...Toutefois j'ai toujours le même résultat même en essayant cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while (mysqli_stmt_fetch($stmt)) {
        $row = new stdClass();
        mysqli_stmt_bind_result($stmt, $row->adhId, $row->adhNom, $row->adhPrenom, $row->adhDateN, $row->adhSecu, $row->adrLigne1);
        $rows[] = $row;
        logMe($row);
    Je nage...

  6. #6
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Par défaut
    Bon j'avance un peu... (un peu mais juste un peu... )

    en fait avec logMe($rows) (et non pas row j'ai bien mes données y compris adrLigne1
    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
     
    [11-09-05 21:25:29]
    array (
      0 => 
      stdClass::__set_state(array(
         'adhId' => 1,
         'adhNom' => 'Toto',
         'adhPrenom' => 'bill',
         'adrLigne1' => '25 rue loulou',
      )),
      1 => 
      stdClass::__set_state(array(
         'adhId' => 2,
         'adhNom' => 'LILI',
         'adhPrenom' => 'Coco',
         'adrLigne1' => '12 rue de l\'orage',
    Bon je reviens donc à mon problème d'origine... pourquoi dans flex je n'arrive pas a afficher dans mon datagrid mon adrLigne1.... ?

    Je crois avoir une piste. J'ai également fait un formulaire lié à mon datagrid pour effectuer des modifications sur les enregistrements. Tout est ok pour mes champs de ma table T_Adherents mais pas pour ceux de la jointure issues de la tables T_Adresses.
    Voilà l'erreur :
    1119: Accès à la propriété adrLigne1 peut-être non définie, via la référence de type static valueObjects:T_adherents
    Donc je suis en train de me demander si j'utilise la bonne méthode pour faire la jointure.

    Des idées ?

Discussions similaires

  1. Zend DB delete join
    Par nahil dans le forum Zend_Db
    Réponses: 0
    Dernier message: 15/08/2014, 09h11
  2. [Flex4] Zend AMF, Remote Objects et Modules
    Par daav14 dans le forum Flex
    Réponses: 1
    Dernier message: 23/11/2010, 16h28
  3. [FB4] Zend AMF et Flash Builder
    Par Freyskeyd dans le forum Flex
    Réponses: 4
    Dernier message: 18/11/2010, 19h22
  4. [Flex4] Zend Amf Array PHP vers ArrayCollection Flex
    Par teumm dans le forum Flex
    Réponses: 4
    Dernier message: 02/11/2010, 23h33
  5. Flex + PHP + Zend AMF + Cairngorm
    Par adilou1981 dans le forum Flex
    Réponses: 0
    Dernier message: 08/07/2009, 13h28

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