1, l'application retourne les 50 premieres genre commencant par ce prefixe * 3 : Si l'espece est presente l'application retourne les 50 premieres genre+espece commencant par ce prefixe */ Class NameSearch extends DBAccessor { var $config; function NameSearch($config) { $this->config=$config; } function getElement($uid){ $value=array(); // Genre et Espece if (isset($uid[1]) && isset($uid[0])) { $genre=$uid[0]; $espece=$uid[1]; if (strlen($espece) > 0 ) { $espece=ereg_replace('\*+','%',$espece); $DB=$this->connectDB($this->config); $query="SELECT DISTINCT en_nom_genre, en_epithete_espece, en_nom_supra_generique, en_epithete_infra_generique,". " auteur_bex.enaia_intitule_abrege AS abreviation_auteur_basio_ex ". " , auteur_b.enaia_intitule_abrege AS abreviation_auteur_basio ". " , auteur_mex.enaia_intitule_abrege AS abreviation_auteur_modif_ex ". " , auteur_m.enaia_intitule_abrege AS abreviation_auteur_modif ". " , en_epithete_espece, en_epithete_infra_specifique, enrg_abreviation_rang, en_id_nom, esn_ce_statut" . " FROM eflore_nom, eflore_nom_rang, " . " eflore_naturaliste_intitule_abreviation AS auteur_bex ". " , eflore_naturaliste_intitule_abreviation AS auteur_b ". " , eflore_naturaliste_intitule_abreviation AS auteur_mex ". " , eflore_naturaliste_intitule_abreviation AS auteur_m ". " , eflore_selection_nom". " WHERE en_id_version_projet_nom = '25' AND en_nom_genre LIKE '".$DB->escapeSimple($genre)."%' " . " AND en_ce_rang > 160 " . " AND en_epithete_espece like '".$DB->escapeSimple($espece)."%' AND en_ce_rang = enrg_id_rang " . " AND en_ce_auteur_basio_ex = auteur_bex.enaia_id_intitule_naturaliste_abrege ". " AND en_ce_auteur_basio = auteur_b.enaia_id_intitule_naturaliste_abrege ". " AND en_ce_auteur_modif_ex = auteur_mex.enaia_id_intitule_naturaliste_abrege ". " AND en_ce_auteur_modif = auteur_m.enaia_id_intitule_naturaliste_abrege ". " AND esn_id_version_projet_taxon=en_id_version_projet_nom " . " AND esn_id_nom= en_id_nom ". " ORDER BY esn_ce_statut, en_ce_rang, en_epithete_espece, en_nom_genre LIMIT 50"; } else { print "[]"; return; } } else { if (isset($uid[0])) { $genre=$uid[0]; $genre=ereg_replace('\*+','%',$genre); if ((strlen($genre) > 1) && ($genre != '%')) { $DB=$this->connectDB($this->config); $query="SELECT DISTINCT en_nom_genre, en_id_nom, 0 as esn_ce_statut FROM eflore_nom WHERE en_id_version_projet_nom = '25'" . "AND en_ce_rang = 160 " . "AND en_nom_genre LIKE '".$DB->escapeSimple($genre)."%' ORDER BY esn_ce_statut, en_nom_genre LIMIT 50"; } else { print "[]"; return ; } } else { print "[]"; return ; } } $res =& $DB->query($query); if (DB::isError($res)) { die($res->getMessage()); } while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) { $value[]=array($this->formaterNom($row),$row['en_id_nom'], $row['esn_ce_statut']); } $output = json_encode($value); print($output); } function getRessource(){ print "[]"; return; } function formaterNom($rawnom) { // Constitution du nom: $nom = ''; if ($rawnom['en_nom_supra_generique'] != '') { $nom .= $rawnom['en_nom_supra_generique']; } else if ($rawnom['en_epithete_infra_generique'] != '') { $nom .= $rawnom['en_epithete_infra_generique']; } else { if ($rawnom['en_nom_genre'] != '') { $nom .= $rawnom['en_nom_genre']; } if ($rawnom['en_epithete_espece']!= '') { $nom .= ' '.$rawnom['en_epithete_espece']; } if ($rawnom['en_epithete_infra_specifique'] != '') { if (!empty($rawnom['enrg_abreviation_rang'])) { $nom .= ' '.$rawnom['enrg_abreviation_rang'].''; } $nom .= ' '.$rawnom['en_epithete_infra_specifique']; } } return $nom .retournerAuteur($rawnom) ; } } function retournerAuteur($rawnom) { $auteurs = ''; $auteur_basio = ''; $auteur_modif = ''; if (!empty($rawnom['abreviation_auteur_basio_ex']) && $rawnom['abreviation_auteur_basio_ex']!='-' ) { $auteur_basio .= $rawnom['abreviation_auteur_basio_ex']; if (!empty($rawnom['abreviation_auteur_basio']) && $rawnom['abreviation_auteur_basio']!='-') { $auteur_basio .= ' ex '.$rawnom['abreviation_auteur_basio']; } } else if (!empty($rawnom['abreviation_auteur_basio']) && $rawnom['abreviation_auteur_basio']!='-') { $auteur_basio .= $rawnom['abreviation_auteur_basio']; } if (!empty($rawnom['abreviation_auteur_modif_ex']) && $rawnom['abreviation_auteur_modif_ex']!='-') { $auteur_modif .= $rawnom['abreviation_auteur_modif_ex']; if (!empty($rawnom['abreviation_auteur_modif']) && $rawnom['abreviation_auteur_modif']!='-') { $auteur_modif .= ' ex '.$rawnom['abreviation_auteur_modif']; } } else if (!empty($rawnom['abreviation_auteur_modif']) && $rawnom['abreviation_auteur_modif']!='-') { $auteur_modif .= $rawnom['abreviation_auteur_modif']; } if (!empty($auteur_modif)) { $auteurs = ' ('.$auteur_basio.') '.$auteur_modif; } elseif (!empty($auteur_basio)) { $auteurs = ' '.$auteur_basio; } return $auteurs ; } /* +--Fin du code ---------------------------------------------------------------------------------------+ * $Log$ * Revision 1.6 2008-01-30 08:57:28 ddelon * fin mise en place mygwt * * Revision 1.5 2007-05-21 18:13:30 ddelon * Refactoring et documentation * * */ ?>