Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-02-2009 14:46:20

ClemClem
Nouveau membre
Date d'inscription: 09-02-2009
Messages: 7

[Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

Bonjour à tous.

Voila je suis sur un projet assez complexe dont on doit développer avec une base de données. Cette base de donée est tellement énorme qu' on doit développer avec des vues SQL. Et donc pour éviter toute modification directement dans le code, j'utilise Zend_Db_Table_Abstract directement si vous voyez ce que je veux dire.

Mais ce n'est pas le soucis, mon soucis est que j'ai une requête SQL assez complexe ou dans la clause WHERE j'utilise le mot clé EXTRACT qui permet (aux non connaisseurs) de choisir soit que l'année d'un champ de type date, ou le mois, ou le jour. Donc pour commencer on a développé en faisant la requête directement dans le code :

Code:

$db = Zend_Registry::get('db');
        $sql = sprintf("SELECT COD_OFF, LIB_OFF
        FROM INSSET.OFFRE_STAGE 
        LEFT JOIN INSSET.ENTREPRISE_LOC USING(COD_ENT)
        LEFT JOIN INSSET.TUTEUR USING(COD_TUT)
        WHERE EXTRACT(YEAR FROM DATE_DEP) = %s AND EXTRACT(MONTH FROM DATE_DEP) = %s
        ORDER BY DATE_DEP DESC",
        $db->quote($annee),
            $db->quote($mois)
        );
$resultat = $db->fetchAll($sql);

Et donc ca fonctionne nickel comme ca, donc j'ai crée ma vue, ensuite fait ma page .php de Zend_db_table correspondante, et à la place de ma requête j'ai mis ca :

Code:

$db = Zend_Registry::get('db');
        Zend_Db_Table_Abstract::setDefaultAdapter($db);
        require_once APPLICATION_PATH . '/models/DbTables/OffreStageEtudiant.php'; 
        $tableIndex = new Model_DbTable_OffreStageEtudiant;
        $sql = $tableIndex->select()
                 ->where("EXTRACT(YEAR FROM DATE_DEP) = ?",$year)
                 ->where("EXTRACT(MONTH FROM DATE_DEP) = ?",$mois);
        $resultat = $db->fetchAll($sql);

Et voila que après cela il m'affiche une erreu bizare qui est :


Fatal error: Uncaught exception 'Zend_Controller_Response_Exception' with message 'Cannot send headers; headers already sent in /var/www/stageUPJV/branches/site/library/Application/Db/Vue/Abstract.php, line 20' in /var/www/stageUPJV/branches/site/library/Zend/Controller/Response/Abstract.php:281 Stack trace: #0 /var/www/stageUPJV/branches/site/library/Zend/Controller/Response/Abstract.php(299): Zend_Controller_Response_Abstract->canSendHeaders(true) #1 /var/www/stageUPJV/branches/site/library/Zend/Controller/Response/Abstract.php(727): Zend_Controller_Response_Abstract->sendHeaders() #2 /var/www/stageUPJV/branches/site/library/Zend/Controller/Front.php(984): Zend_Controller_Response_Abstract->sendResponse() #3 /var/www/stageUPJV/branches/site/application/bootstrap.php(69): Zend_Controller_Front->dispatch() #4 /var/www/stageUPJV/branches/site/www/index.php(3): require_once('/var/www/stageU...') #5 {main} thrown in /var/www/stageUPJV/branches/site/library/Zend/Controller/Response/Abstract.php on line 281



Et donc voila j'aimerai savoir si quelqu'un a déja eu ce problème, et si quelqu'un sait comment résoudre cela pour que je fasse avec la deuxième méthode.

Voila bonne journée à vous,

ClemClem

Dernière modification par ClemClem (10-02-2009 10:57:54)

Hors ligne

 

#2 09-02-2009 15:55:18

dmathieu
Membre
Lieu: Lyon, France
Date d'inscription: 09-02-2009
Messages: 50
Site web

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

Encore je me disais bien avoir vu ce pseudo là quelque part wink

L'erreur est pourtant simple lorsqu'on la déchiffre :

Cannot send headers; headers already sent in /var/www/stageUPJV/branches/site/library/Application/Db/Vue/Abstract.php, line 20

Vraissemblablement dans ton document library/Application/Db/Vue/Abstract.php, tu affiche quelque chose et du coup les headers http sont envoyés et tu ne peut pas les réenvoyer plus loin.


Il faut aimer les autres, non pour soi, mais pour eux - Proverbe Espagnol

Hors ligne

 

#3 09-02-2009 16:14:55

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

tu enlève tous les ?> en fin de tous tes fichier php

et ça devrait rentrer dans l'ordre
euprime aussi comme je l'ai vu dans de nombre cas les code contenant

Code:

<?php
....
?>
<?php

car lorsque le parser lit ça il envois un \n (celui entre ?> et <?php) au client et ferme donc l'envois de header
de même que ?> en fin de fichier peut facilement se retrouver suivit de caractères invisibles qui sont anvoyé au client et bloquent donc l'envoie de headers.


A+JYT

Hors ligne

 

#4 09-02-2009 17:17:31

ClemClem
Nouveau membre
Date d'inscription: 09-02-2009
Messages: 7

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

dmathieu a écrit:

Encore je me disais bien avoir vu ce pseudo là quelque part wink

C'est à dire? On c'est déja vu? Et ce n'est que mon premier message, tout comme toi

dmathieu a écrit:

L'erreur est pourtant simple lorsqu'on la déchiffre :

Cannot send headers; headers already sent in /var/www/stageUPJV/branches/site/library/Application/Db/Vue/Abstract.php, line 20

Vraissemblablement dans ton document library/Application/Db/Vue/Abstract.php, tu affiche quelque chose et du coup les headers http sont envoyés et tu ne peut pas les réenvoyer plus loin.

Autrement le soucis c'est que la deuxième méthode je l'utilise depuis longtemps sur d'autre requête et il n'y a que celle la avec le EXTRACT qui m'embete, autrement le reste ca fonctionne nickel chrome, mes autres requêtes ne sont fait qu'avec la deuxième méthode...


sekaijin a écrit:

tu enlève tous les ?> en fin de tous tes fichier php

et ça devrait rentrer dans l'ordre
euprime aussi comme je l'ai vu dans de nombre cas les code contenant
Code:

Code:

<?php
....
?>
<?php

car lorsque le parser lit ça il envois un \n (celui entre ?> et <?php) au client et ferme donc l'envois de header
de même que ?> en fin de fichier peut facilement se retrouver suivit de caractères invisibles qui sont anvoyé au client et bloquent donc l'envoie de headers.

Oui c'est pas pour dire, mais j'ai déjà eu un cours dessus sur ce framework, et on m'a dit que chaque fin de fichier ne doit pas contenir les "?>"...

Donc l'erreur n'est pas la. Mais merci tous les deux de vouloir m'aider.

Dernière modification par ClemClem (09-02-2009 17:18:05)

Hors ligne

 

#5 09-02-2009 17:22:13

dmathieu
Membre
Lieu: Lyon, France
Date d'inscription: 09-02-2009
Messages: 50
Site web

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

C'est à dire? On c'est déja vu? Et ce n'est que mon premier message, tout comme toi

Oui. Jeudi dernier, toute la journée. J'étais le gars en train de faire un cours incompréhensible sur l'estrade.


Il faut aimer les autres, non pour soi, mais pour eux - Proverbe Espagnol

Hors ligne

 

#6 09-02-2009 17:45:52

ClemClem
Nouveau membre
Date d'inscription: 09-02-2009
Messages: 7

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

dmathieu a écrit:

C'est à dire? On c'est déja vu? Et ce n'est que mon premier message, tout comme toi

Oui. Jeudi dernier, toute la journée. J'étais le gars en train de faire un cours incompréhensible sur l'estrade.

Ha oui Damien, mais non il était sympa le cours bon dommage que Aptana n'a pas fonctionné comme il fallait au début.

Bon évitons de flooder ici, et revenons à nos moutons wink...

Hors ligne

 

#7 09-02-2009 18:47:10

eexit
Membre
Lieu: Lyon (69)
Date d'inscription: 09-02-2009
Messages: 10
Site web

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

ClemClem a écrit:

Oui c'est pas pour dire, mais j'ai déjà eu un cours dessus sur ce framework, et on m'a dit que chaque fin de fichier ne doit pas contenir les "?>"...

Donc l'erreur n'est pas la. Mais merci tous les deux de vouloir m'aider.

Facultatif.. Ils y sont sur Be-Zend smile

Si tu veux, tu me monteras demain et j'essayerais de voir avec toi.

Dans tous les cas, je ne sais pas à quoi il sert ton Zend_Db_Table_Abstract ?


Joris Berthelot, chef du projet Be-Zend !

Hors ligne

 

#8 09-02-2009 19:59:41

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

peux tu nous donner le code de la Application_Db_Vue_Abstract qu'on vois ce qu'il s'y passe

ce n'est pas parce que ça marche bien une fois que tu est passé dans toutes les partie de ton code et que donc ça marchera à chaque fois

A+JYT

Hors ligne

 

#9 10-02-2009 09:56:28

ClemClem
Nouveau membre
Date d'inscription: 09-02-2009
Messages: 7

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

Alors voila j'ai regardé que pour utiliser le Zend_db_table il fallait mettre ca, ca fonctionne comme ca je ne vais pas changer big_smile

Autrement voila l'extrait de ma classe Application_Db_Vue_Abstract :

Code:

<?php

class Application_Db_Vue_Abstract extends Zend_Db_Table_Abstract
{
    public function insert(array $data) 
    { 
       throw new Zend_Exception('Insertion interdit');
        return false; 
    } 

    public function update(array $data, $where) 
    { 
        throw new Zend_Exception('update interdit');
        return false; 
   }
}

Mais bon voila je l'ai fait je ne sais pas combien de fois et c'est avec le EXTRACT qui m'embete.... Ca veut bien dire qu'il n'accepte pas quelque chose...

Hors ligne

 

#10 10-02-2009 10:39:28

eexit
Membre
Lieu: Lyon (69)
Date d'inscription: 09-02-2009
Messages: 10
Site web

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

Tu sais que j'ai toujours pas saisi ton problème avec EXTRACT...
Dans tous les cas, si le problème de ton topic est résolu et que tu peux mettre à jour le titre, rajoute [RESOLU] devant smile


Joris Berthelot, chef du projet Be-Zend !

Hors ligne

 

#11 10-02-2009 10:41:55

ClemClem
Nouveau membre
Date d'inscription: 09-02-2009
Messages: 7

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

Ba non il n'est pas résolu... On ne m'as pas donné la solution. Mais bon je vois que tout le monde est comme moi et qui bloque sur ca.

Hors ligne

 

#12 10-02-2009 10:45:46

eexit
Membre
Lieu: Lyon (69)
Date d'inscription: 09-02-2009
Messages: 10
Site web

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

Tu seras en cours cet aprem ?


Joris Berthelot, chef du projet Be-Zend !

Hors ligne

 

#13 10-02-2009 10:57:18

ClemClem
Nouveau membre
Date d'inscription: 09-02-2009
Messages: 7

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

Bon en faite ca y est c'est résolu, j'ai suivi le conseil de sekaijin, avoir les balises <?php ... ?>, j'ai enlevé la balise qui termine le php, c'est à dire le ?>, quand tu m'a demandé de te faire voir la vue j'ai regardé et il y avait cette balise, je l'ai enlevé et donc voila ca fonctionne mais je ne comprendrai pas pourquoi sur certaine requete precedemment faite ca fonctionner... J'aurai toujours du mal à comprendre, mais emrci à toi même à vous les gars de l'INSSET... Ca fait plaisir que je me sens moins seul de la licence... tongue

Allez bonne journée, et oui je suis la cet après midi, à bientot (je modifie le titre... ) wink

Hors ligne

 

#14 10-02-2009 10:59:39

dmathieu
Membre
Lieu: Lyon, France
Date d'inscription: 09-02-2009
Messages: 50
Site web

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

Certains éditeurs de texte peuvent ajouter des caractères invisibles en fin de document.
Du coup tu a un caractère que tu ne vois pas mais qui est bien présent et qui force l'envoi des headers.

En supprimant le ?> il a beau être présent il n'est pas interprété par php car invisible et tu n'a pas de problèmes smile


Il faut aimer les autres, non pour soi, mais pour eux - Proverbe Espagnol

Hors ligne

 

#15 10-02-2009 11:31:21

ClemClem
Nouveau membre
Date d'inscription: 09-02-2009
Messages: 7

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

D'accord, j'ai juste quelque chose à dire ce soir je dormirai moins bête avec ce que j'ai appris ce week end.

Merci à vous pour ces éclaircissements.

Hors ligne

 

#16 10-02-2009 18:08:20

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: [Résolu][Zend_db_Select][Zend 1..6.1] Faire un EXTRACt de postgreSQL

le ?> est un piège courant et les transfer FTP ou SCP peuvent parfois aussi lui ajouter des caractères invisibles.

je te conseille maintenant de remplacer le where('EXTRACT... par un appel à Zend_Db_Expr

A+JYT

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages