//Autres auteurs : *@author Alexandre GRANIER *@author Jean-Pascal MILCENT *@copyright Tela-Botanica 2000-2004 *@version $Revision: 1.6 $ $Date: 2005/02/23 17:28:35 $ // +------------------------------------------------------------------------------------------------------+ */ // +------------------------------------------------------------------------------------------------------+ // | ENTETE du PROGRAMME | // +------------------------------------------------------------------------------------------------------+ /*Mettre ici les inclusions de fichiers*/ include_once 'FRAG_Fragmenteur.class.php'; // Compatibilité avec les anciennes versions : function UnstoreTransTab($chaine) { return FRAG_decoupageChaine($chaine); } function AffTxtNbRes($modele, $tableau, $nb_query_ltd, $nbre_total) { return FRAG_afficherTxtNbreResultat($modele, $tableau, $nb_query_ltd, $nbre_total); } function rechercheAlphabet( $requete, $baseURL, $paramURL = '', $affichageResultAvt = '', $affichageResultAps = '', $tablo_formatLigne = array(), $tablo_formatResultat = array(), $messageErreur = '', $fragmenteur = array()) { return FRAG_rechercherAvecAlphabet( $requete, $baseURL, $paramURL, $affichageResultAvt, $affichageResultAps, $tablo_formatLigne, $tablo_formatResultat, $messageErreur, $fragmenteur); } // +------------------------------------------------------------------------------------------------------+ // | LISTE des FONCTIONS | // +------------------------------------------------------------------------------------------------------+ /*Mettre ici la liste de fonctions.*/ /**Fonction FRAG_afficherTxtNbreResultat() - Affiche un texte formaté. * * Permet de créer un petit texte uniforme du type "il y a x resultats sur y"... * Possibilité de paramétrer un "modèle" pour afficher selon différentes mises * en forme. * * @param string nom du modèle utilisé (vide = modèle par défaut). * @param array tableau de résultats * - $tableau['pstart'] : valeur du premier item (ex. : pages de 20 items, la 2è page commence au 21è, $tableau['pstart'] = 20) * - $tableau['pend'] : valeur du dernier item (nombre total d'items retournés par la requête, sans clause LIMIT * - $tableau['step'] : pas de regroupement (x items par page) * @param integer nombre d'items trouvés par la requête, avec clause LIMIT * @param integer nombre total d'items dans la Base * * @return string la chaine formatée. */ function FRAG_afficherTxtNbreResultat($modele, $tableau, $nb_query_ltd, $nb_total) { // Initialisation de $var_affiche $var_affiche = ''; if ($nb_query_ltd > 1) { $pluriel_loc = 's'; } else { $pluriel_loc = ''; } if ($nb_total > 1) { $pluriel_tot = 's'; } else { $pluriel_tot = ''; } if ($tableau['pend'] > 0) { $add_from = $tableau['pstart'] + 1; $tmp_num = $tableau['pstart'] + $tableau['step']; if ($tmp_num < $tableau['pend']) { $add_to = $tmp_num; } else { $add_to = $tableau['pend']; } } switch ($modele) { case 'synth': $var_affiche .= ''.$nb_total.''.' synthèse'.$pluriel_tot.' trouvée'.$pluriel_tot.'.'; if ($tableau['pend'] > 0) { $var_affiche .= ' Affichage des synthèses '.$add_from.' à '.$add_to.'.'; } break; case 'bbpopup': $feminin = ''; if ($tableau['feminin'] == 1) { $feminin = 'e'; } $var_affiche .= ''.$nb_total.''.' '.$tableau['libelle'].$pluriel_tot.' trouvé'.$feminin.$pluriel_tot.'.'; if ($tableau['pend'] > 0) { $var_affiche .= ' Affichage des éléments '.$add_from.' à '.$add_to.'.'; } break; // Mise en forme par défaut : default: if ($tableau['pend'] > 0) { $var_affiche .= ' Affichage des données '.$add_from.' à '.$add_to.''."\n"; } $var_affiche .= ' parmi '.''.$tableau['pend'].''.' résultat'.$pluriel_loc.'.'."\n"; break; } return $var_affiche; } /**Fonction FRAG_decoupageChaine() - Découpe une chaine. * * Cette fonction permet de découper la variable de tranfert $chaine et de réaffecter dans un tableau * les valeurs et les index. * * @param string chaine à désérialiser. * * @return array le tableau contenant les index et les valeurs de la chaine. */ function FRAG_decoupageChaine($chaine) { $chaine = eregi_replace('{', ' ', $chaine); $tableau_transfert = explode('!', $chaine); foreach ($tableau_transfert as $objet) { $objet_decoupe = explode(',', $objet); $objet_decoupe_1 = $objet_decoupe[0]; if ((!empty($objet_decoupe_1)) && (!empty($objet_decoupe[1]))) { $tableau_retour[$objet_decoupe_1] = $objet_decoupe[1]; } } return $tableau_retour; } /** //==================================== FUNCTION ================================== * La fonction rechercheAlphabet() renvoie une liste alphabétique. * *Cette fonction retourne une liste alphabétique et un tableau html contenant les résultats *d'une requête sql pour une lettre de l'alphabet donnée. *Quand on clique sur une lettre de la liste alphabétique la page est rechargée et la *fonction renvoie la liste et le tableau de résultat correspondant à la requête sql *avec la lettre de l'alphabet sélectionnée. * Elle nécéssite l'inclusion du fichier lib.form.php * *Le tableau associatif de formatage des lignes: *-clé "Class_pair": contient le nom d'une classe css à utiliser pour le * formatage des lignes de résultats paires. *-clé "Class_impair": contient le nom d'une classe css à utiliser pour le * formatage des lignes de résultats impaires. *-clé "Style_pair": contient les syles à utiliser pour le * formatage des lignes de résultats paires. *-clé "Style_impair": contient les syles à utiliser pour le * formatage des lignes de résultats impaires. *-clé "Couleur_pair": la valeur héxadécimale de la couleur des lignes * paires du tableau de résultats. *-clé "Couleur_impair": la valeur héxadécimale de la couleur des lignes * impaires du tableau de résultats. * Il est conseillé d'utilser les styles ou les * classes pour gérer la couleur. * *Le tableau associatif de formatage des résultats: *Nous stockons des tableaux associatifs dans le tableau de formatage. *Chaque ligne du tableau de formatage correspond à une colone, on doit *les entrer dans l'orde d'affichage. *-clé "Col_nom": chaine le nom du champ de la requête sql à afficher. *-clé "Col_width": entier largeur de la colone *-clé "Col_class": chaine nom de la classe css de la colone. *-clé "Col_lien_href": chaine l'url de base pour créer un lien sur la colone. *-clé "Col_lien_href_param": chaine nom du champ dans la requete SQL servant à compléter l'url. *-clé "Col_lien_target": chaine la valeur de l'attribut 'target'du lien. *-clé "Col_lien_class": chaine la valeur de l'attribut 'class'du lien. *-clé "Col_lien_title": chaine la valeur de l'attribut 'title'du lien. * *Exemple: *$tablo_formatResultat[0]=array( *"Col_nom"=>ENT_NOM_COMPLET, *"Col_width"=> 375, *"Col_class"=>'texte_tb2', *"Col_lien_href"=>'http://test.tela-botanica.org/', *"Col_lien_href_param"=>ENT_NUM_NOMEN, *"Col_lien_target"=>'_top', *"Col_lien_class"=>'eflore_lien', *"Col_lien_title"=>'Voir la fiche correspondante dans l\'index des plantes'); *$tablo_formatResultat[1]=array( *"Col_nom"=>ECS_INTITULE, *"Col_width"=> 75, *"Col_class"=>'texte_tb2 texte_c'); * * @param string une chaine fournissant la base de l'url de la page où la fonction est utilisée. * @param string la chaine correspondant aux paramètres à faire passer dans l'url. * @param string la requete sql qui fournira le tableau pour une lettre donnée. * @param string le code html d'ouverture du tableau entre la liste alphabétique et les lignes de résultat. * @param string le code html de fermeture du tableau aprés les lignes de résultat. * @param array un tableau associatif contenant le formatage des lignes * @param string le code html du message d'erreur s'il n'y a pas de lignes de résultat. * @return string le code html de la liste alphabétique et du tableaux de lignes de résultat. //============================================================================== */ function FRAG_rechercherAvecAlphabet( $requete, $baseURL, $paramURL = '', $affichageResultAvt = '', $affichageResultAps = '', $tablo_formatLigne = array(), $tablo_formatResultat = array(), $messageErreur = '', $fragmenteur = array()) { global $lettre;// Variable passée dans l'url contenant la lettre sélectionnée //Nous concaténons les valeurs de l'url : $url = $baseURL.$paramURL; //Nous initialisons les variables par défaut if($messageErreur == '') { $messageErreur = '

