Subversion Repositories eFlore/Archives.chorologie

Rev

Rev 36 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 jpm 1
<?php
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
3
// +------------------------------------------------------------------------------------------------------+
4
// | PHP version 4.3                                                                                      |
5
// +------------------------------------------------------------------------------------------------------+
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
7
// +------------------------------------------------------------------------------------------------------+
8
// | This file is part of eFlore-chorologie.                                                              |
9
// |                                                                                                      |
10
// | Foobar is free software; you can redistribute it and/or modify                                       |
11
// | it under the terms of the GNU General Public License as published by                                 |
12
// | the Free Software Foundation; either version 2 of the License, or                                    |
13
// | (at your option) any later version.                                                                  |
14
// |                                                                                                      |
15
// | Foobar is distributed in the hope that it will be useful,                                            |
16
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
17
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
18
// | GNU General Public License for more details.                                                         |
19
// |                                                                                                      |
20
// | You should have received a copy of the GNU General Public License                                    |
21
// | along with Foobar; if not, write to the Free Software                                                |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
23
// +------------------------------------------------------------------------------------------------------+
39 jp_milcent 24
// CVS : $Id: eflore_chorologie.php,v 1.13 2006-05-31 16:00:13 jp_milcent Exp $
2 jpm 25
/**
26
* Affichage des listes de noms de plantes par zones géographiques.
27
*
28
* Ce script fournit le code html correspondant aux listes de noms de plantes par zone géographique.
29
*
30
*@package eFlore
31
*@subpackage Chorologie
32
//Auteur original :
33
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
34
//Autres auteurs :
35
*@author        Aucun
36
*@copyright     Tela-Botanica 2000-2004
39 jp_milcent 37
*@version       $Revision: 1.13 $ $Date: 2006-05-31 16:00:13 $
2 jpm 38
// +------------------------------------------------------------------------------------------------------+
39
*/
40
 
41
// +------------------------------------------------------------------------------------------------------+
42
// |                                            ENTÊTE du PROGRAMME                                       |
43
// +------------------------------------------------------------------------------------------------------+
11 jpm 44
/** Inclusion du fichier config de la base de données de l'application eflore-chorolgie. */
45
require_once GEN_CHEMIN_CLIENT.'eflore_chorologie/configuration/echoro_config_bdd.inc.php';
2 jpm 46
/** Inclusion du fichier config de l'application eflore-chorolgie. */
47
require_once GEN_CHEMIN_CLIENT.'eflore_chorologie/configuration/echoro_config.inc.php';
48
/** Inclusion du fichier de langue de l'application eflore-chorologie. */
49
require_once ECHORO_CHEMIN_LANGUE.'echoro_langue_'.ECHORO_LANGUE.'.inc.php';
50
 
51
/** Inclusion de la bibliothèque PEAR de conception de formulaire.*/
34 jp_milcent 52
require_once ECHORO_CHEMIN_API_PEAR.'HTML/QuickForm.php';
2 jpm 53
/** Inclusion de la bibliothèque PEAR de gestion des URL.*/
34 jp_milcent 54
require_once ECHORO_CHEMIN_API_PEAR.'Net/URL.php';
2 jpm 55
 
56
// Ajout d'une feuille de style propre à eFlore.
11 jpm 57
GEN_stockerStyleExterne('echoro', ECHORO_CHEMIN_STYLE.'echoro.css');
2 jpm 58
 
27 jpm 59
/** Inclusion de la classe "form" de l'API Formulaire. */
60
require_once ECHORO_CHEMIN_API_FORMULAIRE.'FORM_formulaire.class.php';
11 jpm 61
 
62
/** Inclusion de la classe "Fragmenteur" de l'API Fragmenteur. */
63
require_once ECHORO_CHEMIN_API_FRAGMENTEUR.'FRAG_Fragmenteur.class.php';
64
/** Inclusion de la classe "Fragmenteur Session" de l'API Fragmenteur. */
65
require_once ECHORO_CHEMIN_API_FRAGMENTEUR.'FRAG_Fragmenteur_Session.class.php';
66
/** Inclusion des fonctions de l'API Fragmenteur. */
2 jpm 67
require_once ECHORO_CHEMIN_API_FRAGMENTEUR.'FRAG_fragmenteur.fonct.php';
68
 
69
/** Inclusion de la bibliothèque Cartographie. */
70
require_once ECHORO_CHEMIN_BIBLIO_CARTO.'carto_carte.class.php';
71
 
72
/** Inclusion du fichier comportant des fonctions communes aux applis du package eFlore-chorologie.*/
73
include_once ECHORO_CHEMIN_BIBLIO.'echoro_information.fonct.php';
74
/** Inclusion du fichier gérant les fonctions d'encodage. */
75
include_once ECHORO_CHEMIN_BIBLIO.'echoro_encodage.fonct.php';
76
/** Inclusion du fichier gérant les fonctions fournissant l'affichage en XHTML. */
77
include_once ECHORO_CHEMIN_BIBLIO.'echoro_affichage_xhtml.fonct.php';
78
 
