Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-10-2010 15:51:22

Hall
Membre
Date d'inscription: 23-08-2010
Messages: 54

Perte de la connexion a la base de données dans mon include

Bonjour,

J'avais un code sur ma page d'accueil, qui fonctionnait a merveille.
Je sors cette brique de code pour la mettre dans un fichier a part et plus rien ne fonctionne.
Pour la connexion a la base je lui rajoute même un require pour mon bootstrap et rien n'y fait.

Voila mon include:

Code:

<?= $this->partial('./includes/recruteAgence.phtml'); ?>

Voilà la page en question:

Code:

<?php
try {
    require './application/bootstrap.php';
} catch (Exception $exception) {
    echo '<html><body><center>'
       . 'An exception occured while bootstrapping the application.';
    mail('test@test.fr','An exception occured while bootstrapping the application',nl2br(htmlentities(print_r($exception,true))));
    if (defined('APPLICATION_ENVIRONMENT')
        && APPLICATION_ENVIRONMENT != 'production'
    ) {
        echo '<br /><br />' . $exception->getMessage() . '<br />'
           . '<div align="left">Stack Trace:'
           . '<pre>' . $exception->getTraceAsString() . '</pre></div>';
    }
    echo '</center></body></html>';
    exit(1);
}

 ?>
 <div class="title_block side-box last" style="padding-top: 0;"><h2 class="header-blue" style="text-align: center;color: #888">Les agences qui recrutent</h2></div>
                            <?php
                            $col[] = array_slice($this->postes,0,7);
                            $col[] = array_slice($this->postes,7,7);
                            print_r ($col);

                            $new_array = array();
                                foreach ($col as $co) {
                                  print '<div style="width:45%;float: left; margin: 0 1% 0 1%;display: inline"><ul>';
                                  foreach ($co as $poste) {
                                    $key = $poste['cli_id']; /*** 30/08/2010 1 annonce par client **/
                                    if(!isset($new_array[$key] )){  /*** 30/08/2010 1 annonce par client **/
                                        $new_array[$key] = $poste['cli_id'];  /*** 30/08/2010 1 annonce par client **/
                                        $url_fiche_detail = $this->baseUrl() . '/index/fiche/id/' . $poste['poste_id'].'/'.str_replace('é','e',$poste['contrat_nom']).'/'.$poste['poste_intitule'];
                                        //$url_lieu = $this->baseUrl() . '/index/recherche?cr=poste&loc='.$poste['agence_ville'];
                                        print '<li onclick="window.location = \''.$url_fiche_detail.'\';" style="cursor: pointer">';
                                        print '<a class="job_title" href="'.$url_fiche_detail.'">';
                                        print $poste['poste_intitule'];
                                        print '</a><br />';
                                        print '<a class="job_place" href="'.$url_fiche_detail.'">';
                                        print $poste['agence_ville'];
                                        print '</a>';
                                        print '<a class="job_place" style="padding: 0 .5em" href="'.$url_fiche_detail.'">';
                                        print $poste['cli_rs'];
                                        print '</a>';
                                        print '</li>';
                                    }
                                  }
                                  print '</ul></div>';
                                }
                                ?>
                          <div class="clear"></div>
                        </div>

Le print_r me renvoit

Code:

Array ( [0] => [1] => )

Si vous voyez d'ou ça peut venir. Merci

Mon bootstrap inclut un fichier config.ini qui contient les logs de connexion a la base de données.

Pourquoi je perds la connexion à la base de données quand je fais mon include??

Merci d'avance pour votre aide.

Hors ligne

 

#2 11-10-2010 18:02:21

playmobilette
Membre
Date d'inscription: 05-10-2010
Messages: 50

Re: Perte de la connexion a la base de données dans mon include

c'est du Zend ?

Hors ligne

 

#3 11-10-2010 18:28:44

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Perte de la connexion a la base de données dans mon include

Question bête, mais que contient $this->postes au tout début de ton code?

Hors ligne

 

#4 12-10-2010 08:28:25

Hall
Membre
Date d'inscription: 23-08-2010
Messages: 54

Re: Perte de la connexion a la base de données dans mon include

Ca execute l'action de mon controlleur:

<code>
public function indexAction() {
    /**
            * HOME PAGE
            */
   if ($this->_request->getParam('norender')) {
      $this->_helper->viewRenderer->setNoRender();
      Zend_Layout::getMvcInstance ()->disableLayout ();
      return true;
    }
    $this->render('box/tags','left',True);
    $this->view->link = $this->_request->getParam('link');
    //Layout personnalisé
    //   $this->_helper->viewRenderer->setNoRender();
    $tAgences = new Agences();
    $agences = $tAgences->getAllAgences(null,'agence_id');
    $this->view->devinfo = array();
    //print_r ($agences);
   
    $paginate = array();
    $paginate['currentPage']=1;
    $paginate['rowPerPage']=1;
    $tPostes = new Postes();
    foreach ($agences as $agence) {
      $poste=$tPostes->getByAgId($agence['agence_id'],$paginate);
      if (count($poste)) $postes[$poste[0]['poste_date_update']] = $poste[0];
    }
    krsort($postes);
    $tmpPostes = array_chunk($postes,14);
    $postes = $tmpPostes[0];
    $this->view->postes = $postes;

   
    $this->_helper->layout->setLayout('accueil');
   

}
</code>

