Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Cela fait 3 heures que je galère avec une satané requete qui pourtant parait archi simple. je mexplique :
Voici la table sur laquelle j'agis :
tarif(#saison,#categorie,tarif)
(avec le couple #saison et #categorie comme clé primaire et étrangère).
J'ai bien sur crée la classe relative à la table, et donc je fais :
$tarifs=new Tarif; //ou $tarifs=new Tarif(); $letarif=$tarifs->createRow(); //affectation de mes valeurs $letarif->saison=$sai; $letarif->categorie=$cat; $letarif->tarif=$valeur; //enregistrement du tuple : $letarif->save();
Il est écrit dans le livre de J.Pauli que la méthode save() faisait soit un insert soit un update ce qui m'arrange bien.
La syntaxe et la logique me semblent correctes si je m'en tiens à tout ce que j'ai pu lire (internet+livre), et pourtant la ligne $letarif->save() me fait une "An application has occured - Application Error".
Je me suis donc lancé dans une mise en place du log d'érreur, et d'apres le livre, et internet, voici ce que j'ai écrit dans mon bootstrap :
// ************************** LOG ****************************** $log = new Zend_Log($writer = new Zend_Log_Writer_Stream('../application/' . $config->logfile)); // Ajout de paramètres à enregistrer, adresse ip et navigateur $log->setEventItem('user_agent',$_SERVER['HTTP_USER_AGENT']); $log->setEventItem('client_ip',$_SERVER['REMOTE_ADDR']); $log->addPriority('USER', 8); // Ajout des paramètres enregistrés dans le format du journal à écrire $format = '%client_ip% %user_agent%' . Zend_Log_Formatter_Simple::DEFAULT_FORMAT; // Ajout du format du journal au log $writer->setFormatter(new Zend_Log_Formatter_Simple($format)); Zend_Registry::set('log', $log);
Je me suis très inspiré de l'exemple du livre.
Et puis ensuite pour que les erreurs s'écrivent, j'ai mis :
try{ $frontController->dispatch(); // dispatche ! } catch (Zend_Exception $e) { $log->crit($e); $log->log($e,Zend_Log::DEBUG); $log->log("toto",Zend_Log::DEBUG); }
Par ailleurs quand je fais un $log->log("toto",Zend_Log::DEBUG); HORS d'une boucle j'ai bien une entrée dans le fichier log, mais quand je mets cette ligne dans le traitement de l'exception, aucunes entrée. De même si dans le traitement je mets echo "bonjour", rien à faire non plus.
Du coup je galère à savoir d'ou vient mon erreur.
Si vous saviez ce qu'il se passe ce serait sympa de me filer un coup de main.
Merci beaucoup .
Dernière modification par gostbuster (26-03-2009 16:42:02)
Hors ligne
Je viens de remarquer une erreur supplémentaire, dans firebug il est écrit :
500 Internal Server Error (par contre rien dans le log d'erreur d'apache).
Dernière modification par gostbuster (26-03-2009 15:57:54)
Hors ligne
Bon ben dans ma view error j'ai commenté :
//if ('development' == $this->env):
ce qui m'a permit de voir l'erreur, il y a une contrainte d'intégrité (le truc trop con),
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicata du champ '1-1' pour la clef 'PRIMARY'
et ce même avec le $_sequence = true;
je pensais pourtant que la méthode save(), faisait soit un update, soit un insert.
dans le livre il est écrit :
"Remarquez que la méthode save() est intelligente. S'il s'agit d'une modification d'un enregistrement existant, alors elle exécutera une requête de type update. Dans le cas contraire, une requête insert sera alors utilisée.(p 64)
Soit je comprends mal cette phrase, soit il y a un sérieux problème...
merci
Hors ligne
Pages: 1