Subversion Repositories Applications.referentiel

Rev

Rev 293 | Rev 306 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 293 Rev 297
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