Hors ligne

 

#5 12-10-2010 18:21:29

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Perte de la connexion a la base de données dans mon include

Je ne comprends pas trop pourquoi tu tentes d'inclure ton fichier bootstrap dans ta vue?

et si tu print_r($postes) dans ton contrôleur?

Hors ligne

 

#6 13-10-2010 09:19:40

Hall
Membre
Date d'inscription: 23-08-2010
Messages: 54

Re: Perte de la connexion a la base de données dans mon include

J'ai bien un résultat.

Hors ligne

 

#7 13-10-2010 15:52:33

Hall
Membre
Date d'inscription: 23-08-2010
Messages: 54

Re: Perte de la connexion a la base de données dans mon include

Je passe par une action-contrôleur que j'appelle ensuite dans un script pour résoudre mon problème mais là aussi le script ne semble pas apprécier mon:

Code:

echo $this->action('recruteagence', 'index', 'default');

Voici monscript: recruteagence.phtml

Code:

<div class="container maxheight last_jobs">
                           <div class="title_block side-box last" style="padding-top: 0;"><h2 class="header-blue" style="text-align: center;color: #888">Les agences qui recrutent</h2></div>
                            <?php
                            
                            
                            echo $this->action('recruteagence', 'index', 'default');
                            
                            $col[] = array_slice($this->postes,0,7);
                          
                            $col[] = array_slice($this->postes,7,7);
                      
                            
                            $new_array = array();
                                foreach ($col as $co) {
                                  print '<div style="width:45%;float: left; margin: 0 1% 0 1%;display: inline"><ul>';
                                  foreach ($co as $poste) {
                                    $key = $poste['cli_id']; /*** 30/08/2010 1 annonce par client **/
                                    if(!isset($new_array[$key] )){  /*** 30/08/2010 1 annonce par client **/
                                        $new_array[$key] = $poste['cli_id'];  /*** 30/08/2010 1 annonce par client **/
                                        $url_fiche_detail = $this->baseUrl() . '/index/fiche/id/' . $poste['poste_id'].'/'.str_replace('é','e',$poste['contrat_nom']).'/'.$poste['poste_intitule'];
                                        //$url_lieu = $this->baseUrl() . '/index/recherche?cr=poste&loc='.$poste['agence_ville'];
                                        print '<li onclick="window.location = \''.$url_fiche_detail.'\';" style="cursor: pointer">';
                                        print '<a class="job_title" href="'.$url_fiche_detail.'">';
                                        print $poste['poste_intitule'];
                                        print '</a><br />';
                                        print '<a class="job_place" href="'.$url_fiche_detail.'">';
                                        print $poste['agence_ville'];
                                        print '</a>';
                                        print '<a class="job_place" style="padding: 0 .5em" href="'.$url_fiche_detail.'">';
                                        print $poste['cli_rs'];
                                        print '</a>';
                                        print '</li>';
                                    }
                                  }
                                  print '</ul></div>';
                                }
                                ?>
                          <div class="clear"></div>
                        </div>

et voici mon action-contrôleur:


Code:

  public function recruteagenceAction () {
   
    $tAgences = new Agences();
    $agences = $tAgences->getAllAgences(null,'agence_id');

   
    $paginate = array();
    $paginate['currentPage']=1;
    $paginate['rowPerPage']=1;
    $tPostes = new Postes();
    foreach ($agences as $agence) {
      $poste=$tPostes->getByAgId($agence['agence_id'],$paginate);
      if (count($poste)) $postes[$poste[0]['poste_date_update']] = $poste[0];
    }
     
    krsort($postes);
    $tmpPostes = array_chunk($postes,14);
    $postes = $tmpPostes[0];
    $this->view->postes = $postes;
   print_r ($agences);
    
   
  }

Quand j'intègre le code de "recruteagenceAction" directement dans mon script recruteagence.phtml, ça fonctionne bien.

Y a vraiment quelque chose qui m'échappe.

Hors ligne

 

#8 13-10-2010 19:01:05

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Perte de la connexion a la base de données dans mon include

C'est normal que t'a vue n'aime pas ça tu lui fais faire une boucle infini yikes

si tu fais print_r($this->postes) dans ta vue ta le même résultat que dans ton contrôleur? sinon essaie print_r($this) dans ta vue et essaie de repérer les données de la vue

Hors ligne

 

#9 14-10-2010 09:29:57

Hall
Membre
Date d'inscription: 23-08-2010
Messages: 54

Re: Perte de la connexion a la base de données dans mon include

Tout d'abord merci de me venir en aide.

Pareil, j'ai une boucle infini avec le print_r($this->postes) et le print_r($this).
Je comprends plus rien à part peut être le chemin des répertoire qui peut poser problème.
Bon je reprends, j'ai une action indexAction qui place un layout sur mon template accueil.
Dans mon template accueil.phtml je fais:

