Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/07/2011, 09h02   #1
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
Par défaut comment transmettre une variable dans un modèle ?

Bonjour a tous, je suis entraînt de crée des images a visualiser via une base de donnnée, j'amerais transmettre une information pour connâitre l'élément courant de l'image et de l'utiliser pour faire une pagination, par contre je ne sais pas comment m'y prendre, faut 'il dans la class IndexController crée un attribut ?
Code :
1
2
3
4
5
6
7
8
9
10
 
class IndexController extends Zend_Controller_Action
{
     public $image_en_court= 1 ; //on commence la requete pour récup les images à 1
public fonction init()
{
......
}
 
}
ou faut mettre cette attribut dans la methode
Code :
1
2
3
4
5
6
 
    public function init()
    {
        $this->view->jQuery()->enable();
     public  $image_en_court= 1 ; //on commence la requete pour récup les images à 1
    }
une fois que j'ai cette variable, comment je fais pour l'envoyer à traves le modèle ou qu'il faut l'envoyer directement sur la vue?

voici ce que je pensais comme enchaînement

- récuperer $image_en_cour
- récupérer le nombre maximum d'image a afficher
-determiner un nombre par page (totalimage/ceil)
- on fait une requête qui commence par $image_en_cour
- on fait une boucle avec le nombre par page et j'incrémente $ image_en_cour a chaque fois que l'image a été récupérer



voici la methode qui appelle les images
Code :
1
2
3
 
        $image = new Application_Model_DbTable_Image();
        $this->view->image=images->fetchAll(); //comment récupérer le nombre total d'élément peut être que fechAll() n'est pas fait pour cela?
merci d'avance de vos réponse, et de vos conseils
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 09h26   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Je n'ai absolument rien compris à ton message du moins le début, du coup très dur de comprendre la suite.
Je t'invite à te relire et formuler correctement tes besoins
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 09h53   #3
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
je vais essayer de reformuler la demande

j'ai une base de donnée avec le nom des images et leur miniature

Code :
1
2
3
4
5
6
7
8
9
 
TABLE IMAGE
-------------------
id_image    | id_appartient_a       | url_image
1             |  2                    |  b1
2             |  2                    |  b2
3             | 2                     |  b3
4             | 44                   |  b4
5             |44                    |  b5
mon but est de faire une requête dans cette table avec le modèle Image

- je souhaite connaître combien au total il y a de proprietaire
- je recherche dans cette table tous les image qui appartient à "2"
maintenant si je fait une fetchAll(), je vais récupérer les 3 images (b1,b2,b2)
+celle d'un autre proprietaire (b4,b5)

avec mon controller j'ai récupérer toutes les images
Code :
1
2
3
4
5
6
7
 
    public function indexAction()
    {
        Application_Model_DbTable_image();
        $this->view->image=$image->fetchAll();
 
    }
dans ma vu j'affiche donc le résultat
Code :
1
2
3
4
5
6
7
8
 
    <?php foreach ($this->images as $image) : ?>
        <tr>
            <td><?php echo $this->escape($image->id_image); ?></td>
            <td><?php echo $this->escape($car->prporietaire); ?></td>
            <td><?php echo $this->escape($car->image miniature); ?></td>  
        </tr>
    <?php endforeach ?>
La vu va m'afficher tous les résultats en même temps,ce que je voudrais c'est qu'il m'affiche d'abord par groupe d'utilisateur

-toutes les images qui appartiennent à 2
-puis celle de 44
etc...

lorsque qu'on passera aux prochaine proporietaire on augementera une variable à 1, cette variable servira à determiner la pagination, on veut visualler par exemple 5 propriétaires par pages.

Peut être que la bonne method n'est pas de chercher toutes les données de cette table , de cherchercher avec une requete juste le proprietaire numéro 2 puis ensuite le suivant mais si je fais cela, il faut une boucle de requêtes
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 12h36   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Donc j'ai bien compris plus ou moins ton problème, maintenant j'aimerai savoir comment tu veux que le résultat visuel soit.

Une petit screen ou autre serait bien.
Car la de ce que je comprends tu veux juste que ça soit afficher par ordre à qui ça appartient, dans ce cas là un order devrait te suffire
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h02   #5
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
Pour le moment comme je débute je souhaite au moins que cela soit afficher chronologiquement l'id "appartient a".

voici un petit croquis c'est plus simple de comprendre, d'ailleur c'est ce que je dois avoir à l'image.
cela ressemblerai plustôt ceci en html avec le premier résutat
Code :
1
2
3
4
5
6
7
 
<div>
  <h1>proporiot $appartient_a</h1>
  <ul>
      <li>image$i</li> //boucle for répéter 3 fois
 </ul>
