glossaire et mots-clés

Bonjour

Je souhaite afficher un glossaire sur un site (1.9.1) sous la forme liste trié par ordre alphabétique avec un menu en haut de page du type 0-9 | A | B |................| x | y | z, jusque la pas de problème.
mais je désire également regrouper les mots qui commencent par la même lettre dans le même pavé de texte.

Est ce que quelqu'un aurai une idée ?

Merci d'avance.

Bonjour,

Voici le code que j'ai développé pour mon plugin de généalogie. Il fait
référence à des bases ajouter à SPIP par moi, mais le principe reste le même.

function aff_cellule($initial){
  echo "<div class='tab-page'>\n";
  echo " <h2 class='tab'>".chr($initial)."</h2>\n";
  echo " <p>";
  $arbre = #ID_GENEA;
  $result = spip_query("SELECT nom, COUNT(nom) FROM spip_genea_individus WHERE
(id_genea=$arbre) GROUP BY nom HAVING ((nom>='".chr($initial)."' And
nom<'".chr($initial+1)."')) ORDER BY nom"); <!-- # C'est la requête SQL qu'il
faut modifier pour l'adapter à votre cas -->
  $flux = "";
  while (list ($nom, $nombre) = mysql_fetch_row($result)) {
    if ($flux!='') { $flux .=", "; }
    $flux .= "\n";
    $url = "[(#URL_PAGE{individus})]";
    if ($url!='') {
      $url = parametre_url($url, 'id_genea', $arbre);
      $url = parametre_url($url, 'nom', $nom);
    }
    $flux .= " <a class='spip_in' href='$url'>$nom</a> &#91;$nombre&#93;";
  }
  if ($flux=='') { $flux .=" &nbsp;"; } else { }
  echo $flux;
  echo " </p>\n";
  echo "</div>\n";
}

J'espère que cela vous aidera.

Cordialement,

Xavier BUROT

Selon CARIOU Arnaud <arnaud@neolame.com>:

Bonjour

Je souhaite afficher un glossaire sur un site (1.9.1) sous la forme
liste trié par ordre alphabétique avec un menu en haut de page du type
0-9 | A | B |................| x | y | z, jusque la pas de problème.
mais je désire également regrouper les mots qui commencent par la même
lettre dans le même pavé de texte.

Est ce que quelqu'un aurai une idée ?

Merci d'avance.
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ

Je te remerci pour ta réponse mais j'ai trouvé une réponse entre temp en
me basant sur la contrid menu onglet pour mots-clés que j'ai trouvé sur
spip-contrib

Je joind le code si ça intéresse qq1 d'autre

Code du menu alphabétique
<B_menu_mots_kesako>
<div class="menu_glossaire">
<BOUCLE_menu_mots_kesako(MOTS){id_groupe}{par titre}{titre==^[0-9A-Z]}>
[(#SET{initiale,#TITRE|match{\w{1}}})]
[<a href="#SELF##GET{initiale}"> (#GET{initiale}|unique) </a>]
</BOUCLE_menu_mots_kesako>
</div>
</B_menu_mots_kesako>

Code pour la liste des mots

<B_mots_kesako>
<div class="conteneur_glossaire">
<BOUCLE_mots_kesako(MOTS){id_groupe}{par titre}{titre==^[0-9A-Z]}>
[(#SET{initiale2,#TITRE|match{\w+}})]
<B_mots_kesako2>
<div class="mot_glossaire">
<a name="#GET{initiale2}"></a>
<?php
$extimage="png";
$nomimage=(ereg('[0-9]','[(#GET{initiale2})]'))?'0':strtolower("[(#GET{initiale2})]");
$ch=$GLOBALS['dossier_squelettes']."/images/".$nomimage.".".$extimage;
?>
<img src="<?php echo $ch; ?>" width="45" height="56" />
<BOUCLE_mots_kesako2(MOTS){id_groupe}{par
titre}{titre==^#GET{initiale2}}{doublons}>
<div class="para_glossaire">
<div class="titre"><a href="#URL_MOT">#TITRE</a></div>
<div class="texte">#TEXTE</div>
</div>
</BOUCLE_mots_kesako2>
</div>
</B_mots_kesako2>
</BOUCLE_mots_kesako>
</div>
</B_mots_kesako>

Le code php est destiné à l'affichage d'une image représentant la
lettre, je n'ai pas réussi à le faire avec les boucles SPIP.

Voila

Arnaud

Le mercredi 28 mars 2007 à 14:37 +0200, Xavier BUROT a écrit :

Bonjour,

Voici le code que j'ai développé pour mon plugin de généalogie. Il fait
référence à des bases ajouter à SPIP par moi, mais le principe reste le même.

function aff_cellule($initial){
  echo "<div class='tab-page'>\n";
  echo " <h2 class='tab'>".chr($initial)."</h2>\n";
  echo " <p>";
  $arbre = #ID_GENEA;
  $result = spip_query("SELECT nom, COUNT(nom) FROM spip_genea_individus WHERE
(id_genea=$arbre) GROUP BY nom HAVING ((nom>='".chr($initial)."' And
nom<'".chr($initial+1)."')) ORDER BY nom"); <!-- # C'est la requête SQL qu'il
faut modifier pour l'adapter à votre cas -->
  $flux = "";
  while (list ($nom, $nombre) = mysql_fetch_row($result)) {
    if ($flux!='') { $flux .=", "; }
    $flux .= "\n";
    $url = "[(#URL_PAGE{individus})]";
    if ($url!='') {
      $url = parametre_url($url, 'id_genea', $arbre);
      $url = parametre_url($url, 'nom', $nom);
    }
    $flux .= " <a class='spip_in' href='$url'>$nom</a> &#91;$nombre&#93;";
  }
  if ($flux=='') { $flux .=" &nbsp;"; } else { }
  echo $flux;
  echo " </p>\n";
  echo "</div>\n";
}

J'espère que cela vous aidera.

Cordialement,

Xavier BUROT
http://xebiaut.free.fr

Selon CARIOU Arnaud <arnaud@neolame.com>:

> Bonjour
>
> Je souhaite afficher un glossaire sur un site (1.9.1) sous la forme
> liste trié par ordre alphabétique avec un menu en haut de page du type
> 0-9 | A | B |................| x | y | z, jusque la pas de problème.
> mais je désire également regrouper les mots qui commencent par la même
> lettre dans le même pavé de texte.
>
> Est ce que quelqu'un aurai une idée ?
>
> Merci d'avance.
> _______________________________________________
> liste spip
> spip@rezo.net - désabonnement : spip-off@rezo.net
> Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
> Documentation de SPIP : http://www.spip.net/
> irc://irc.freenode.net/spip
> FAQ : http://www.spip-contrib.net/spikini/FaQ
>
_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : http://www.spip-contrib.net/spikini/FaQ