Bonjour,

Je me retrouve avec un problème sur plusieurs niveaux. Je tourne depuis hier après midi, et après beaucoup de modifications de code, je pense avoir cerné le problème. Il y avait une erreur ailleurs, et de fil en aiguille j’ai réussi à l’isolé.
Je vais essayer d'être claire.

J'ai une table Item, User et Attrib.


User contient tous les utilisateurs de la base.

Item répertorie des toutes sortes d'item avec beaucoup de champs.

Attrib fait le lien entre les 2. Un utilisateur peut avoir un ou plusieurs item, par ailleurs il y a une date de début et de fin d'attribution.


Toutes les fonctions classiques sont implémentées et fonctionnent (ajouter, supprimer, modifier)


Pour l'attribution d'un objet, il suffit de cliquer sur 'modifier' un item et de mettre un nom dans le champ 'user'.

Les attributions sont bien réalisées, si on écrit un autre nom l'attribution change.
Quand on click sur un item on voit à qui il est attribué et ainsi que l'historique des attributions.


Dsl d'être long mais il me semblait important d'expliquer.

Le problème viens de faite que je n'arrive pas à faire apparaitre le nom de l'utilisateur dans le champ 'user' du formulaire item.

Il apparait par contre dans le tableau listant les champs et valeurs de item.

Après un fetchRow() avec les différentes jointures (User et Attrib étant exclu de la jointure car il me donnent des erreurs, en faite ils renvoient plusieurs résultats), je fait un affichage d'un item, en appelant une méthode (dans la vue) findOnUserByItemID() pour trouver le nom de l'utilisateur

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
28
29
30
31
 
<table class="table">
    <tr>
        <th>USER</th>
        <td>
            <?php
            $table = new Model_DbTable_Item();
            $user = $table->findOnUserByItemID($this->escape($this->item['item_id']));
            if ($user->count() == 1) {
                    $user = $user->current();
                    echo '<a href="';
                    echo $this->url(array('controller'=>'user','action'=>'get','id'=>$this->escape($user->user_id)));
                    echo '">';
                    echo $this->escape($user->user_firstName) . ' ' . $this->escape($user->user_lastName);
                    echo '</a>';
                    echo ' since ' . $this->escape($user->attribut_dateBegin);
            } else {
                    echo 'NO CURRENT USER';
                }
            ?>
        </td>
    </tr>
    <tr>
        <th>NAME</th>
        <td><?php echo $this->escape($this->item['item_name']);?></td>
    </tr>
    <tr>
        <th>PRICE</th>
        <td><?php echo $this->escape($this->item['item_price']);?></td>
    </tr>
etc ....

Maintenant je veux faire pareille pour le formulaire :

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
 
//action update
            $id = $this->_getParam('id', 0);
            if ($id > 0) {
                $table = new Model_DbTable_Item();
                $form->populate($table->getItem($id));
 
------------------------------------------------------------------
            //je souhaite rajouter ca mais ça ne marche pas :
                $user = $table->findOnUserByItemID($id);
                if ($user->count() == 1) {
                    $user = $user->current();
                    $form->populate($user);
                }            
            }
-------------------------------------------------------------------
J’utilise donc 2 fois populate().
Pour info findOnUserByItemID() retourne un fetchAll() avec une jointure entre Item, User et Attrib, avec une condition Where. Elle retourne toujours 1 ou 0 résultat.

Le code entre pointillés est le code que je veux rajouter, mais avec ce code j'ai une erreur
Catchable fatal error: Argument 1 passed to Zend_Form::populate() must be an array, object given, called in C:\wamp\www\application\controllers\ItemController.php on line 87 and defined in C:\wamp\www\library\Zend\Form.php on line 1922
Erreur de synthaxe ? Structurelle ?

Pouvez-vous m’aider.