Pas de résultats affichable!

'; } if($affichageResultAvt == '') { $affichageResultAvt = ''; } if($affichageResultAps == '') { $affichageResultAps = ''; } if (empty($tablo_formatLigne)) { $tablo_formatLigne['Couleur_pair'] = '#E8FFE5'; } if ( ! empty($fragmenteur) ) { if (!isset($GLOBALS['T_REPONSE'])) { $GLOBALS['T_REPONSE'] = ''; } //Nous définissons les valeurs par défaut du fragmenteur : isset($fragmenteur['nbre_ligne_page_defaut']) ? '' : $fragmenteur['nbre_ligne_page_defaut'] = 20; isset($fragmenteur['afficher_titre']) ? '' : $fragmenteur['afficher_titre'] = 1; isset($fragmenteur['titre']) ? '' : $fragmenteur['titre'] = 'Sélectionner le nombre de résultats à afficher par page'; isset($fragmenteur['tableau_choix_ligne_page']) ? '' : $fragmenteur['tableau_choix_ligne_page'] = array(10,'par 10',20,'par 20',50,'par 50'); isset($fragmenteur['modele_info']) ? '' : $fragmenteur['modele_info'] = ''; isset($fragmenteur['classe_css_titre']) ? '' : $fragmenteur['classe_css_titre'] = 'insTitle1'; isset($fragmenteur['classe_css_fragmenteur']) ? '' : $fragmenteur['classe_css_fragmenteur'] = 'real_fragmenteur'; isset($fragmenteur['classe_css_info']) ? '' : $fragmenteur['classe_css_info'] = 'insTitle1'; // Nous créons le fragmentateur : $mon_fragmenteur = new fragmenteur_session(); } //Nous ajoutons à l'url le nom de la variable lettre. $url .= '&lettre='; // Nous construisons le tableau d'affichage de la liste alphabétique $sortieTexte = '' ; $sortieTexte .= '