79
// +------------------------------------------------------------------------------------------------------+
80
// |                                            CORPS du PROGRAMME                                        |
81
// +------------------------------------------------------------------------------------------------------+
82
function afficherContenuNavigation()
83
{
84
    $sortie  = '';
85
    return $sortie;
86
}
87
 
88
function afficherContenuTete()
89
{
90
    $sortie  = '';
91
    return $sortie;
92
}
93
 
94
function afficherContenuCorps()
95
{
96
    // +--------------------------------------------------------------------------------------------------+
97
    // Initialisation
98
    $sortie = '';
99
 
100
    global $choro_dep_TABLEAU_CHOIX_LIGNE_PAGE;
101
    global $image_x;
102
    global $image_y;
103
    global $historique_cartes;
104
    global $lettre;
105
    global $departement;
106
    global $nombre_taxon;
107
    global $liste_zone_carte;
108
 
109
 
110
    // +--------------------------------------------------------------------------------------------------+
111
    // PARAMETRAGE des TABLEAUX de la FONCTION rechercheAlphabet()
112
 
23 jpm 113
    $tablo_formatLigne['Class_pair'] = 'echoro_ligne_paire';
114
    $tablo_formatLigne['Class_impair'] = 'echoro_ligne_impaire';
2 jpm 115
 
116
    //Choix du contenu de la colonne affichant le nom du taxon.
117
    $tab_valeur_colonne_nom_complet[0] = array(
118
    'type' => 'texte',
119
    'valeur' => ' <b> ');
120
    $tab_valeur_colonne_nom_complet[1] = array(
121
        'type' => 'colonne',
122
        'valeur' => ENT_NOM_COMPLET_02);
123
    $tab_valeur_colonne_nom_complet[2] = array(
124
    'type' => 'texte',
23 jpm 125
    'valeur' => ' [ <span class="echoro_num_nomen">');
2 jpm 126
    $tab_valeur_colonne_nom_complet[3] = array(
127
    'type' => 'colonne',
128
    'valeur' => ENT_NUM_NOMEN);
129
    $tab_valeur_colonne_nom_complet[4] = array(
130
    'type' => 'texte',
23 jpm 131
    'valeur' => '</span> - <span class="echoro_num_taxo">' );
2 jpm 132
    $tab_valeur_colonne_nom_complet[5] = array(
133
    'type' => 'colonne',
134
    'valeur' => ENT_NUM_TAXO);
135
    $tab_valeur_colonne_nom_complet[6] = array(
136
    'type' => 'texte',
137
    'valeur' => '</span> ]');
138
    $tab_valeur_colonne_nom_complet[7] = array(
139
    'type' => 'texte',
140
    'valeur' => ' </b> ');
11 jpm 141
    // Création de l'url pour obtenir les fiches
2 jpm 142
    //Implémentation du tableau contenant les informations pour
143
    //l'affichage des résultats.
11 jpm 144
    $tablo_formatResultat[0] = array(
145
        'Col_nom' => $tab_valeur_colonne_nom_complet,
146
        'Col_width' => 450,
23 jpm 147
        'Col_class' => 'texte_i',
11 jpm 148
        'Col_lien_href' => $GLOBALS['_ECHORO_']['url_base']->getURL().'nn',
149
        'Col_lien_href_param' => ENT_NUM_NOMEN,
150
        'Col_lien_target' => '_blank',
23 jpm 151
        'Col_lien_class' => 'echoro_lien',
11 jpm 152
        'Col_lien_title' => 'Voir la fiche correspondante dans l\'index des plantes');
2 jpm 153
    if ($departement == 971 || $departement == 972 ) {
11 jpm 154
        $tablo_formatResultat[0]['Col_lien_href'] = $GLOBALS['_ECHORO_']['url_base']->getURL().'bdnfgm_nn';
2 jpm 155
    } elseif ($departement == 974) {
11 jpm 156
        $tablo_formatResultat[0]['Col_lien_href'] = $GLOBALS['_ECHORO_']['url_base']->getURL().'bdnfr_nn';
2 jpm 157
    }
158
    $tablo_formatResultat[1]=array(
159
    'Col_nom' => ECS_INTITULE,
160
    'Col_width' => 150,
23 jpm 161
    'Col_class' => 'texte_c');
2 jpm 162
 
163
    $fragmenteur['nbre_ligne_page_defaut'] = NBRE_LIGNE_PAGE_DEFAUT;
164
    $fragmenteur['numero_ligne_depart'] = NUMERO_LIGNE_DEPART;
165
    $fragmenteur['afficher_titre'] = AFFICHER_TITRE;
166
    $fragmenteur['titre'] = TITRE_FRAGMENTEUR;
167
    $fragmenteur['tableau_choix_ligne_page'] = $choro_dep_TABLEAU_CHOIX_LIGNE_PAGE;
168
    $fragmenteur['modele_info'] = MODELE_INFO;
169
    $fragmenteur['classe_css_titre'] = CLASSE_CSS_TITRE;
170
    $fragmenteur['classe_css_fragmenteur'] = CLASSE_CSS_FRAGMENTEUR;
171
    $fragmenteur['classe_css_info'] = CLASSE_CSS_INFO;
172
 
173
    // +--------------------------------------------------------------------------------------------------+
174
    // RÉCUPÉRATION DU NOMBRE DE TAXON PAR DÉPARTEMENT
175
 
176
    //Connexion à la base
177
    if(BD_BOTA != BD_GENERALE){
178
        //Nous sommes dans le cas où l'on a deux base: une pour les tables de la chorologie l'autre pour
179
        //les tables de la carto.
180
        //On ne sélectionne donc pas de base.
181
        /** Definition de la variable globale stokant la connexion à la base de données. */
182
        //$GLOBALS['_ECHORO_']['bdd'] = DB::connect(ECHORO_DSN_SANS_BDD);
11 jpm 183
        $GLOBALS['_ECHORO_']['bdd'] = mysql_connect(ECHORO_BDD_SERVEUR, ECHORO_BDD_UTILISATEUR, ECHORO_BDD_MOT_DE_PASSE ) or die (ER_CONNECT.mysql_error());
2 jpm 184
    }
185
    else{
186
        //Nous sommes dans le cas où l'on a une seule base.
187
        //$GLOBALS['_ECHORO_']['bdd'] = DB::connect(ECHORO_DSN);
11 jpm 188
        $GLOBALS['_ECHORO_']['bdd'] = mysql_connect(ECHORO_BDD_SERVEUR, ECHORO_BDD_UTILISATEUR, ECHORO_BDD_MOT_DE_PASSE ) or die (ER_CONNECT.mysql_error());
189
        mysql_select_db(BD_GENERALE, $GLOBALS['_ECHORO_']['bdd']) or die (ER_SEL_BD_GENERALE);
2 jpm 190
    }
191
 
192
    //Requète fournisant le nombre de taxon pour chaque département. Nous récupérons aussi grâce à
193
    //cette requète les valeurs nécessaires à la réalisation de la carte dynamique.
194
 
195
    $requete_01 =
196
        'SELECT DISTINCT '.CD_ID.
197
        ' FROM '.CD_BD_TABLE;
198
 
199
    $resultat_01 = mysql_query($requete_01, $GLOBALS['_ECHORO_']['bdd']) or die('
200
    <H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
201
    '<b>Requete : </b>'.$requete_01.
202
    '<br/><br/><b>Erreur : </b>'.mysql_error());
203
 
204
    $requete_02 =
205
        'SELECT * ,count('.CD_ID.') as nbr '.
206
        'FROM '.ECD_BD_TABLE.', '.CD_BD_TABLE.' '.
207
        'WHERE '.CD_ID.' = '.ECD_DEP.' '.
208
        'GROUP BY '.CD_ID;
209
 
210
    $resultat_02 = mysql_query($requete_02, $GLOBALS['_ECHORO_']['bdd']) or die('
211
    <H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
212
    '<b>Requete : </b>'.$requete_02.
213
    '<br/><br/><b>Erreur : </b>'.mysql_error());
214
 
215
    //Requête spécifique aux départements des Antilles
216
    $requete_971_972 =
217
        'SELECT * ,count('.EAC_DEP.') as nbr '.
218
        'FROM '.EAC_BD_TABLE.' '.
219
        'WHERE ('.EAC_DEP.' = 971 '.
220
        'OR '.EAC_DEP.' = 972 ) '.
221
        'GROUP BY '.EAC_DEP;
222
 
223
    $resultat_971_972 = mysql_query($requete_971_972, $GLOBALS['_ECHORO_']['bdd']) or die('
224
    <H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
225
    '<b>Requete : </b>'.$requete_971_972.
226
    '<br/><br/><b>Erreur : </b>'.mysql_error());
227
 
228
    //Requête spécifique au département de la Réunion
229
    $requete_974 =
230
        'SELECT * ,count('.ERC_DEP.') as nbr '.
231
        'FROM '.ERC_BD_TABLE.' '.
232
        'WHERE '.ERC_DEP.' = 974 '.
233
        'GROUP BY '.ERC_DEP;
234
 
235
    $resultat_974 = mysql_query($requete_974, $GLOBALS['_ECHORO_']['bdd']) or die('
236
    <H2 style='.STYLE_REQUETE.'>Erreur de requête</H2>'.
237
    '<b>Requete : </b>'.$requete_974.
238
    '<br/><br/><b>Erreur : </b>'.mysql_error());
239
 
240
    //Nous stockons les résultats de la requete département par département dans
241
    //un tableau associatif : $tableau_dep_taxons.
242
    //Pour chaque identifiant de département, nous sotckons dans le tableau le nombre
243
    //de taxon présent.
244
 
245
    $tableau_dep_taxons = array();
246
    while ($ligne_01 = mysql_fetch_array($resultat_01)) {
247
        $tableau_dep_taxons[$ligne_01[CD_ID]] = 0;
248
    }
249
    while ($ligne_02 = mysql_fetch_array($resultat_02)) {
250
        $tableau_dep_taxons[$ligne_02[CD_ID]] = $ligne_02['nbr'];
251
    }
252
    //Résultat pour la requête spécifique aux départements des Antilles
253
    while ($ligne_971_972 = mysql_fetch_array($resultat_971_972)) {
254
        $tableau_dep_taxons[$ligne_971_972[EAC_DEP]] = $ligne_971_972['nbr'];
255
    }
256
    //Résultat pour la requête spécifique au département de la Réunion
257
    while ($ligne_974 = mysql_fetch_array($resultat_974)) {
258
        $tableau_dep_taxons[$ligne_974[EAC_DEP]] = $ligne_974['nbr'];
259
    }
260
    //Nous comptons le nombre de département possédant une liste :
261
    $nbre_liste = 0;
262
    foreach($tableau_dep_taxons as $cle => $valeur){
263
        if ($valeur != 0) {
264
            $nbre_liste++;
265
        }
266
    }
267
 
11 jpm 268
    // Instanciation du tableau contenant les infos sur la table des zones géo.
269
    $info_table_zg['nom_table_zone'] = CD_BD_TABLE;
270
    $info_table_zg['nom_chp_id_zone'] = CD_ID;
271
    $info_table_zg['nom_chp_nom_zone'] = CD_NOM;
272
    $info_table_zg['nom_chp_rouge'] = CD_R;
273
    $info_table_zg['nom_chp_vert'] = CD_V;
274
    $info_table_zg['nom_chp_bleu'] = CD_B;
275
    $info_table_zg['nom_chp_zone_sup'] = CD_PAYS;
276
    $info_table_zg['tableau_valeurs_zone'] = $tableau_dep_taxons;
2 jpm 277
 
11 jpm 278
    // Instanciation du tableau contenant les champs de la table action
279
    $info_table_action['nom_table_action'] = CA_BD_TABLE;
280
    $info_table_action['nom_chp_id_carte'] = CA_CARTE;
281
    $info_table_action['nom_chp_id_zg_action'] = CA_ZG;
282
    $info_table_action['nom_chp_type_zg'] = CA_TYPE_ZG;
283
    $info_table_action['nom_chp_action'] = CA_ACTION;
284
    $info_table_action['nom_chp_id_carte_destination'] = CA_CARTE_DESTINATION;
2 jpm 285
 
286
    // +--------------------------------------------------------------------------------------------------+
287
    // CRÉATION DES OBJETS CARTE ET ACTION
288
 
289
    //Nous commençons par vider la chaine renvoyée par la fonction putFrame().
11 jpm 290
    $res = '';
2 jpm 291
 
292
    //Nous créons un nouvel objet carte.
11 jpm 293
    $france = new Carto_Carte(  ID_CARTE_FR_DPT,
294
                                ID_ZONE_GEO_CARTE_FR_DPT,
295
                                NOM_CARTE_FR_DPT,
296
                                ECHORO_FICHIER_CARTE_FR_DPT_MASQUE,
297
                                ECHORO_FICHIER_CARTE_FR_DPT,
298
                                ECHORO_CHEMIN_CARTE,
299
                                $info_table_zg,
300
                                $info_table_action);
2 jpm 301
    //Les valeurs de coordonnées x et y du clic sur l'image,
302
    //sont renvoyée automatiquement par le formulaire de la carte.
303
    //A la première exécution du script ces variables sont vides.
304
 
305
    $france->historique_cartes = $historique_cartes;
306
    $france->image_x = $image_x;
307
    $france->image_y = $image_y;
308
    $france->liste_zone_carte = $liste_zone_carte;
11 jpm 309
    $france->url = $GLOBALS['_ECHORO_']['url']->getURL();
2 jpm 310
 
311
    //Nous définissons les couleurs de la carte:
312
    $france->definirCouleurs (
313
        COULEUR_ZERO_R, COULEUR_ZERO_V, COULEUR_ZERO_B,
314
        COULEUR_MINI_R, COULEUR_MINI_V, COULEUR_MINI_B,
315
        COULEUR_MEDIUM_R, COULEUR_MEDIUM_V, COULEUR_MEDIUM_B,
316
        COULEUR_MAXI_R, COULEUR_MAXI_V, COULEUR_MAXI_B);
317
 
318
    $france->definirFormuleColoriage('ecart_type');
319
 
320
    // +--------------------------------------------------------------------------------------------------+
321
    // GESTION AFFICHAGE CARTE OU LISTE
322
 
323
    //Une fois l'arborescence créee, nous lançons la méthode imgform() pour récuperer le formulaire de la
324
    //carte (dans $carte_france). S'il n'y a pas de carte à afficher imgform() renvoi false. Nous pouvons
325
    //alors afficher la liste des taxons pour le département sélectioné.
326
 
327
    //Initialisation de la variable $carte_france.
328
    if(empty($carte_france)){
329
        $carte_france = false;
330
    }
331
 
332
    //Récupération de la valeur de l'action:
333
    //-false = affichage de la liste
334
    //-true = affichage d'une carte (mais ici ce cas ne se présente jamais.
335
    $carte_france = $france->donnerFormulaireImage();
336
 
337
    // Nous testons $lettre pour affichier la carte ou la liste
338
    if (isset($lettre)) {
339
 
340
    //Affichage de la liste des taxon pour le département.
341
    //L'utilisateur a cliqué sur une lettre dans la liste alphabétique
342
    //sur un département.
343
 
344
        //Nous récupérons toutes les infos sur le département :
11 jpm 345
        $tableau_infoDep = echoro_recupererInfoDep($departement);
2 jpm 346
 
347
        //Nous affectons les messages d'erreur
35 jp_milcent 348
        if($nombre_taxon != 0){
349
            $message_alerte = message_alerte('01');
350
        } else {
351
            $message_alerte = message_alerte('02');
352
        }
353
 
2 jpm 354
        //La requete qui sélectionne les noms de taxons pour le département
355
        //et la lettre transmis dans l'url par la variable $lettre.
356
        if ($tableau_infoDep['NUMERO'] == 971 || $tableau_infoDep['NUMERO'] == 972) {
357
                $requete_03 =
358
                        'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
359
                                ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
360
                        ' FROM '.EAC_BD_TABLE.', '.EANT_BD_TABLE.', '.ECS_BD_TABLE.
361
                        ' WHERE ';
11 jpm 362
                if ($lettre != 'tous'){
2 jpm 363
                    $requete_03 .= ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"';
364
                } else {
365
                    $requete_03 .= ENT_NOM_COMPLET_02.' LIKE "%"';
366
                }
367
                $requete_03 .=
368
                        ' AND '.EAC_DEP.'='.$tableau_infoDep['NUMERO'].
369
                        ' AND '.EAC_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
370
                        ' AND '.EAC_STATUT.' = '.ECS_ID.
371
                        ' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
372
            } elseif ($tableau_infoDep['NUMERO'] == 974) {
373
                $requete_03 =
374
                        'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
375
                                ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
376
                        ' FROM '.ERC_BD_TABLE.', '.ERNT_BD_TABLE.', '.ERCS_BD_TABLE.
377
                        ' WHERE ';
378
                if ($lettre != "tous"){
379
                    $requete_03 .= ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"';
380
                } else {
381
                    $requete_03 .= ENT_NOM_COMPLET_02.' LIKE "%"';
382
                }
383
                $requete_03 .=
384
                        ' AND '.ERC_DEP.'='.$tableau_infoDep['NUMERO'].
385
                        ' AND '.ERC_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
386
                        ' AND '.ERC_STATUT.' = '.ECS_ID.
387
                        ' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
388
            } else {
389
                $requete_03 =
390
                        'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
391
                                ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
392
                        ' FROM '.ECD_BD_TABLE.', '.ENT_BD_TABLE.', '.ECS_BD_TABLE.
393
                        ' WHERE ';
394
                if ($lettre != "tous"){
395
                    $requete_03 .= ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"';
396
                } else {
397
                    $requete_03 .= ENT_NOM_COMPLET_02.' LIKE "%"';
398
                }
399
                $requete_03 .=
400
                        ' AND '.ECD_DEP.'='.$tableau_infoDep['NUMERO'].
401
                        ' AND '.ECD_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
402
                        ' AND '.ECD_INDICE.' = '.ECS_ID.
403
                        ' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
404
            }
35 jp_milcent 405
            $resultat_export = mysql_query($requete_03, $GLOBALS['_ECHORO_']['bdd']) or die('
34 jp_milcent 406
				<h2 style='.STYLE_REQUETE.'>Erreur de requête</h2>'.
407
				'<b>Requete : </b>'.$requete_03.
408
				'<br/><br/><b>Erreur : </b>'.mysql_error());
35 jp_milcent 409
			$GLOBALS['export_bool'] = true;
410
			if (mysql_num_rows($resultat_export) == 0) {
411
				$GLOBALS['export_bool'] = false;
412
			}
413
			if (isset($_GET['action']) && $_GET['action'] == 'export') {
414
		        // Gestion de l'export XLS
34 jp_milcent 415
				$i = 0;
416
				if (isset($_GET['format']) && $_GET['format'] == 'xls') {
417
					/** Inclusion de la classe PEAR de création de fichiers excell. */
418
					require_once ECHORO_CHEMIN_API_PEAR.'Spreadsheet/Excel/Writer.php';
419
					$workbook = new Spreadsheet_Excel_Writer();
420
					$nom_feuille = 'Département '.$tableau_infoDep['NUMERO'];
421
					$nom_fichier = 'Chorologie - '.$nom_feuille.'.xls';
422
					$worksheet = $workbook->addWorksheet($nom_feuille);
423
 
424
					$format_titre = $workbook->addFormat();
425
					$format_titre->setBold(1);
426
					$format_titre->setSize(16);
427
 
428
					$format_intro = $workbook->addFormat();
429
					$format_intro->setBold(1);
430
					$format_intro->setSize(12);
431
 
432
					$worksheet->mergeCells($i++, 0, $i, 8);
35 jp_milcent 433
					if ($GLOBALS['lettre'] != 'tous') {
434
						$titre = 'Export des taxons commençant par la lettre '.$GLOBALS['lettre'].' présents dans le département '.$tableau_infoDep['NUMERO'];
435
					} else {
436
						$titre = 'Export des taxons présents dans le département '.$tableau_infoDep['NUMERO'];
437
					}
34 jp_milcent 438
					$worksheet->writeString(0, 0, $titre, $format_titre);
439
 
440
					$worksheet->mergeCells(++$i, 0, $i, 8);
441
					$titre_projet = 'Projet :';
442
					$worksheet->writeString($i++, 0, $titre_projet, $format_intro);
443
					$worksheet->mergeCells($i, 0, $i, 8);
444
					$txt_projet = 'Phytochorologie départementale - Coordinateur : Philippe JULVE';
445
					$worksheet->writeString($i++, 0, $txt_projet);
446
 
447
					$worksheet->mergeCells($i, 0, $i, 8);
448
					$titre_licence = 'Licence :';
449
					$worksheet->writeString($i++, 0, $titre_licence, $format_intro);
450
					$worksheet->mergeCells($i, 0, $i, 8);
451
					$txt_licence = 'http://creativecommons.org/licenses/by-sa/2.0/fr/';
39 jp_milcent 452
					$worksheet->writeUrl($i++, 0, $txt_licence);
34 jp_milcent 453
 
454
					$worksheet->mergeCells($i, 0, $i, 8);
455
					$titre_contributeur = 'Contributeurs :';
456
					$worksheet->writeString($i++, 0, $titre_contributeur, $format_intro);
457
					for ($j = 0; $j < count($tableau_infoDep['CORRESPONDANTS']); $j++){
458
		                if(ereg("[@]", $tableau_infoDep['CORRESPONDANTS'][$j]['COURRIEL'])){
459
		                    $worksheet->writeString($i, 0, $tableau_infoDep['CORRESPONDANTS'][$j]['PRENOM']);
460
		                    $worksheet->writeString($i, 1, $tableau_infoDep['CORRESPONDANTS'][$j]['NOM']);
461
		                    $worksheet->writeString($i++, 2, $tableau_infoDep['CORRESPONDANTS'][$j]['COURRIEL']);
462
		                } else {
463
		                    $worksheet->writeString($i, 0, $tableau_infoDep['CORRESPONDANTS'][$j]['PRENOM']);
464
		                    $worksheet->writeString($i++, 1, $tableau_infoDep['CORRESPONDANTS'][$j]['NOM']);
465
		                }
466
		            }
467
 
468
		            $worksheet->mergeCells($i, 0, $i, 8);
469
					$titre_source = 'Sources :';
470
					$worksheet->writeString($i++, 0, $titre_source, $format_intro);
471
					for ($j = 0; $j < count($tableau_infoDep['SOURCES']); $j++){
472
						$worksheet->mergeCells($i, 0, $i, 8);
473
						$worksheet->writeString($i++, 0, $tableau_infoDep['SOURCES'][$j]);
474
		            }
475
 
476
		            $worksheet->setColumn(0, 1, 20);
477
		            $worksheet->setColumn(2, 2, 60);
478
		            $worksheet->setColumn(3, 3, 20);
479
					$worksheet->writeString($i, 0, 'N° taxonomique', $format_intro);
480
					$worksheet->writeString($i, 1, 'N° nomenclatural', $format_intro);
481
					$worksheet->writeString($i, 2, 'Nom complet', $format_intro);
482
					$worksheet->writeString($i++, 3, 'Indice', $format_intro);
483
 
484
					while ($ligne = mysql_fetch_array($resultat_export)) {
485
						//echo '<pre>'.print_r($ligne).'</pre>';
486
						$worksheet->writeNumber($i, 0, $ligne[ENT_NUM_TAXO]);
487
						$worksheet->writeNumber($i, 1, $ligne[ENT_NUM_NOMEN]);
488
						$worksheet->writeString($i, 2, $ligne[ENT_NOM_COMPLET_02]);
489
						$worksheet->writeString($i++, 3, $ligne[ECS_INTITULE]);
490
					}
491
					$workbook->send($nom_fichier);
492
					$workbook->close();
493
					exit();
494
				} else {
495
					return remplaceEntiteHTLM(message_alerte('03'));
496
				}
497
			} else {
498
		        //Nous plaçons des données javascripts pour la gestion des infos bulles:
499
		        $tableau_inclusion = array($tableau_infoDep['NOM'], $nombre_taxon);
500
		        $res = inclusion_html('titre_liste', $tableau_inclusion);
501
		        $tableau_inclusion = array($tableau_infoDep['SOURCES'], $tableau_infoDep['CORRESPONDANTS']);
502
		        $res .= inclusion_html('info_dep', $tableau_inclusion);
503
 
504
		        $tablo_inclusion = array($lettre);
505
		        $res .= rechercheAlphabet($requete_03, $GLOBALS['_ECHORO_']['url']->getURL(), '&amp;departement='.$tableau_infoDep['NUMERO'].'&amp;nombre_taxon='.$nombre_taxon,
506
		                                                    inclusion_html('tab_ouvre_liste_taxon', $tablo_inclusion), inclusion_html('tab_evol_ferme'), $tablo_formatLigne,
507
		                                                    $tablo_formatResultat,  $message_alerte, $fragmenteur);
508
		        return remplaceEntiteHTLM($res);
509
			}
30 jpm 510
    } else {
2 jpm 511
        if (!$carte_france) {
512
        //Affichage quand il n'y a plus de carte.
513
        //Dans notre cas l'utilisateur a cliqué sur un département.
29 jpm 514
            //Nous appelons la fonction javascript à insérer dans l'entête.
515
            GEN_stockerFichierScript('echoro', ECHORO_CHEMIN_SCRIPT.'echoro.js');
2 jpm 516
 
517
            //Nous récupérons l'identifiant du département transmis dans l'historique sous
518
            //la forme france*numéro_departement
519
            $tableau_departement = explode ('*',$france->historique);
520
 
521
            //Nous récupérons toutes les infos sur le département :
11 jpm 522
            $tableau_infoDep = echoro_recupererInfoDep($tableau_departement[1]);
35 jp_milcent 523
            //Attribution à la variable globale du numéro du département
524
            $GLOBALS['departement'] = $tableau_infoDep['NUMERO'];
2 jpm 525
 
526
            if ($tableau_infoDep['NUMERO'] == 971 || $tableau_infoDep['NUMERO'] == 972) {
11 jpm 527
                $tablo_formatResultat[0]['Col_lien_href'] = $GLOBALS['_ECHORO_']['url_base']->getURL().'bdnfgm_nn';
2 jpm 528
            } elseif ($tableau_infoDep['NUMERO'] == 974) {
11 jpm 529
                $tablo_formatResultat[0]['Col_lien_href'] = $GLOBALS['_ECHORO_']['url_base']->getURL().'bdnfr_nn';
2 jpm 530
            }
531
 
532
            //Nous récupérons le nombre de taxons présent dans le département
35 jp_milcent 533
            if(isset($tableau_dep_taxons[$tableau_infoDep['NUMERO']]) && $tableau_dep_taxons[$tableau_infoDep['NUMERO']] != 0) {
2 jpm 534
                $nombre_taxon = $tableau_dep_taxons[$tableau_infoDep['NUMERO']];
535
                $message_alerte = message_alerte('01');
35 jp_milcent 536
            } else {
2 jpm 537
                $nombre_taxon = 0;
538
                $message_alerte = message_alerte('02');
539
            }
540
            //Nous affichons par défaut la liste des taxons dont le nom
541
            //commence par A.
13 jpm 542
            $lettre = 'A';
2 jpm 543
 
544
            //La requete qui sélectionne les noms de taxons pour le département
545
            //et la lettre A.
546
            if ($tableau_infoDep['NUMERO'] == 971 || $tableau_infoDep['NUMERO'] == 972) {
547
                $requete_04 =
548
                    'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
549
                            ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
550
                    ' FROM '.EAC_BD_TABLE.', '.EANT_BD_TABLE.', '.ECS_BD_TABLE.
551
                    ' WHERE '.ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"'.
552
                    ' AND '.EAC_DEP.' = '.$tableau_infoDep['NUMERO'].
553
                    //' AND '.EAC_NUM_TAXO.' = '.ENT_NUM_TAXO.
554
                    ' AND '.EAC_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
555
                    ' AND '.EAC_STATUT.' = '.ECS_ID.
556
                    ' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
557
            } elseif ($tableau_infoDep['NUMERO'] == 974) {
558
                $requete_04 =
559
                    'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
560
                            ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
561
                    ' FROM '.ERC_BD_TABLE.', '.ERNT_BD_TABLE.', '.ERCS_BD_TABLE.
562
                    ' WHERE '.ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"'.
563
                    ' AND '.ERC_DEP.' = '.$tableau_infoDep['NUMERO'].
564
                    //' AND '.ERC_NUM_TAXO.' = '.ENT_NUM_TAXO.
565
                    ' AND '.ERC_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
566
                    ' AND '.ERC_STATUT.' = '.ECS_ID.
567
                    ' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
568
            } else {
569
                $requete_04 =
570
                    'SELECT '.ENT_NUM_TAXO.', '.ENT_NUM_NOMEN.', '.
571
                            ENT_NOM_COMPLET_02.', '.ECS_INTITULE.
572
                    ' FROM '.ECD_BD_TABLE.', '.ENT_BD_TABLE.', '.ECS_BD_TABLE.
573
                    ' WHERE '.ENT_NOM_COMPLET_02.' LIKE "'.$lettre.'%"'.
574
                    ' AND '.ECD_DEP.' = '.$tableau_infoDep['NUMERO'].
575
                    //' AND '.ECD_NUM_TAXO.' = '.ENT_NUM_TAXO.
576
                    ' AND '.ECD_NUM_NOMEN.' = '.ENT_NUM_NOMEN.
577
                    ' AND '.ECD_INDICE.' = '.ECS_ID.
578
                    ' ORDER BY '.ENT_NOM_COMPLET_02.' ASC';
579
            }
36 jp_milcent 580
            $resultat_export = mysql_query($requete_04, $GLOBALS['_ECHORO_']['bdd']) or die('
581
				<h2 style='.STYLE_REQUETE.'>Erreur de requête</h2>'.
582
				'<b>Requete : </b>'.$requete_04.
583
				'<br/><br/><b>Erreur : </b>'.mysql_error());
584
			$GLOBALS['export_bool'] = true;
585
			if (mysql_num_rows($resultat_export) == 0) {
586
				$GLOBALS['export_bool'] = false;
587
			}
588
 
34 jp_milcent 589
			// Gestion de l'affichage XHTML
590
	        $tableau_inclusion = array($tableau_infoDep['NOM'], $nombre_taxon);
591
	        $res = inclusion_html('titre_liste', $tableau_inclusion);
592
 
593
	        $tableau_inclusion = array($tableau_infoDep['SOURCES'], $tableau_infoDep['CORRESPONDANTS']);
594
	        $res .= inclusion_html('info_dep', $tableau_inclusion);
595
 
596
	        //La fonction gérant l'affichage de la liste alphabétique et
597
	        //de l'affichage suite à une seléction dans la liste.
598
	        $tablo_inclusion = array($lettre);
599
	        $res .= FRAG_rechercherAvecAlphabet($requete_04, $GLOBALS['_ECHORO_']['url']->getURL(), '&amp;departement='.$tableau_infoDep['NUMERO'].'&amp;nombre_taxon='.$nombre_taxon,
600
	                                                        inclusion_html('tab_ouvre_liste_taxon', $tablo_inclusion), inclusion_html('tab_evol_ferme'), $tablo_formatLigne,
601
	                                                        $tablo_formatResultat, $message_alerte, $fragmenteur);
602
 
603
	        return remplaceEntiteHTLM($res);
11 jpm 604
        } else {
605
            //Affichage de la carte de france des départements.
606
            //L'utilisateur arrive sur la page.
2 jpm 607
            $tableau_inclusion = array($nbre_liste);
608
            $res = inclusion_html('titre_carte', $tableau_inclusion);//Le titre dans une ligne de tableau
609
 
610
            //Nous affichons la carte
30 jpm 611
            $res .= $carte_france;
2 jpm 612
 
613
            $res .= inclusion_html('avertissement_carte');//Commentaire dans des lignes de tableau
614
 
30 jpm 615
            return remplaceEntiteHTLM($res);
2 jpm 616
        }//Fin du test de $carte_france.
617
    }//Fin du test de $lettre
618
}
619
 
