#31 2007-12-03 07:44:15

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Résolu] Moteur de template

C'est très bien de partager sa solution...

Une petite révision du titre du topic ("Moteur de template" n'est pas très clair) et mettre résolu semble une bonne idée.
8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#32 2007-12-03 12:57:02

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Mon cas avec deux blocs imbriqués n'est pas résolu.....
Mais effectivement dès résolution, j'envisageai de dire merci à toute l'équipe pour le soutien apporté et éventuellement montrer les possibilités obtenues par ce plugin
Cordialement

Hors ligne

#33 2007-12-03 13:03:05

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Moteur de template

Et pourquoi as-tu viré le while?!

$result = pwg_query("SELECT br_bureau.Bureau, br_bureau.Boite, br_bureau.Lettre,
br_bureau.dates, br_bureau.Periode, br_bureau.Indice,
  bureaux_distributeurs.Observations, br_bureau.num_bureau
  FROM br_bureau INNER JOIN bureaux_distributeurs
  ON (br_bureau.Bureau = bureaux_distributeurs.Bureau_distributeur)
  AND (br_bureau.num_bureau = bureaux_distributeurs.num_periode)
  WHERE Bureau like '" . $params['commune'] . "'
  GROUP BY br_bureau.Bureau, br_bureau.Boite, br_bureau.Lettre,
  br_bureau.dates, br_bureau.Periode, br_bureau.Indice,
  bureaux_distributeurs.Observations, br_bureau.num_bureau
  ORDER BY br_bureau.Boite;");

   // modèle à utiliser auquel on adjoint un nom arbitraire
$template->set_filenames(array(
    'body' => dirname(__FILE__) . '/br_bureau.tpl'
  ));

   
  //
  // Assignation des variables dans le block 'user'
  //

while( $row = mysql_fetch_array($result) )
{

   $template->assign_block_vars('periode', array(
           'PERIODE' => $row['Periode'],
           'OBSERVATIONS'  => $row['Observations']));

   $template->assign_block_vars('periode.user', array(
           'BOITE' => $row['Boite'],
           'LETTRE'  => $row['Lettre'],
           'INDICE'  => $row['Indice'],
           'DATE' => $row['Date']));
}     
 
  // Affichage des données
$desc = $template->parse('body', true);

Dernière modification par P@t (2007-12-03 14:00:38)


P@t

Hors ligne

#34 2007-12-03 13:06:13

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Moteur de template

Pour mettre du code dans tes posts sur le forum, met le entre les balises adéquates:

Code:

[quote]Code à poster[/quote]

C'est plus clair pour tout le monde ;-)


P@t

Hors ligne

#35 2007-12-03 13:33:37

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Merci je vais tester cela ce soir
J'ai bien noté vos remarques de présentation.
Cordialement

Hors ligne

#36 2007-12-03 13:59:51

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Moteur de template

J'avais pas vu, le code tpl n'est pas bon non plus:

<table border="1" >
<!-- BEGIN periode -->
   <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>
   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">{periode.PERIODE}</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">{periode.OBSERVATIONS}</font></div></td>
   </tr>
  <!-- BEGIN user -->
  <tr>
    <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">Lettre Timbre</font></div></td>
    <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Dates observées</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td>
  </tr>
<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">{periode.user.BOITE}</font></div></td>
  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">{periode.user.LETTRE}</font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{periode.user.DATES}</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{periode.user.INDICE}</font></div></td>
</tr>
  <!-- END user -->
<!-- END periode -->
  </table>

Du coup, j'ai modifié le code php dans le post ci-dessus...


P@t

Hors ligne

#37 2007-12-03 19:20:28

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Voici le résultat que j'obtienne

<tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
   <td colspan="3" width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849 - 12/1911</font></div></td>
   <td colspan="3" width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture du bureau d'Allaire.</font></div></td>   </tr>
  <tr>
    <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">Lettre Timbre</font></div></td>
    <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Dates observées</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td>  </tr>
<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">ST GORGON</font></div></td>
  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS"></font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Jamais rencontré</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">+9</font></div></td>
</tr>
   <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
   <td colspan="3" width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849 - 12/1911</font></div></td>
   <td colspan="3" width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture du bureau d'Allaire.</font></div></td>   </tr>
  <tr>
    <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">Lettre Timbre</font></div></td>
    <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Dates observées</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td></tr>
<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">ST JACUT LES PINS Gare</font></div></td>
  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS"></font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Jamais rencontré</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2"></font></div></td>
</tr>

Alors que je souhaite obtenir ceci

<tr>
    <td width="33%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
    <td colspan="3"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>
  </tr>
  <tr>
    <td width="33%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849
        - 12/1911</font></div></td>
    <td colspan="3"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture
        du bureau d'Allaire.</font></div></td>
  </tr>
  <tr>
    <td width="33%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="32%"><div align="center"><font size="2" face="Comic Sans MS">Lettre
        Timbre</font></div></td>
    <td width="21%"> <div align="center"><font face="Comic Sans MS" size="2">Dates
        observées</font></div></td>
    <td width="14%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td>
  </tr>
  <tr>
    <td width="33%"><div align="center"><font face="Comic Sans MS" size="2">ST
        GORGON</font></div></td>
    <td width="32%"><div align="center"><font size="2" face="Comic Sans MS"></font></div></td>
    <td width="21%"> <div align="center"><font face="Comic Sans MS" size="2">Jamais
        rencontré</font></div></td>
    <td width="14%"> <div align="center"><font face="Comic Sans MS" size="2">+9</font></div></td>
  </tr>
  <tr>
    <td width="33%"><div align="center"><font face="Comic Sans MS" size="2">ST
        JACUT LES PINS Gare</font></div></td>
    <td width="32%"><div align="center"><font size="2" face="Comic Sans MS"></font></div></td>
    <td width="21%"> <div align="center"><font face="Comic Sans MS" size="2">Jamais
        rencontré</font></div></td>
    <td width="14%"> <div align="center"><font face="Comic Sans MS" size="2"></font></div></td>
  </tr>

Merci de ton aide

Hors ligne

#38 2007-12-03 19:43:29

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Moteur de template

Si je comprend bien, pas besoin de block imbriqués alors...

Voila pour le fichier tpl:

<tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>
   </tr>

    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">{PERIODE}</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">{OBSERVATIONS}</font></div></td>
   </tr>

  <tr>
    <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">Lettre Timbre</font></div></td>
    <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Dates observées</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td>
  </tr>
<!-- BEGIN user -->
<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">{user.BOITE}</font></div></td>
  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">{user.LETTRE}</font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{user.DATES}</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{user.INDICE}</font></div></td>
</tr>
<!-- END user -->

Et pour le fichier php, ca donnera:

while( $row = mysql_fetch_array($result) )
{
   $template->assign_vars ( array(
           'PERIODE' => $row['Periode'],
           'OBSERVATIONS'  => $row['Observations']));

   $template->assign_block_vars('user', array(
           'BOITE' => $row['Boite'],
           'LETTRE'  => $row['Lettre'],
           'INDICE'  => $row['Indice'],
           'DATE' => $row['Date']));
}

Mais j'ai quand meme du mal à comprendre ce que tu veux faire...
A mon avis, il va falloir se pencher sur les requetes SQL...

Dernière modification par P@t (2007-12-03 19:48:57)


P@t

Hors ligne

#39 2007-12-03 19:50:52

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Voici le résultat que j'obtienne

<table border="1" >
<tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>

   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849 - 12/1911</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture du bureau d'Allaire.</font></div></td>
   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849 - 12/1911</font></div></td>

   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture du bureau d'Allaire.</font></div></td>
   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849 - 12/1911</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture du bureau d'Allaire.</font></div></td>
   </tr>

    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849 - 12/1911</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture du bureau d'Allaire.</font></div></td>
   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849 - 12/1911</font></div></td>

   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture du bureau d'Allaire.</font></div></td>
   </tr>
    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">12/1849 - 12/1911</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Ouverture du bureau d'Allaire.</font></div></td>
   </tr>

  <tr>
    <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">Lettre Timbre</font></div></td>
    <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Dates observées</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td>
  </tr>

<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">ST GORGON</font></div></td>
  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS"></font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Jamais rencontré</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">+9</font></div></td>
</tr>
<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">ST JACUT LES PINS Gare</font></div></td>

  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS"></font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Jamais rencontré</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2"></font></div></td>
</tr>

Je ne veux afficher qu'une seule période ou plusieurs si celle-ci ne concerne pas la même date.
Je pense qu'il me faut bien des blocks imbriqués

Hors ligne

#40 2007-12-03 19:53:24

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Moteur de template

marcophilie56 a écrit:

Je ne veux afficher qu'une seule période ou plusieurs si celle-ci ne concerne pas la même date.
Je pense qu'il me faut bien des blocks imbriqués

Moi je pense surtout qu'il va falloir compliquer un peu le code php!
Je vais regarder ca...


P@t

Hors ligne

#41 2007-12-04 11:30:09

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Moteur de template

Bon, je pense que ton fichier php devrait ressembler à ca:

$result = pwg_query("SELECT br_bureau.Bureau, br_bureau.Boite, br_bureau.Lettre,
br_bureau.dates, br_bureau.Periode, br_bureau.Indice,
  bureaux_distributeurs.Observations, br_bureau.num_bureau
  FROM br_bureau INNER JOIN bureaux_distributeurs
  ON (br_bureau.Bureau = bureaux_distributeurs.Bureau_distributeur)
  AND (br_bureau.num_bureau = bureaux_distributeurs.num_periode)
  WHERE Bureau like '" . $params['commune'] . "'
  GROUP BY br_bureau.Bureau, br_bureau.Boite, br_bureau.Lettre,
  br_bureau.dates, br_bureau.Periode, br_bureau.Indice,
  bureaux_distributeurs.Observations, br_bureau.num_bureau
  ORDER BY br_bureau.Periode ASC, br_bureau.Boite;");

$template->set_filenames(array('body' => dirname(__FILE__) . '/br_bureau.tpl'));

$periode = '';

while( $row = mysql_fetch_array($result) )
{
   if ($row['Periode'] != $periode)
  {
     $periode = $row['Periode'];
     $template->assign_block_vars('periode', array(
           'PERIODE' => $row['Periode'],
           'OBSERVATIONS'  => $row['Observations']));
   }


   $template->assign_block_vars('user', array(
           'BOITE' => $row['Boite'],
           'LETTRE'  => $row['Lettre'],
           'INDICE'  => $row['Indice'],
           'DATE' => $row['Date']));
}     
 
$desc = $template->parse('body', true);

Principe: On ordonne le résultat de la requete par periode
Puis on ajoute une ligne "Periode / Observation" uniquement si la période change.
La ligne "Commune, lettres, dates, indice" est également ajoutée en meme temps.

Pour le fichier tpl:

<!-- BEGIN periode -->
   <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>
   </tr>

    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">{periode.PERIODE}</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">{periode.OBSERVATIONS}</font></div></td>
   </tr>

  <tr>
    <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">Lettre Timbre</font></div></td>
    <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Dates observées</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td>
  </tr>
<!-- END periode -->
<!-- BEGIN user -->
<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">{user.BOITE}</font></div></td>
  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">{user.LETTRE}</font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{user.DATES}</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{user.INDICE}</font></div></td>
</tr>
<!-- END user -->


P@t

Hors ligne

#42 2007-12-04 18:52:24

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Cette solution marche lorsqu'il y a une seule période par contre lorsqu'il y a plusieurs périodes l'affichage me  donne toutes les périodes d'abord puis le reste ensuite.
Je pense qu'il faut imbriquer les 2 blocs, j'ai fait plusieurs essais sans réussite.
Je suis absent jusqu'à demain soir
Cordialement

PS : j'ai vu que j'étais cité dans les Perles collecter à juste titre d'ailleurs....

Hors ligne

#43 2007-12-04 19:05:04

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [Résolu] Moteur de template

Hum... normal...
On va essayer autre chose alors ;-)

PHP:

$template->set_filenames(array('body' => dirname(__FILE__) . '/br_bureau.tpl'));

$periode = '';

while( $row = mysql_fetch_array($result) )
{
   if ($row['Periode'] != $periode)
  {
     $periode = $row['Periode'];
     $template->assign_block_vars('periode', array(
           'PERIODE' => $row['Periode'],
           'OBSERVATIONS'  => $row['Observations']));
   }

   $template->assign_block_vars('periode.user', array(
           'BOITE' => $row['Boite'],
           'LETTRE'  => $row['Lettre'],
           'INDICE'  => $row['Indice'],
           'DATE' => $row['Date']));
}     
 
$desc = $template->parse('body', true);

TPL:

<!-- BEGIN periode -->
   <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Période</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">Evolutions</font></div></td>
   </tr>

    <tr>
   <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">{periode.PERIODE}</font></div></td>
   <td width="70%"> <div align="center"><font face="Comic Sans MS" size="2">{periode.OBSERVATIONS}</font></div></td>
   </tr>

  <tr>
    <td width="30%"> <div align="center"><font face="Comic Sans MS" size="2">Commune</font></div></td>
    <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">Lettre Timbre</font></div></td>
    <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Dates observées</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">Indice</font></div></td>
  </tr>

<!-- BEGIN user -->
<tr>
  <td width="30%"><div align="center"><font face="Comic Sans MS" size="2">{user.BOITE}</font></div></td>
  <td width="30%"><div align="center"><font size="2" face="Comic Sans MS">{user.LETTRE}</font></div></td>
  <td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{user.DATES}</font></div></td>
<td width="20%"> <div align="center"><font face="Comic Sans MS" size="2">{user.INDICE}</font></div></td>
</tr>
<!-- END user -->

<!-- END periode -->


P@t

Hors ligne

#44 2007-12-05 18:37:45

marcophilie56
Membre
2007-01-22
175

Re: [Résolu] Moteur de template

Bonjour
Merci beaucoup tout marche impeccable.
Pas contre, je ne sais pas comment signaler que ma demande est résolue.
Comme convenu, je vais faire un nouveau post pour décrire ce qui a été réalisé pour la mise des descriptions des catégories.
Bravo et bonne continuation à l'équipe.
Cordialement

Hors ligne

#45 2007-12-05 18:51:03

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [Résolu] Moteur de template

marcophilie56 a écrit:

Pas contre, je ne sais pas comment signaler que ma demande est résolue.

http://forum.phpwebgallery.net/viewtopi … 672#p76672
Et sur le premier post tu cliques sur Modifier...
8-)


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact