Categories > TinyButStrong general (FR) >

%P1% avec des arrays

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Jilou
Date: 2006-11-15
Time: 11:20

%P1% avec des arrays

Bonjour Skrol

Voilà, j'utilise ton système de Glossaire découvert dans le forum et j'ai trouvé ça génial.

PHP
$TBS->MergeBlock('princ','mysql','SELECT DISTINCT UCASE(LEFT(nom,1)) AS lettre FROM annuaire ORDER BY nom');
$TBS->MergeBlock('sub','mysql','SELECT * FROM annuaire WHERE nom REGEXP "^%p1%" ORDER BY nom');
$TBS->MergeBlock('blk1','mysql','SELECT DISTINCT UCASE(LEFT(nom,1)) AS lettre FROM annuaire ORDER BY nom');

HTML

<DIV align=center>
[blk1;block=begin]<A class=lettre href="#Gloss[blk1.lettre]">[blk1.lettre]</a>&nbsp;-&nbsp;[blk1;block=end]<BR>
</DIV>
        <cap>
         <DIV class=cadretitreannuaire><A NAME=Gloss[princ.lettre]>[princ.lettre;block=cap]</DIV>
         <DIV class=cadre>
                <table border = 0 cellpadding="2" cellspacing="0">
                <tr>
                <td width="200" class="cadredroit">[sub.nom;block=TR;p1='[princ.lettre]']</td>
                <td width="300" >[sub.adresse]</td>
                <td class="cadregauche">[sub.tel]</td>
                </tr>
                </table>
         </div>
         </cap>

Je voudrais remplacer la table MySQL par un fichier CSV pour faciliter la mise à jour utilisateur.
J'arrive à extraire les initiales dans un tableau comme ça :
      <?php
      $CSVfile= "annuaire.csv";
      $handle = fopen($CSVfile, "r") or die("Cannot open $CSVfile");
      while (($data = fgetcsv($handle, 512, ";")) !=false)
      {
              list($array0[]) = $data{0};
      }
      $result = array_unique($array0);
      fclose($handle);
      ?>


Comment mettre en relation ce tableau avec le fichier CSV en utilisant l'équivalent de %P1% des Mergeblocks.

Merci

Jilou

By: Skrol29
Date: 2006-11-15
Time: 13:40

Re: %P1% avec des arrays

Salut,

Ce n'est pas possible de filtrer un ensemble d'item de tableau sur leur valeur avec la simple technique des %p1% de TBS.
Malheureusement tu dois filtrer les enregistrement avec ton propre code PHP. Tu peux par exemple monter ta variable $result différemment de sorte que tous les enregistrements soient classifiés par lettre.

$result[$lettre][] = enreg

Quand tu as ça, le MergeBlock avec %p1% devient trivial.

By: Jilou
Date: 2006-11-15
Time: 14:38

Re: %P1% avec des arrays

Merci pour ta réponse.

Jilou