620
function afficherContenuPied()
621
{
622
    return inclusion_html('pied_page');
623
}
624
 
625
// +------------------------------------------------------------------------------------------------------+
626
// |                                            PIED du PROGRAMME                                         |
627
// +------------------------------------------------------------------------------------------------------+
628
 
629
 
630
/* +--Fin du code ----------------------------------------------------------------------------------------+
631
*
632
* $Log: not supported by cvs2svn $
39 jp_milcent 633
* Revision 1.12  2006/05/31 15:14:51  jp_milcent
634
* Amélioration de la gestion de l'export xls (suite).
635
*
36 jp_milcent 636
* Revision 1.11  2006/05/31 15:11:29  jp_milcent
637
* Amélioration de la gestion de l'export xls.
638
*
35 jp_milcent 639
* Revision 1.10  2006/05/31 14:43:35  jp_milcent
640
* Correction de la gestion des sessions pour l'affichage de la carte.
641
* Ajout de l'export au format xls.
642
*
34 jp_milcent 643
* Revision 1.9  2005/06/30 15:23:02  jpm
644
* Utilisation d'un fichier javascript à part.
645
*
32 jpm 646
* Revision 1.8  2005/05/31 13:45:10  jpm
647
* Mise en place de la gestion entités html.
648
*
30 jpm 649
* Revision 1.7  2005/05/19 07:37:47  jpm
650
* Correction des bogues et derniers réglages avant mise en ligne du site v4.
651
*
29 jpm 652
* Revision 1.6  2005/03/15 15:10:40  jpm
653
* Ajout de l'API formulaire.
654
*
27 jpm 655
* Revision 1.5  2005/02/24 17:06:17  jpm
656
* Changement du nom d'une fonction.
657
*
24 jpm 658
* Revision 1.4  2005/02/23 17:31:04  jpm
659
* Modification de noms de classes css.
660
*
23 jpm 661
* Revision 1.3  2005/02/22 19:36:03  jpm
662
* Suppression de code html superflu.
663
*
13 jpm 664
* Revision 1.2  2005/02/22 16:39:20  jpm
665
* Changement divers pour l'adaptation à Papyrus.
666
*
11 jpm 667
* Revision 1.1  2005/02/21 19:36:57  jpm
668
* Ajout du code de l'appli de tela v3.
2 jpm 669
*
11 jpm 670
*
2 jpm 671
* +-- Fin du code ----------------------------------------------------------------------------------------+
672
*/
673
?>