'."\n". ''. 'Cliquer sur une lettre pour faire apparaitre la liste des taxons correspondante :'. ''."\n". '

'."\n"; $sortieTexte .= '

'."\n"; // Nous écrivons toutes les lettres avec un lien. // Nous utilisons les caractères asci de l'alphabet situé entre les numéros 61 et 95. for ($num_asci = 65 ; $num_asci < 91 ; $num_asci++) { $caractere = chr($num_asci) ; $sortieTexte .= "\t".''.chr($num_asci).' '."\n"; } $sortieTexte .= "\t".''.'Tous'.''."\n"; $sortieTexte .= '

'."\n"; // Si une lettre est selectionnée : if (!empty($lettre)) {//la variable est récupérée directement de l'url //Nous redéfinissons l'url en ajoutant la valeur de la variable lettre : $url .= $lettre; $resultat = mysql_query($requete) or die('Erreur:
Requete : '.$requete.'
Erreur mysql: ' .mysql_error()); $nbre_ligne_resultat_total = mysql_num_rows($resultat) ; if ($nbre_ligne_resultat_total != 0) { if ( ! empty($fragmenteur) ) { $mon_fragmenteur->setURL($url) ; $T_REPONSE = $mon_fragmenteur->getVariable('T_REPONSE'); if( $T_REPONSE == '') { $mon_fragmenteur->fixerLePas ($fragmenteur['nbre_ligne_page_defaut']); } $requete .= ' LIMIT '.$mon_fragmenteur->lireLeDebut().','.$mon_fragmenteur->lireLePas(); $resultat = mysql_query($requete) or die('Erreur:
Requete : '.$requete.'
Erreur mysql: ' .mysql_error()); $nbre_ligne_resultat_affiche = mysql_num_rows($resultat) ; if ($fragmenteur['afficher_titre'] == 1) { $sortieTexte .= '' ; $sortieTexte .= $fragmenteur['titre']; $sortieTexte .= ''."\n" ; } $sortieTexte .= '
'."\n"; $sortieTexte .= '

