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

Zend_Db PHP Discussion :

Zend et ajouter album


Sujet :

Zend_Db PHP

  1. #1
    Futur Membre du Club
    Zend et ajouter album
    Hello,

    Beaucoup de questions autour du tutorial Zend mais je n'y ai pas vu la mienne.
    Donc voilà la situation :

    --> J'affiche correctement les 2 albums comme dans le tutorial.
    --> j'ai activé le pdo_mysql.
    --> J'ai mis le output_buffering de php.ini sur ON

    Dès que je clique sur "Ajouter un nouvel album", les 2 champs apparaissent mais quand je valide :

    Fatal error: Uncaught exception 'Zend_Controller_Response_Exception' with message 'Cannot send headers; headers already sent in C:\Wamp\www\zf-tutorial\application\controllers\IndexController.php, line 2' in C:\Wamp\www\zf-tutorial\library\Zend\Controller\Response\Abstract.php:265 Stack trace: #0 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Response\Abstract.php(131): Zend_Controller_Response_Abstract->canSendHeaders(true) #1 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action\Helper\Redirector.php(192): Zend_Controller_Response_Abstract->setRedirect('/zf-tutorial/', 302) #2 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action\Helper\Redirector.php(348): Zend_Controller_Action_Helper_Redirector->_redirect('/zf-tutorial/') #3 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action\Helper\Redirector.php(430): Zend_Controller_Action_Helper_Redirector->setGotoUrl('/', Array) #4 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action.php(667): Zend_Controller_Action_Helper_Redirector->gotoUrl('/', Array) #5 C:\Wamp\www\z in C:\Wamp\www\zf-tutorial\library\Zend\Controller\Response\Abstract.php on line 265
    Et pourtant l'ajout marche !?!


    Même chose quand je valide la modification :
    Fatal error: Uncaught exception 'Zend_Controller_Response_Exception' with message 'Cannot send headers; headers already sent in C:\Wamp\www\zf-tutorial\application\controllers\IndexController.php, line 2' in C:\Wamp\www\zf-tutorial\library\Zend\Controller\Response\Abstract.php:265 Stack trace: #0 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Response\Abstract.php(131): Zend_Controller_Response_Abstract->canSendHeaders(true) #1 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action\Helper\Redirector.php(192): Zend_Controller_Response_Abstract->setRedirect('/zf-tutorial/', 302) #2 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action\Helper\Redirector.php(348): Zend_Controller_Action_Helper_Redirector->_redirect('/zf-tutorial/') #3 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action\Helper\Redirector.php(430): Zend_Controller_Action_Helper_Redirector->setGotoUrl('/', Array) #4 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action.php(667): Zend_Controller_Action_Helper_Redirector->gotoUrl('/', Array) #5 C:\Wamp\www\z in C:\Wamp\www\zf-tutorial\library\Zend\Controller\Response\Abstract.php on line 265
    Par contre, quand je clique sur le lien supprimer :
    Fatal error: Uncaught exception 'Zend_Controller_Action_Exception' with message 'IndexController::supprimerAction() does not exist and was not trapped in __call()' in C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action.php:480 Stack trace: #0 [internal function]: Zend_Controller_Action->__call('supprimerAction', Array) #1 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action.php(497): IndexController->supprimerAction() #2 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Dispatcher\Standard.php(238): Zend_Controller_Action->dispatch('supprimerAction') #3 C:\Wamp\www\zf-tutorial\library\Zend\Controller\Front.php(920): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #4 C:\Wamp\www\zf-tutorial\index.php(31): Zend_Controller_Front->dispatch() #5 {main} thrown in C:\Wamp\www\zf-tutorial\library\Zend\Controller\Action.php on line 480
    Pas facile le MVC !

    Merci de votre aide !

  2. #2
    Membre habitué
    Poste aussi ton code ça aidera beaucoup. Sinon on va devoir faire des suppositions.

  3. #3
    Futur Membre du Club
    Voici le code.
    Je tiens à préciser que je suis à la lettre le tutorial de Zend Framework sur PHP MVC, dispo sur le site Web de Developpez.com :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <?php
    class IndexController extends Zend_Controller_Action
    {
    	function init()
    	{
    	$this->initView();
    	Zend_Loader::loadClass('Album');
    	$this->view->baseUrl = $this->_request->getBaseUrl();
    	$this->view->user = Zend_Auth::getInstance()->getIdentity();
    	}
     
    	function indexAction()
    	{
    	$this->view->title = "Mes albums";
    	$album = new Album();
    	$this->view->albums = $album->fetchAll();
    	}
     
    	function ajouterAction()
    	{
    	$this->view->title = "Ajouter un nouvel album";
    	if ($this->_request->isPost()) {
    		Zend_Loader::loadClass('Zend_Filter_StripTags');
    		$filter = new Zend_Filter_StripTags();
    		$artist = $filter->filter($this->_request->getPost('artist'));
    		$artist = trim($artist);
    		$title = trim($filter->filter($this->_request->getPost('title')));
    			if ($artist != '' && $title != '') {
    			       $data = array(
    			        'artist' => $artist,
    				'title' => $title,
    				);
    				$album = new Album();
    				$album->insert($data);
    				$this->_redirect('/');
    				return;
    			}
    		}
    		// set up an "empty" album
    		$this->view->album = $album->createRow();
    		// additional view fields required by form
    		$this->view->action = 'ajouter';
    		$this->view->buttonText = 'Ajouter';
    	}
     
    	function modifierAction()
    	{
    		$this->view->title = "Modifier l'album";
    		$album = new Album();
    		if ($this->_request->isPost()) {
    			Zend_Loader::loadClass('Zend_Filter_StripTags');
    			$filter = new Zend_Filter_StripTags();
    			$id = (int)$this->_request->getPost('id');
    			$artist = $filter->filter($this->_request->getPost('artist'));
    			$artist = trim($artist);
    		      $title = trim($filter->filter($this->_request->getPost('title')));
    			if ($id !== false) {
    				if ($artist != '' && $title != '') {
    					$data = array(
    					'artist' => $artist,
    					'title' => $title,);
    					$where = 'id = ' . $id;
    					$album->update($data, $where);
    					$this->_redirect('/');
    					return;
    				} 
    				else {
    				    $this->view->album = $album->fetchRow('id='.$id);
    				}
    			}
    		} 
    		else {
    			// album id should be $params['id']
    			$id = (int)$this->_request->getParam('id', 0);
    			if ($id > 0) {
    				$this->view->album = $album->fetchRow('id='.$id);
    			}
    		}
    		// additional view fields required by form
    		$this->view->action = 'modifier';
    		$this->view->buttonText = 'Mettre à jour';
    		}
    	}
     
    	function supprimerAction()
    	{
    		$this->view->title = "Supprimer l'album";
    		$album = new Album();
    		if ($this->_request->isPost()) {
    			Zend_Loader::loadClass('Zend_Filter_Alpha');
    			$filter = new Zend_Filter_Alpha();
    			$id = (int)$this->_request->getPost('id');
    			$del = $filter->filter($this->_request->getPost('del'));
    			if ($del == 'Oui' && $id > 0) {
    				$where = 'id = ' . $id;
    				$rows_affected = $album->delete($where);
    			}
    		}	
    		else {
    			$id = (int)$this->_request->getParam('id');
    			if ($id > 0) {
    				// only render if we have an id and can find the album.
    				$this->view->album = $album->fetchRow('id='.$id);
    				if ($this->view->album->id > 0) {
    					// render template automatically
    					return;
    				}
    			}
    		}
    		// redirect back to the album list unless we have rendered the view
    		$this->_redirect('/');
    	}
     
    	function preDispatch()
    {
    $auth = Zend_Auth::getInstance();
    if (!$auth->hasIdentity()) {
    $this->_redirect('auth/login');
    }
    }

  4. #4
    Membre à l'essai
    Le code me semble juste...
    Peux tu nous donner la version de ton php et ton apache s'il te plait

  5. #5
    Membre régulier
    Peux-tu poster également ton index.php et ta vue ?

    En fait, tu as du préciser un header quelque part et ça doit entrer en conflit avec un header que Zend essaye de préciser aussi.

  6. #6
    Futur Membre du Club
    Mouais ...
    Un collègue vient de faire le même tutorial que moi mais celui de la version anglaise et le sien marche nickel.
    J'ai donc récupérer le sien et à première vue, les quelques modifications ne concerne pas ce que tu évoques.

    en tout cas, ça marche, faut juste que je relise un peu tout ça pour comprendre exactement le schmilblik.

    Merci !

  7. #7
    Membre à l'essai
    Une fois que tu aura trouvé ton erreur, n'hesite pas à nous la montrer histoire qu'on fasse pas la même erreur... ^^

  8. #8
    Futur Membre du Club
    Un petit mot sur ce tutoriel.
    Quel est l'intérêt de faire une traduction d'un tutoriel si c'est pour y déposer des coquilles que l'auteur original s'est abstenu de mettre?
    J'ai suivi ce tutoriel et ma foi c'est pas une mince affaire. En effet un tutoriel c'est avant tout consulté et suivi par des débutants en la matière et ici la matière c'est pas du gâteau. Donc un message à l'auteur de ce tuto version FR, si c'est pour reprendre un tutoriel et le traduire merci de le laisser tel quel et gardez vous de ne pas y mettre votre grain de sel ça évite de perdre du temps sur des erreurs qui freinent l'apprentissage.

  9. #9
    Candidat au Club
    novice,

    je fait remonter ce topic.

    J'avais typiquement le même message d 'erreur,

    pour ma part l'erreur venait du contrôleur qui etait en utf-8

    au lieu de UTF-8 sans BOM

###raw>template_hook.ano_emploi###