Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
j'utilise model MVC et j'ai erreur dans fichier index.phtml
voiçi le model :
class index extends Zend_Db_Table { protected $_name = 'matable'; protected $_primary = 'Id'; public function liste() { $select = $this->select() ->from(array('p' => 'matable'), array('id' => 'id','nom') ->where('condition = ?', 'AM') ->group('week(date,1)'); $r= $this->fetchAll ( $select ); return $r; } }
le controleur est le suivant:
class IndexController extends Zend_Controller_Action { function IndexAction() { $this->view->title = "titre"; $calcul= new index(); $var= $calcul>liste(); $this->view->var; } }
et le fichier index.phtml
<?php foreach($this->var as $var) : ?> <?php echo $this->escape($var->nom) ;?> <?php endforeach; ?>
mais j'ai erreur suivante:
Warning: Invalid argument supplied for foreach() in C:\Program Files\EasyPHP 2.0b1\www\zend\application\views\scripts\index\index.phtml on line 12
j'ai mis requete sql dans controlleur et ça marché mais vu que j'ai besoin d'afficher dans meme page plusieurs requetes ,donc les fonctions je dois les mettre dans model sinon zend affiche dans index.phtm que la fonction indexAction .
une idée?
merçi d'avance de prendre patience de lire ce sujet
Dernière modification par zend92500 (12-08-2008 17:16:07)
Hors ligne
Peut-être dans l'action index :
// $var= $calcul>liste(); // $this->view->var; $this->view->var= $calcul>liste();
Hors ligne
merçi pour votre réponse
j'ai eu ereur suivante
Fatal error: Call to undefined function liste() inC:\Program Files\EasyPHP 2.0b1\www\zend\application\views\scripts\index\index.phtml on line 15
pour vous expliquer mieux
par exemple je veux afficher nombre total des participant par type sois invité , inscris, administrateur
donc j'aurais amer de creer fonction sql ou je met come parametre type => function($type)
et dans la page index.phtml j'appele juste cette fonction 3 fois en changant seulement type chaque fois
j'espere que vous avez compris problematique
cordialement
Hors ligne
Oups j'avais pas vu mais :
//$this->view->var= $calcul>liste(); $this->view->var= $calcul->liste();
Il faut changer d'éditeur et utiliser quelque chose comme Eclipse, Netbeans, Aptana, Zend Studio ou Eclipse PDT on voit tout de suite ce genre de petites erreurs.
Hors ligne
merçi pour ta réponse
j'ai modifié mes trois fichier come suit
pour model
class index extends Zend_Db_Table { protected $_name = 'matable'; protected $_primary = 'Id'; public function liste($condition) { $select = $this->select() ->from(array('p' => 'matable'), array('id' => 'id','nom') ->where('condition = ?', '$condition') ->group('week(date,1)'); $r= $this->fetchAll ( $select ); return $r; } }
pour controleur j'appele fonction liste comme suit:
class IndexController extends Zend_Controller_Action { function IndexActionAction() { $this->view->title = "titre"; $calcul= new index(); $this->view->calcul= $calcul->liste('la condition que je veux'); } }
dans le fichier phtml j'ecris ce code
$ggg=$this->calcul ?> <pre> <?php print_r($ggg); ?>
il m'affiche resultat que je cherche ous forme des aray (affichage de print) mais apres résultat il m'affiche tous les paramtres de connexion ainsi les noms de la table.....
sinon vous savez pas coment avec cette fonction j'utilise echo car quand j'ai utilisé echo il m'affiche erreur
Object of class Zend_Db_Table_Rowset could not be converted to string in C:\Program Files\EasyPHP
Hors ligne
liste() avec fetchAll retourne des objets Zend_Db_Table_Rowset (ou ya bcp d'infos en + des données), un foreach dans ta vue gere bien ces objets. On peut transformer sinon ca en tableau :
$r= $this->fetchAll ( $select )->toArray();
ben le debugging, en moins bien qu'un debugger il ya :
Zend_Debug::dump( $ggg, 'ggg vaut : ');
qui affiche ca super propre.
Hors ligne
salut et merçi pour ton aide et désolé d'avoir répondu un peu tard
j'ai essayé for each et ça marché
mais le probleme si par exemple je veux faire resultat d'une requete de somme que dois me retourner un seul resultat
par exemple
nombre total de conexion est 999
je peux pas utiliser foreach
sinon je vais essayer array peut etre ça va marcher
Hors ligne
je vais utiliser array_sum de php ça me donne total de foreach
et ça va m'eviter de creer autre requete
Hors ligne