| Line 53... |
Line 53... |
| 53 |
|
53 |
|
| 54 |
// Construction de la requête
|
54 |
// Construction de la requête
|
| 55 |
// Il est important de compter le nombre de taxons pour l'affichage
|
55 |
// Il est important de compter le nombre de taxons pour l'affichage
|
| 56 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' COUNT(num_nom) AS nbre FROM '.$referentiel.
|
56 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' COUNT(num_nom) AS nbre FROM '.$referentiel.
|
| 57 |
$this->construireWhere($p).' ';
|
- |
|
| 58 |
|
57 |
$this->construireWhere($p).' ';
|
| 59 |
// Récupération des résultats
|
58 |
// Récupération des résultats
|
| 60 |
try {
|
59 |
try {
|
| 61 |
$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
|
60 |
$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
|
| 62 |
if ($donnees === false) {
|
61 |
if ($donnees === false) {
|
| Line 172... |
Line 171... |
| 172 |
}
|
171 |
}
|
| 173 |
return $info;
|
172 |
return $info;
|
| Line 174... |
Line 173... |
| 174 |
|
173 |
|
| Line -... |
Line 174... |
| - |
|
174 |
}
|
| - |
|
175 |
|
| - |
|
176 |
/* Méthode pour récupérer une liste de taxons
|
| - |
|
177 |
* Appelée avec les paramêtres d'url suivant :
|
| - |
|
178 |
* /Recherche/ParDefaut/_
|
| - |
|
179 |
* ou les _ représentent dans l'ordre : référentiel, mots, paramétres avancés
|
| - |
|
180 |
* Si un des paramètres est absent, il prendre la valeur *
|
| - |
|
181 |
*/
|
| - |
|
182 |
public function getElementNombreSynonymeParTaxon($param) {
|
| - |
|
183 |
// Initialisation des variables
|
| - |
|
184 |
$info = '';
|
| - |
|
185 |
|
| - |
|
186 |
// Pré traitement des paramètres
|
| - |
|
187 |
$p = $this->pretraiterParametresUrl($param);
|
| - |
|
188 |
$referentiel = substr($p['ref'], 2, -2);
|
| - |
|
189 |
|
| - |
|
190 |
$liste_nom = $this->getNomRetenu($param);
|
| - |
|
191 |
if ($liste_nom != '') {
|
| - |
|
192 |
// Construction de la requête
|
| - |
|
193 |
// si recherche des synonymes
|
| - |
|
194 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' COUNT(num_nom) as nbr, num_nom_retenu '.
|
| - |
|
195 |
'FROM '.$referentiel.' WHERE num_nom_retenu IN ('.$liste_nom.') GROUP BY num_nom_retenu '.
|
| - |
|
196 |
'ORDER BY nom_sci ASC ';
|
| - |
|
197 |
try {
|
| - |
|
198 |
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
|
| - |
|
199 |
foreach($donnees as $ligne) {
|
| - |
|
200 |
$info[$ligne['num_nom_retenu']] = $ligne['nbr'];
|
| - |
|
201 |
}
|
| - |
|
202 |
} catch (PDOException $e) {
|
| - |
|
203 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
|
| - |
|
204 |
}
|
| - |
|
205 |
}
|
| - |
|
206 |
return $info;
|
| - |
|
207 |
|
| 175 |
}
|
208 |
}
|
| 176 |
|
209 |
|
| 177 |
/**
|
210 |
/**
|
| 178 |
* Récupérer le nombre de taxons d'une classifiation (infra ou supra)
|
211 |
* Récupérer le nombre de taxons d'une classifiation (infra ou supra)
|
| 179 |
* Appelée avec les paramètres d'url suivant :
|
212 |
* Appelée avec les paramètres d'url suivant :
|
| Line 210... |
Line 243... |
| 210 |
} else {
|
243 |
} else {
|
| 211 |
// Construction de la requête
|
244 |
// Construction de la requête
|
| 212 |
// Il est important de compter le nombre de taxons pour l'affichage
|
245 |
// Il est important de compter le nombre de taxons pour l'affichage
|
| 213 |
$requete = 'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p).';';
|
246 |
$requete = 'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p).';';
|
| 214 |
}
|
247 |
}
|
| 215 |
|
- |
|
| 216 |
// Récupération des résultats
|
248 |
// Récupération des résultats
|
| 217 |
try {
|
249 |
try {
|
| 218 |
$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
|
250 |
$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
|
| 219 |
if ($donnees === false) {
|
251 |
if ($donnees === false) {
|
| 220 |
$this->messages[] = "La requête a retourné aucun résultat.";
|
252 |
$this->messages[] = "La requête a retourné aucun résultat.";
|
| Line 226... |
Line 258... |
| 226 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
|
258 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
|
| 227 |
}
|
259 |
}
|
| Line 228... |
Line 260... |
| 228 |
|
260 |
|
| 229 |
return $info;
|
261 |
return $info;
|
| - |
|
262 |
}
|
| - |
|
263 |
|
| - |
|
264 |
/**
|
| - |
|
265 |
* Récupérer le nombre de taxons d'une classifiation (infra ou supra)
|
| - |
|
266 |
* Appelée avec les paramètres d'url suivant :
|
| - |
|
267 |
* /Recherche/NombreClassif/_
|
| - |
|
268 |
* ou les _ représentent dans l'ordre : référentiel, mots, paramétres avancés
|
| - |
|
269 |
* Si un des paramètres est absent, il prendre la valeur *
|
| - |
|
270 |
*/
|
| - |
|
271 |
public function getElementNombreClassifParTaxon($param) {
|
| - |
|
272 |
// Initialisation des variables
|
| - |
|
273 |
$info = array();
|
| - |
|
274 |
|
| - |
|
275 |
// Pré traitement des paramètres
|
| - |
|
276 |
$p = $this->pretraiterParametresUrl($param);
|
| - |
|
277 |
$referentiel = substr($p['ref'], 2, -2);
|
| - |
|
278 |
|
| - |
|
279 |
$requete = '';
|
| - |
|
280 |
if (isset($p['classif'])) {
|
| - |
|
281 |
if (!isset($p['nn'])) {
|
| - |
|
282 |
$p['rg'] = 180;
|
| - |
|
283 |
}
|
| - |
|
284 |
|
| - |
|
285 |
if ($p['classif'] == 'infra') {
|
| - |
|
286 |
$requete = 'SELECT COUNT(num_nom) as nbr, num_tax_sup '.
|
| - |
|
287 |
'FROM '.$referentiel.' '.
|
| - |
|
288 |
'WHERE num_tax_sup IN '.
|
| - |
|
289 |
'(SELECT num_nom '.
|
| - |
|
290 |
'FROM '.$referentiel.$this->construireWhere($p).') GROUP BY num_tax_sup';
|
| - |
|
291 |
} else {
|
| - |
|
292 |
$requete = 'SELECT count(distinct num_tax_sup) as nbr, num_tax_sup '.
|
| - |
|
293 |
'FROM '.$referentiel.$this->construireWhere($p).' GROUP BY num_tax_sup';
|
| - |
|
294 |
}
|
| - |
|
295 |
} else {
|
| - |
|
296 |
// Construction de la requête
|
| - |
|
297 |
// Il est important de compter le nombre de taxons pour l'affichage
|
| - |
|
298 |
$requete = 'SELECT count(DISTINCT num_nom_retenu) as nbr, num_tax_sup FROM '.$referentiel.$this->construireWhere($p).' GROUP BY num_tax_sup;';
|
| - |
|
299 |
}
|
| - |
|
300 |
// Récupération des résultats
|
| - |
|
301 |
try {
|
| - |
|
302 |
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
|
| - |
|
303 |
if ($donnees === false) {
|
| - |
|
304 |
$this->messages[] = "La requête a retourné aucun résultat.";
|
| - |
|
305 |
} else {
|
| - |
|
306 |
foreach($donnees as $ligne) {
|
| - |
|
307 |
$info[$ligne['num_tax_sup']] = $ligne['nbr'];
|
| - |
|
308 |
}
|
| - |
|
309 |
}
|
| - |
|
310 |
} catch (PDOException $e) {
|
| - |
|
311 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
|
| - |
|
312 |
}
|
| - |
|
313 |
|
| - |
|
314 |
return $info;
|
| Line 230... |
Line 315... |
| 230 |
}
|
315 |
}
|
| 231 |
|
316 |
|
| 232 |
/**
|
317 |
/**
|
| 233 |
* Récupérer la classification d'un taxon donné (ses enfants ou parents)
|
318 |
* Récupérer la classification d'un taxon donné (ses enfants ou parents)
|
| Line 254... |
Line 339... |
| 254 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').
|
339 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').
|
| 255 |
' num_nom, nom_sci, auteur, annee, biblio_origine, nom_addendum,'.
|
340 |
' num_nom, nom_sci, auteur, annee, biblio_origine, nom_addendum,'.
|
| 256 |
' num_nom_retenu, presence, exclure_taxref, num_tax_sup'.
|
341 |
' num_nom_retenu, presence, exclure_taxref, num_tax_sup'.
|
| 257 |
' FROM '.$referentiel.$this->construireWhere($p).
|
342 |
' FROM '.$referentiel.$this->construireWhere($p).
|
| 258 |
' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'nom_sci ASC');
|
343 |
' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'nom_sci ASC');
|
| 259 |
|
344 |
|
| 260 |
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
|
345 |
$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
|
| 261 |
|
346 |
|
| 262 |
if ($donnees === false) {
|
347 |
if ($donnees === false) {
|
| 263 |
$this->messages[] = "La requête a retourné aucun résultat : $requete";
|
348 |
$this->messages[] = "La requête a retourné aucun résultat : $requete";
|
| 264 |
} else {
|
349 |
} else {
|
| Line 265... |
Line 350... |
| 265 |
|
350 |
|
| Line 280... |
Line 365... |
| 280 |
* @param $referentiel String le référentiel pour la requête
|
365 |
* @param $referentiel String le référentiel pour la requête
|
| 281 |
* @param $donnees Array un tableau de résultats contenant des lignes taxons
|
366 |
* @param $donnees Array un tableau de résultats contenant des lignes taxons
|
| 282 |
* @return un tableau de résultats contenant les taxons inférieurs
|
367 |
* @return un tableau de résultats contenant les taxons inférieurs
|
| 283 |
* */
|
368 |
* */
|
| 284 |
public function trouverInfra($referentiel, $donnees) {
|
369 |
public function trouverInfra($referentiel, $donnees) {
|
| 285 |
$donneesInfras = array();
|
370 |
$resultats = array();
|
| 286 |
foreach ($donnees as $taxon) {
|
371 |
foreach ($donnees as $taxon) {
|
| Line 287... |
Line 372... |
| 287 |
|
372 |
|
| 288 |
$resultats = array();
|
373 |
$donneesInfras = array();
|
| 289 |
$requete = 'SELECT DISTINCT '.
|
374 |
$requete = 'SELECT DISTINCT '.
|
| 290 |
' num_nom, nom_sci, auteur, annee, biblio_origine, nom_addendum,'.
|
375 |
' num_nom, nom_sci, auteur, annee, biblio_origine, nom_addendum,'.
|
| 291 |
' num_nom_retenu, presence, exclure_taxref'.
|
376 |
' num_nom_retenu, presence, exclure_taxref'.
|
| 292 |
' FROM '.$referentiel.
|
377 |
' FROM '.$referentiel.
|
| 293 |
' WHERE num_tax_sup = '.$taxon['num_nom'].' '.
|
378 |
' WHERE num_tax_sup = '.$taxon['num_nom'].' '.
|
| 294 |
' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'nom_sci ASC').' '.
|
379 |
' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'nom_sci ASC').' '.
|
| 295 |
"LIMIT $this->start, $this->limit ";
|
- |
|
| 296 |
|
- |
|
| Line -... |
Line 380... |
| - |
|
380 |
"LIMIT $this->start, $this->limit ";
|
| 297 |
$donneesInfras = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
|
381 |
|
| 298 |
|
382 |
$donneesInfras = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
|
| 299 |
if ($donneesInfras !== false) {
|
383 |
if ($donneesInfras !== false) {
|
| 300 |
$resultats = array_merge($resultats, $donneesInfras);
|
384 |
$resultats = array_merge($resultats, $donneesInfras);
|
| 301 |
}
|
- |
|
| 302 |
}
|
385 |
}
|
| 303 |
|
386 |
}
|
| Line 304... |
Line 387... |
| 304 |
return $donneesInfras;
|
387 |
return $resultats;
|
| 305 |
}
|
388 |
}
|
| 306 |
|
389 |
|