Subversion Repositories Applications.referentiel

Compare Revisions

Ignore whitespace Rev 305 → Rev 306

/trunk/services/modules/Recherche.php
54,7 → 54,7
// Construction de la requête
// 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).' ';
$this->construireWhere($p, $referentiel).' ';
// Récupération des résultats
try {
$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
87,7 → 87,7
// Construction de la requête
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' num_nom, nom_sci, auteur, annee, '.
'biblio_origine, nom_addendum, num_nom_retenu, presence, exclure_taxref'.
' FROM '.$referentiel.$this->construireWhere($p).
' FROM '.$referentiel.$this->construireWhere($p, $referentiel).
'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'nom_sci ASC').' '.
"LIMIT $this->start, $this->limit ";
123,7 → 123,7
// 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 FROM '.$referentiel.$this->construireWhere($p).';';
$requete = 'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p, $referentiel).';';
 
// Récupération des résultats
try {
159,7 → 159,8
// Construction de la requête
// si recherche des synonymes
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' num_nom, nom_sci, auteur, annee, '.
'biblio_origine, nom_addendum, num_nom_retenu, basionyme, synonyme_mal_applique, presence, exclure_taxref '.
'biblio_origine, nom_addendum, num_nom_retenu, '.(($referentiel == "bdtfx") ? 'num_basionyme' :
'basionyme').', synonyme_mal_applique, presence, exclure_taxref '.
' FROM '.$referentiel.' WHERE num_nom_retenu IN ('.$liste_nom.') '.
'ORDER BY nom_sci ASC ';
try {
233,10 → 234,10
'FROM '.$referentiel.' '.
'WHERE num_tax_sup IN '.
'(SELECT num_nom '.
'FROM '.$referentiel.$this->construireWhere($p).') ';
'FROM '.$referentiel.$this->construireWhere($p, $referentiel).') ';
} else {
$requete = 'SELECT count(distinct num_tax_sup) as nbr '.
'FROM '.$referentiel.$this->construireWhere($p).' ';
'FROM '.$referentiel.$this->construireWhere($p, $referentiel).' ';
}
243,7 → 244,7
} 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 FROM '.$referentiel.$this->construireWhere($p).';';
$requete = 'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p, $referentiel).';';
}
// Récupération des résultats
try {
287,15 → 288,15
'FROM '.$referentiel.' '.
'WHERE num_tax_sup IN '.
'(SELECT num_nom '.
'FROM '.$referentiel.$this->construireWhere($p).') GROUP BY num_tax_sup';
'FROM '.$referentiel.$this->construireWhere($p, $referentiel).') 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';
'FROM '.$referentiel.$this->construireWhere($p, $referentiel).' 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;';
$requete = 'SELECT count(DISTINCT num_nom_retenu) as nbr, num_tax_sup FROM '.$referentiel.$this->construireWhere($p, $referentiel).' GROUP BY num_tax_sup;';
}
// Récupération des résultats
try {
339,7 → 340,7
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').
' num_nom, nom_sci, auteur, annee, biblio_origine, nom_addendum,'.
' num_nom_retenu, presence, exclure_taxref, num_tax_sup'.
' FROM '.$referentiel.$this->construireWhere($p).
' FROM '.$referentiel.$this->construireWhere($p, $referentiel).
' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'nom_sci ASC');
 
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
431,7 → 432,7
// Construction de la requête
// si recherche des synonymes
$requete_nom_retenu = 'SELECT DISTINCT num_nom_retenu FROM '.$referentiel.$this->construireWhere($p)
$requete_nom_retenu = 'SELECT DISTINCT num_nom_retenu FROM '.$referentiel.$this->construireWhere($p, $referentiel)
." ORDER BY nom_sci ASC LIMIT $this->start, $this->limit ".';';
try {
$info = '';
541,7 → 542,7
return $p;
}
private function construireWhere($p) {
private function construireWhere($p, $referentiel) {
// Initialisation de variables
$where = ' WHERE ';
571,7 → 572,6
" OR notes LIKE {$p['mots']} ".
" OR nom_addendum LIKE {$p['mots']} ".
" OR homonyme LIKE {$p['mots']} ".
" OR basionyme LIKE {$p['mots']} ".
" OR synonyme_proparte LIKE {$p['mots']} ".
" OR synonyme_douteux LIKE {$p['mots']} ".
" OR synonyme_mal_applique LIKE {$p['mots']} ".
584,8 → 584,8
" OR presence LIKE {$p['mots']} ".
" OR statut_origine LIKE {$p['mots']} ".
" OR statut_introduction LIKE {$p['mots']} ".
" OR statut_culture LIKE {$p['mots']} ".
') ';
" OR statut_culture LIKE {$p['mots']} ";
$where .= ($referentiel == "bdtfx") ? " OR num_basionyme LIKE {$p['mots']}) " : " OR basionyme LIKE {$p['mots']}) ";
}
}
if (isset($p['sg'])) {