Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 296 → Rev 297

/trunk/services/modules/Recherche.php
55,7 → 55,6
// Il est important de compter le nombre de taxons pour l'affichage
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' COUNT(num_nom) AS nbre FROM '.$referentiel.
$this->construireWhere($p).' ';
 
// Récupération des résultats
try {
$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
174,6 → 173,40
}
/* Méthode pour récupérer une liste de taxons
* Appelée avec les paramêtres d'url suivant :
* /Recherche/ParDefaut/_
* ou les _ représentent dans l'ordre : référentiel, mots, paramétres avancés
* Si un des paramètres est absent, il prendre la valeur *
*/
public function getElementNombreSynonymeParTaxon($param) {
// Initialisation des variables
$info = '';
// Pré traitement des paramètres
$p = $this->pretraiterParametresUrl($param);
$referentiel = substr($p['ref'], 2, -2);
$liste_nom = $this->getNomRetenu($param);
if ($liste_nom != '') {
// Construction de la requête
// si recherche des synonymes
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' COUNT(num_nom) as nbr, num_nom_retenu '.
'FROM '.$referentiel.' WHERE num_nom_retenu IN ('.$liste_nom.') GROUP BY num_nom_retenu '.
'ORDER BY nom_sci ASC ';
try {
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
foreach($donnees as $ligne) {
$info[$ligne['num_nom_retenu']] = $ligne['nbr'];
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
}
return $info;
}
/**
* Récupérer le nombre de taxons d'une classifiation (infra ou supra)
* Appelée avec les paramètres d'url suivant :
212,7 → 245,6
// Il est important de compter le nombre de taxons pour l'affichage
$requete = 'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p).';';
}
// Récupération des résultats
try {
$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
228,6 → 260,59
return $info;
}
/**
* Récupérer le nombre de taxons d'une classifiation (infra ou supra)
* Appelée avec les paramètres d'url suivant :
* /Recherche/NombreClassif/_
* ou les _ représentent dans l'ordre : référentiel, mots, paramétres avancés
* Si un des paramètres est absent, il prendre la valeur *
*/
public function getElementNombreClassifParTaxon($param) {
// Initialisation des variables
$info = array();
// Pré traitement des paramètres
$p = $this->pretraiterParametresUrl($param);
$referentiel = substr($p['ref'], 2, -2);
$requete = '';
if (isset($p['classif'])) {
if (!isset($p['nn'])) {
$p['rg'] = 180;
}
if ($p['classif'] == 'infra') {
$requete = 'SELECT COUNT(num_nom) as nbr, num_tax_sup '.
'FROM '.$referentiel.' '.
'WHERE num_tax_sup IN '.
'(SELECT num_nom '.
'FROM '.$referentiel.$this->construireWhere($p).') GROUP BY num_tax_sup';
} else {
$requete = 'SELECT count(distinct num_tax_sup) as nbr, num_tax_sup '.
'FROM '.$referentiel.$this->construireWhere($p).' GROUP BY num_tax_sup';
}
} else {
// Construction de la requête
// Il est important de compter le nombre de taxons pour l'affichage
$requete = 'SELECT count(DISTINCT num_nom_retenu) as nbr, num_tax_sup FROM '.$referentiel.$this->construireWhere($p).' GROUP BY num_tax_sup;';
}
// Récupération des résultats
try {
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($donnees === false) {
$this->messages[] = "La requête a retourné aucun résultat.";
} else {
foreach($donnees as $ligne) {
$info[$ligne['num_tax_sup']] = $ligne['nbr'];
}
}
} catch (PDOException $e) {
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
}
return $info;
}
/**
* Récupérer la classification d'un taxon donné (ses enfants ou parents)
256,9 → 341,9
' num_nom_retenu, presence, exclure_taxref, num_tax_sup'.
' FROM '.$referentiel.$this->construireWhere($p).
' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'nom_sci ASC');
 
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
 
if ($donnees === false) {
$this->messages[] = "La requête a retourné aucun résultat : $requete";
} else {
282,10 → 367,10
* @return un tableau de résultats contenant les taxons inférieurs
* */
public function trouverInfra($referentiel, $donnees) {
$donneesInfras = array();
$resultats = array();
foreach ($donnees as $taxon) {
$resultats = array();
$donneesInfras = array();
$requete = 'SELECT DISTINCT '.
' num_nom, nom_sci, auteur, annee, biblio_origine, nom_addendum,'.
' num_nom_retenu, presence, exclure_taxref'.
293,15 → 378,13
' WHERE num_tax_sup = '.$taxon['num_nom'].' '.
' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'nom_sci ASC').' '.
"LIMIT $this->start, $this->limit ";
$donneesInfras = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
if ($donneesInfras !== false) {
$resultats = array_merge($resultats, $donneesInfras);
}
}
return $donneesInfras;
return $resultats;
}
/**