Code:

  <?= $this->partial('./includes/recruteagence.phtml'); ?>

Pour ce qui est de mon action et de ma vue recruteagence vous avez le code plus haut.
Accueil.phtml se trouve dans les répertoires: view/layout
recruteagence.phtml: view/layout/includes

Merci d'avance pour votre aide.

Hors ligne

 

#10 14-10-2010 16:06:42

Hall
Membre
Date d'inscription: 23-08-2010
Messages: 54

Re: Perte de la connexion a la base de données dans mon include

J'ai trouvé une solution qui fonctionne. Je ne pense pas que ce soit la meilleure façon de gérer mon problème...mais bon...ça fonctionne...

Alors dans ma vue: accueil.phtml

Code:

 <?= $this->partial('./includes/recruteagence.phtml'); ?>

Dans mon ./includes/recruteagence.phtml

Code:

 <?php
                             
                          echo $this->action('recruteagence', 'index', 'default');
   ?>

Dans mon  IndexControlleur, j'ai l'action:

Code:

 public function recruteagenceAction () {
    $tAgences = new Agences();
    $agences = $tAgences->getAllAgences(null,'agence_id');
    $paginate = array();
    $paginate['currentPage']=1;
    $paginate['rowPerPage']=1;
    $tPostes = new Postes();
    foreach ($agences as $agence) {
      $poste=$tPostes->getByAgId($agence['agence_id'],$paginate);
      if (count($poste)) $postes[$poste[0]['poste_date_update']] = $poste[0];
    }

    krsort($postes);
    $tmpPostes = array_chunk($postes,14);
    $postes = $tmpPostes[0];
    $this->view->postes = $postes;
   }

Et dans mon ./views/scripts/index/recruteagence.phtml

Code:

<div class="container maxheight last_jobs">
                           <div class="title_block side-box last" style="padding-top: 0;"><h2 class="header-blue" style="text-align: center;color: #888">Les agences qui recrutent</h2></div>
                            <?php
                             
                       


                           $col[] = array_slice($this->postes,0,7);
                            $col[] = array_slice($this->postes,7,7);
                        

                            $new_array = array();
                                foreach ($col as $co) {
                                  print '<div style="width:45%;float: left; margin: 0 1% 0 1%;display: inline"><ul>';
                                  foreach ($co as $poste) {
                                    $key = $poste['cli_id']; /*** 30/08/2010 1 annonce par client **/
                                    if(!isset($new_array[$key] )){  /*** 30/08/2010 1 annonce par client **/
                                        $new_array[$key] = $poste['cli_id'];  /*** 30/08/2010 1 annonce par client **/
                                        $url_fiche_detail = $this->baseUrl() . '/index/fiche/id/' . $poste['poste_id'].'/'.str_replace('é','e',$poste['contrat_nom']).'/'.$poste['poste_intitule'];
                                        //$url_lieu = $this->baseUrl() . '/index/recherche?cr=poste&loc='.$poste['agence_ville'];
                                        print '<li onclick="window.location = \''.$url_fiche_detail.'\';" style="cursor: pointer">';
                                        print '<a class="job_title" href="'.$url_fiche_detail.'">';
                                        print $poste['poste_intitule'];
                                        print '</a><br />';
                                        print '<a class="job_place" href="'.$url_fiche_detail.'">';
                                        print $poste['agence_ville'];
                                        print '</a>';
                                        print '<a class="job_place" style="padding: 0 .5em" href="'.$url_fiche_detail.'">';
                                        print $poste['cli_rs'];
                                        print '</a>';
                                        print '</li>';
                                    }
                                  }
                                  print '</ul></div>';
                                }
                                ?>
                          <div class="clear"></div>
                        </div>

Encore merci pour votre patience et votre aide!

Hors ligne

 

#11 14-10-2010 18:48:43

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Perte de la connexion a la base de données dans mon include

Je crois que tu mélanges beaucoup de chose.

Tu devrais revoir les bases de l'architecture MVC de Zend

Hors ligne

 

#12 15-10-2010 09:12:46

Hall
Membre
Date d'inscription: 23-08-2010
Messages: 54

Re: Perte de la connexion a la base de données dans mon include

Non j'ai bien saisi l'architecture MVC, ce que j'ai pas vraiment compris c'est la nuance entre une vue et un layout.
Le layout ne sert qu'a la disposition, ou mise en page de ma vue?

Dernière modification par Hall (15-10-2010 09:14:14)

Hors ligne

 

#13 15-10-2010 14:29:36

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Perte de la connexion a la base de données dans mon include

Heu, tu as une vue qui appelle une action. Ca n'est pas très MVC.

Dans un système MVC, le controlleur appelle la couche de traitement qui appelle ou indique les vues à utiliser. La vue elle n'appelle ni les controlleurs ni les couches de traitements, elle se contente d'utiliser les informations qui lui ont été adressé.
Pour la différence entre une vue et un "layout", en gros, la vue sert à afficher le résultat d'un traitement et le layout sert de modèle de page : il contient tout ce qui ne sera pas généré par une vue.

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