'."\n"; $formulaire = new form($GLOBALS['_GEN_commun']['pear_db']); $javascript_select['nom_evenement'] = 'onchange'; $javascript_select['valeur_evenement'] = 'javascript:this.form.submit();'; $sortieTexte .= $formulaire->selectFromTableau('T_REPONSE', $fragmenteur['tableau_choix_ligne_page'], empty($T_REPONSE) ? $fragmenteur['nbre_ligne_page_defaut'] : $T_REPONSE, $javascript_select) ; $sortieTexte .= '

'."\n"; $sortieTexte .= '
'."\n"; $sortieTexte .= '

'."\n". $mon_fragmenteur->affNbRes($nbre_ligne_resultat_total). '

'."\n"; $sortieTexte .= '

'."\n". $mon_fragmenteur->fragmente($nbre_ligne_resultat_total). '

'."\n"; } // Nous affichons les résutats de la requête avec une lettre donnée. $sortieTexte .= $affichageResultAvt; // Dans le cas de l'affichage par défaut, nous affichons les noms des colones : if (empty($tablo_formatResultat)) {//Dans le cas ou l'on utilise la fonction par défaut $sortieTexte .=''; for ($i=0; $i'."\n"; } $sortieTexte .=''; } $pair = false ; $ligne = ''; while ($ligne = mysql_fetch_array($resultat)) { // Nous ouvrons la balise de début de ligne $sortieTexte .= ''."\n"; } } else {//Dans le cas ou l'on utilise un tableau de formatage for ($i = 0; $i < count($tablo_formatResultat); $i++) { if (isset($tablo_formatResultat[$i]['Col_lien_href'])){ isset($tablo_formatResultat[$i]['Col_lien_href_param'])?'':$tablo_formatResultat[$i]['Col_lien_href_param']=''; $sortieTexte .= ''. ''; //Nous regardons si la colonne du tableau HTML est composée de plusieurs //colonnes de la table de la base de données. if (! is_array($tablo_formatResultat[$i]['Col_nom']) ) { //Une seule colonne. $sortieTexte .= $ligne[$tablo_formatResultat[$i]['Col_nom']]; } else { //Plusieurs colonnes et/ou texte. $tab_contenu_colonne = $tablo_formatResultat[$i]['Col_nom']; for ($j = 0; $j < count($tab_contenu_colonne); $j++) { if ($tab_contenu_colonne[$j]['type'] == 'texte') { //Nous devons afficher du texte. $sortieTexte .= $tab_contenu_colonne[$j]['valeur']; } elseif ($tab_contenu_colonne[$j]['type'] == 'colonne') { //Nous devons afficher une valeur d'une colonne résultat de la requête SQL. $sortieTexte .= $ligne[$tab_contenu_colonne[$j]['valeur']]; } } } $sortieTexte .= ''."\n"; } else { $sortieTexte .=''.$ligne[$tablo_formatResultat[$i]['Col_nom']]."\n"; } } } $sortieTexte .= ''; } $sortieTexte .= $affichageResultAps; } else { // Nous affichons le message d'erreur signalant l'abscence de résultats. $sortieTexte .= $messageErreur; } } return $sortieTexte ; } /* +--Fin du code ---------------------------------------------------------------------------------------+ * $Log: FRAG_fragmenteur.fonct.php,v $ * Revision 1.6 2005/02/23 17:28:35 jpm * Suppression d'image dans le fragmenteur et remplacement par des styles css. * Amélioration du code html. * * Revision 1.5 2005/02/22 16:21:28 jpm * Mise à jour : utilisation des session, mise en forme et suppression d'appel de fichiers inutiles. * * Revision 1.4 2004/09/11 19:12:43 jpm * Début mise en forme. * * Revision 1.3 2004/09/11 15:37:02 jpm * Modification de l'inclusion de fichier. * * Revision 1.2 2004/09/10 15:03:41 jpm * Ajout de commentaires. * * * +--Fin du code ----------------------------------------------------------------------------------------+ */ ?>