</div>


j'ai mis id_appartient_a 44 au pif mais théoriquement si l'on efface pas un tulpe de cette colonne on a normalement un nombre qui ne cesse d'augmenter avec un pas de 1.

pour les images normalement je sais d'avance qu'il y aura toujours 3 images, si j'ai mis un "b" au début c'est paceque c'est pour utiliser les regex, normalement je recherche seulement les images qui commence par "b" pour les affichées.
Images attachées
Type de fichier : jpg test.jpg (24,5 Ko, 19 affichages)
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h16   #6
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
donc tu rajouter la contrainte order avec le champs sur lequel tu veux que ça soit trié et dans ton foreach tu fais un test et si c'est un nouveau proprio (différent du précédent) tu fais quelque chose
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h32   #7
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
Code :
1
2
 
	donc tu rajouter la contrainte order avec le champs sur lequel tu veux que ça soit trié
oui je pense que je devrais trier ma colonne id_appartient_a avant d'utiliser cette information
si je comprend bien je dois changer ma requête qui est dans le controleur en ajoutant une contrainte ?
Code :
1
2
3
 
     $image = new Application_Model_DbTable_Image();
     $this->view->image=images->fetchAll(); //je doit modifier cette requete afin qu'il me range par ordre croissant id_appartient ?
Code :
1
2
 
tu fais un test et si c'est un nouveau proprio (différent du précédent)
donc je comprend bien je dois utiliser ceci par exemple
Code :
1
2
3
4
5
6
7
8
9
10
 
$temp = resultat + 1
if(resultat == resultat =+1)
{
   on continue d'afficher les images
}
else
{
on passe au prochain propriot
}
je vais essayer d'abord de tous afficher une fois que j' aurais fini j'ajouterais la pagination, il faut que j'avance doucement pas à pas.
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h47   #8
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Oui il faut que tu modifie ton appel avec fetchAll.
Par contre ton test je doute qu'il fonctionne mais fais déjà la première étape
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 17h31   #9
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
En voulant simplifier au maximum je pense que je ne vais pas y arriver comme je le pensais

Dans mon histoire il y a 2 tables donc 2 modèles

Code :
1
2
3
 
TABLE IMAGE
--id_image-- | id_proprio|url
et la TABLE PROPRIO

Code :
1
2
 
--id-proprio|nom|prenom|age
Au début je pensais que je recherche toutes la valeur des proprios et je les affiches ensuite les images mais cela va tous mélanger , je pense que je n'ai pas le choix de faire une jointure entre ces 2 tables

Une fois qu j'ai le résultat de la jointure je commence à le trier .

j'ai vu qu'il fallait utliser select() pour faire une jointure, mais
comment je fais pour lier les 2 modèles Images et Proporios


ou pour faire la requête il faut utliser ceci dans le controleur
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host ' => '127.0.0.1',
'username' => 'root',
'password' => blalbal',
'dbname' => 'gallerie'
));
 
$select = $db->select() //utilisation de la methode select pour la jointure
 
$select->from(array("p" => "id_proprio"), "nom","prenom","age")
->join(array("i" => "url"),
"p.id_proprio=i.id_proprio",
->ORDERBY id_image ASC;
bon je pense que ma requête est fausse et un peut tirer par les cheuveux mais je souhaite savoir si c'est cette methode qu'il faut faire ?
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 19h50   #10
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Oui il te faut faire une jointure dans ce cas là par contre la tienne est en effet fausse, il te faut les noms de tes tables et respecter lire la documentation en ce qui concerne la création d'une requete sous zend avec jointure, après on peut te corriger mais cela te permet d'apprendre également
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 20h59   #11
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
je suis entrain de chercher sur la doc qui fait 1000pages comment je fait ma jointure (la 1.7), c'est super long

avec ce script
Code :
1
2
3
 
        $image = new Application_Model_DbTable_Image();
        $this->view->image = $imags->fetchAll();
comment zend fait pour savoir la connexion mysql puisque c'est automatique, sur les quelques exemple lorsqu'il fait une requête il n'utilise pas $db ??

Code :
1
2
3
4
5
6
7
 
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 21h04   #12
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Dans les exemple c'est certainement en MVC et ce sont des classes qui étendent Zend_Db_Table, du coup en faisant $this ça suffit mais toi tu peux utiliser $db.

exemple :
Code :
$db->select()->from('table')->where($db->quoteIdentifier('id').' = ?', $id)
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 07h23   #13
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
je vais faire un autre poste car je ne maître pas encore la lecture d'une donnée dans une table.
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h34.


 
 
 
 
Partenaires

Hébergement Web