Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjours à tous, bon je suis débutant en zend framework je vien de commencer y a à peine quelque semaine et je voudrai savoir comment fais t'on pour crée une requête sql du genre Select contenu where id=1 par exemepl et comment l'afficher dans une View index.phtml. Merci
Voici code dans le model il y a Auximad.php
Code: <?php namespace Auximad\Model; class Auximad { public $id_desc; public $type; public $titre; public $contenu; public function exchangeArray($data) { $this->id_desc = (isset($data['id_desc'])) ? $data['id_desc'] : null; $this-> type = (isset($data['type'])) ? $data['type'] : null; $this->titre = (isset($data['titre'])) ? $data['titre'] : null; $this->contenu = (isset($data['contenu'])) ? $data['contenu'] : null; } }
ensuite voici le code de AuximadeTable
<?php namespace Auximad\Model; use Zend\Db\TableGateway\TableGateway; class AuximadTable { protected $tableGateway; public function __construct(TableGateway $tableGateway) { $this->tableGateway = $tableGateway; } public function fetchAll() { $resultSet = $this->tableGateway->select(); return $resultSet; } public function getAuximad($Id) { $Id = (int) $Id; $rowset = $this->tableGateway->select(array('Id' => $Id)); $row = $rowset->current(); if (!$row) { throw new \Exception("Could not find row $Id"); } return $row; } public function saveAuximad(Auximad $description) { $data = array( 'Type' => $description->type, 'Titre' => $description->titre, 'Contenu' => $description->Contenu, ); $Id = (int) $description->Id; if ($Id == 0) { $this->tableGateway->insert($data); } else { if ($this->getAuximad($Id)) { $this->tableGateway->update($data, array('Id' => $Id)); } else { throw new \Exception('Description id does not exist'); } } } public function deleteAuximad($Id) { $this->tableGateway->delete(array('Id' => (int) $Id)); } } ?>
Merci d'avance
Hors ligne
bonjour,
Tu créer une nouvelle méthode dans ton fichier AuximadeTable.php (getPersonal() par exemple).
Dedans tu fais ta requête : http://framework.zend.com/manual/2.0/en … b.sql.html il y a la réponse pour la mis en forme de ta requête.
Ensuite tu récupère le résultat dans ton contrôleur, et tu l'envoi à ta vue.
[lang=php] $result = $this->getAuximadeTable()->getPersonal(); return new ViewModel(array( 'resultat' = $result; ));
Dernière modification par romsVLM (25-11-2014 15:36:24)
Hors ligne
ok merci mais se que je sais vraiment pas c'est comment la syntaxe des requêtes avec zend
car avec ses deux model là quand j'affiche dans le index.phtml bah je fais
foreach ($this->auximad as $rep) : echo nl2br($this->escapeHtml($rep->contenus)); endforeach
et direct sa affiche tous et pourtant c'est pas se que je veux
Hors ligne
[lang=php] public function getPersonal($var) { $id = (int) $var; $resultSet = $this->tableGateway->select(function($select) use($id) { $select->columns(array('pack_id','pack_name','pack_price', 'pack_img')) ->where(array('pack_id'=>$id) }); return $resultSet; }
Dans le controleur, je récupère le résultat que j'envoi à la vue comme montré dans le post précédent.
Dans la vue j'affiche :
[lang=phtml] <?php foreach($this->resultats as $res) : ?> pack_id : <?php echo $res->pack_id.'<br/>'; ?>; pack_name : <?php echo $res->pack_name.'<br/>'; ?>; pack_price : <?php echo $res->pack_price.'<br/>'; ?>; pack_img : <?php echo $res->pack_img.'<br/>'; ?>; <?php endforeach; ?>
j'accède ainsi aux éléments que j'ai sélectionné dans mon select
Dernière modification par romsVLM (25-11-2014 16:28:00)
Hors ligne
Merci beaucoup sa m'a aidé
Hors ligne
Un petit passage rapide, pas trop le temps en ce moment.
Je ne vais pas répondre à la question, ça a déjà été fait. Cependant je suis un peu choqué par ce que j'ai lu.
Je passe rapidement sur le transtypage de $description->Id et sur le test ==0 (dans saveAuximad) auquel je préfère un empty (sauf besoin express), qui gère l'absence dans plusieurs états possibles (0, null, false, tableau/chaîne vide...). D'ailleurs tu transtypes pour à la finale ne faire qu'une évaluation avec l'opérateur "==" qui, par définition, va de toute façons transtyper ta valeur pour la comparer à l'entier 0.
Ensuite lancer une exception parce qu'on ne trouve pas un résultat au retour d'une requête à la bdd, je ne suis vraiment pas fan. Ce n'est pas une erreur, mais tout simplement qu'il n'y a pas de résultat.
Je ne sais pas si tu vas garder cette architecture Ced mais dans ta fonction saveAuximad tu fais un :
[lang=php] if ($this->getAuximad($Id)) { $this->tableGateway->update($data, array('Id' => $Id)); } else { throw new \Exception('Description id does not exist'); }
Sauf que tu ne passeras jamais dans le else puisque tu auras déjà lancé une exception dans getAuximad.
Je ne le répéterai jamais assez, il est important d'apprendre à programmer avant de se lancer dans un framework.
Aujourd'hui tout le monde jure par les frameworks, si bien que beaucoup de jeunes développeurs se lancent tout de suite dedans sans même faire l'apprentissage des bases de la programmation notamment l'algorithmique.
Le framework (orm inclus), de par son architecture facilite et accélère les développements avec des processus sous-jacents. Ce qui est bien pratique mais ne rend pas service au nouveau venu car ces processus sont en effet plein d'enseignements particulièrement quand on les développe (ou cherche à les développer) soi-même.
Il ne faudrait pas brûler les étapes. Utiliser un framework est une chose aisée, maîtriser la programmation est bien plus ardu. D'ailleurs, lors d'un recrutement, si on vous fait passer des tests, on vous évaluera sur du PHP (le cas échéant) et non pas sur du framework. Un bon développeur PHP n'ayant jamais pratiqué de framework sera largement préféré à un "mauvais" qui utilise déjà un framework.
Hors ligne
tu t'es trompé de post non ?
Hors ligne