Subversion Repositories Applications.referentiel

Rev

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

Rev 297 Rev 306
Line 52... Line 52...
52
		$referentiel = substr($p['ref'], 2, -2); 
52
		$referentiel = substr($p['ref'], 2, -2); 
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).' ';
57
					$this->construireWhere($p, $referentiel).' ';
58
		// Récupération des résultats
58
		// Récupération des résultats
59
		try {
59
		try {
60
			$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
60
			$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
61
			if ($donnees === false) {
61
			if ($donnees === false) {
Line 85... Line 85...
85
		$referentiel = substr($p['ref'], 2, -2); 
85
		$referentiel = substr($p['ref'], 2, -2); 
Line 86... Line 86...
86
		
86
		
87
		// Construction de la requête		
87
		// Construction de la requête		
88
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' num_nom, nom_sci, auteur, annee, '.
88
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' num_nom, nom_sci, auteur, annee, '.
89
				'biblio_origine, nom_addendum, num_nom_retenu, presence, exclure_taxref'.
89
				'biblio_origine, nom_addendum, num_nom_retenu, presence, exclure_taxref'.
90
				' FROM '.$referentiel.$this->construireWhere($p).
90
				' FROM '.$referentiel.$this->construireWhere($p, $referentiel).
91
				'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'nom_sci ASC').' '.
91
				'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'nom_sci ASC').' '.
Line 92... Line 92...
92
				"LIMIT $this->start, $this->limit "; 
92
				"LIMIT $this->start, $this->limit "; 
93
					
93
					
Line 121... Line 121...
121
		$referentiel = substr($p['ref'], 2, -2); 
121
		$referentiel = substr($p['ref'], 2, -2); 
Line 122... Line 122...
122
 
122
 
123
		
123
		
124
		// Construction de la requête
124
		// Construction de la requête
Line 125... Line 125...
125
		// Il est important de compter le nombre de taxons pour l'affichage
125
		// Il est important de compter le nombre de taxons pour l'affichage
126
		$requete = 	'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p).';';
126
		$requete = 	'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p, $referentiel).';';
127
 
127
 
128
		// Récupération des résultats
128
		// Récupération des résultats
Line 157... Line 157...
157
		$liste_nom = $this->getNomRetenu($param);
157
		$liste_nom = $this->getNomRetenu($param);
158
		if ($liste_nom != '') {
158
		if ($liste_nom != '') {
159
			// Construction de la requête
159
			// Construction de la requête
160
			// si recherche des synonymes
160
			// si recherche des synonymes
161
			$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' num_nom, nom_sci, auteur, annee, '.
161
			$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' num_nom, nom_sci, auteur, annee, '.
162
						'biblio_origine, nom_addendum, num_nom_retenu, basionyme, synonyme_mal_applique, presence, exclure_taxref '.
162
						'biblio_origine, nom_addendum, num_nom_retenu, '.(($referentiel == "bdtfx") ? 'num_basionyme' : 
-
 
163
						'basionyme').', synonyme_mal_applique, presence, exclure_taxref '.
163
							' FROM '.$referentiel.' WHERE num_nom_retenu IN ('.$liste_nom.') '.
164
							' FROM '.$referentiel.' WHERE num_nom_retenu IN ('.$liste_nom.') '.
164
							'ORDER BY nom_sci ASC '; 
165
							'ORDER BY nom_sci ASC '; 
165
			try {
166
			try {
166
				$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
167
				$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
167
				$info = $donnees;
168
				$info = $donnees;
Line 231... Line 232...
231
			if ($p['classif'] == 'infra') {
232
			if ($p['classif'] == 'infra') {
232
				$requete = 'SELECT COUNT(num_nom) as nbr '.
233
				$requete = 'SELECT COUNT(num_nom) as nbr '.
233
						   'FROM '.$referentiel.' '.
234
						   'FROM '.$referentiel.' '.
234
						   'WHERE num_tax_sup IN '.
235
						   'WHERE num_tax_sup IN '.
235
				           '(SELECT num_nom '.
236
				           '(SELECT num_nom '.
236
						   'FROM '.$referentiel.$this->construireWhere($p).') ';
237
						   'FROM '.$referentiel.$this->construireWhere($p, $referentiel).') ';
237
			} else {
238
			} else {
238
				$requete = 'SELECT count(distinct num_tax_sup) as nbr '.
239
				$requete = 'SELECT count(distinct num_tax_sup) as nbr '.
239
						'FROM '.$referentiel.$this->construireWhere($p).' ';
240
						'FROM '.$referentiel.$this->construireWhere($p, $referentiel).' ';
Line 240... Line 241...
240
				
241
				
Line 241... Line 242...
241
			}
242
			}
242
				
243
				
243
		} else {
244
		} else {
244
			// Construction de la requête
245
			// Construction de la requête
245
			// Il est important de compter le nombre de taxons pour l'affichage
246
			// Il est important de compter le nombre de taxons pour l'affichage
246
			$requete = 	'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p).';';
247
			$requete = 	'SELECT count(DISTINCT num_nom_retenu) as nbr FROM '.$referentiel.$this->construireWhere($p, $referentiel).';';
247
		}
248
		}
248
		// Récupération des résultats
249
		// Récupération des résultats
249
		try {
250
		try {
Line 285... Line 286...
285
				if ($p['classif'] == 'infra') {
286
				if ($p['classif'] == 'infra') {
286
					$requete = 'SELECT COUNT(num_nom) as nbr, num_tax_sup '.
287
					$requete = 'SELECT COUNT(num_nom) as nbr, num_tax_sup '.
287
								   'FROM '.$referentiel.' '.
288
								   'FROM '.$referentiel.' '.
288
								   'WHERE num_tax_sup IN '.
289
								   'WHERE num_tax_sup IN '.
289
						           '(SELECT num_nom '.
290
						           '(SELECT num_nom '.
290
								   'FROM '.$referentiel.$this->construireWhere($p).') GROUP BY num_tax_sup';
291
								   'FROM '.$referentiel.$this->construireWhere($p, $referentiel).') GROUP BY num_tax_sup';
291
				} else {
292
				} else {
292
					$requete = 'SELECT count(distinct num_tax_sup) as nbr, num_tax_sup '.
293
					$requete = 'SELECT count(distinct num_tax_sup) as nbr, num_tax_sup '.
293
								'FROM '.$referentiel.$this->construireWhere($p).' GROUP BY num_tax_sup';	
294
								'FROM '.$referentiel.$this->construireWhere($p, $referentiel).' GROUP BY num_tax_sup';	
294
				}
295
				}
295
			} else {
296
			} else {
296
				// Construction de la requête
297
				// Construction de la requête
297
				// Il est important de compter le nombre de taxons pour l'affichage
298
				// 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
				$requete = 	'SELECT count(DISTINCT num_nom_retenu) as nbr, num_tax_sup FROM '.$referentiel.$this->construireWhere($p, $referentiel).' GROUP BY num_tax_sup;';
299
			}
300
			}
300
			// Récupération des résultats
301
			// Récupération des résultats
301
			try {
302
			try {
302
				$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
303
				$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
303
				if ($donnees === false) {
304
				if ($donnees === false) {
Line 337... Line 338...
337
			
338
			
338
			// Récupérer les informations du nom sélectionné
339
			// Récupérer les informations du nom sélectionné
339
			$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').
340
			$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').
340
						' num_nom, nom_sci, auteur, annee, biblio_origine, nom_addendum,'.
341
						' num_nom, nom_sci, auteur, annee, biblio_origine, nom_addendum,'.
341
						' num_nom_retenu, presence, exclure_taxref, num_tax_sup'.
342
						' num_nom_retenu, presence, exclure_taxref, num_tax_sup'.
342
						' FROM '.$referentiel.$this->construireWhere($p).
343
						' FROM '.$referentiel.$this->construireWhere($p, $referentiel).
Line 343... Line 344...
343
						' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'nom_sci ASC');
344
						' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'nom_sci ASC');
Line 344... Line 345...
344
 
345
 
Line 429... Line 430...
429
		$p = $this->pretraiterParametresUrl($param);
430
		$p = $this->pretraiterParametresUrl($param);
430
		$referentiel = substr($p['ref'], 2, -2); 
431
		$referentiel = substr($p['ref'], 2, -2); 
Line 431... Line 432...
431
		
432
		
432
		// Construction de la requête
433
		// Construction de la requête
433
		// si recherche des synonymes
434
		// si recherche des synonymes
434
		$requete_nom_retenu =	'SELECT DISTINCT num_nom_retenu FROM '.$referentiel.$this->construireWhere($p)
435
		$requete_nom_retenu =	'SELECT DISTINCT num_nom_retenu FROM '.$referentiel.$this->construireWhere($p, $referentiel)
435
			." ORDER BY nom_sci ASC LIMIT $this->start, $this->limit ".';';
436
			." ORDER BY nom_sci ASC LIMIT $this->start, $this->limit ".';';
436
		try {
437
		try {
437
			$info = '';
438
			$info = '';
Line 539... Line 540...
539
		}
540
		}
Line 540... Line 541...
540
		
541
		
541
		return $p;
542
		return $p;
Line 542... Line 543...
542
	}
543
	}
543
	
544
	
544
	private function construireWhere($p) {
545
	private function construireWhere($p, $referentiel) {
Line 545... Line 546...
545
		// Initialisation de variables
546
		// Initialisation de variables
546
		$where = ' WHERE ';
547
		$where = ' WHERE ';
Line 569... Line 570...
569
				" OR annee LIKE {$p['mots']} ".
570
				" OR annee LIKE {$p['mots']} ".
570
				" OR biblio_origine LIKE {$p['mots']} ".
571
				" OR biblio_origine LIKE {$p['mots']} ".
571
				" OR notes LIKE {$p['mots']} ".
572
				" OR notes LIKE {$p['mots']} ".
572
				" OR nom_addendum LIKE {$p['mots']} ".
573
				" OR nom_addendum LIKE {$p['mots']} ".
573
				" OR homonyme LIKE {$p['mots']} ".
574
				" OR homonyme LIKE {$p['mots']} ".
574
				" OR basionyme LIKE {$p['mots']} ".
-
 
575
				" OR synonyme_proparte LIKE {$p['mots']} ".
575
				" OR synonyme_proparte LIKE {$p['mots']} ".
576
				" OR synonyme_douteux LIKE {$p['mots']} ".
576
				" OR synonyme_douteux LIKE {$p['mots']} ".
577
				" OR synonyme_mal_applique LIKE {$p['mots']} ".
577
				" OR synonyme_mal_applique LIKE {$p['mots']} ".
578
				" OR synonyme_orthographique LIKE {$p['mots']} ".
578
				" OR synonyme_orthographique LIKE {$p['mots']} ".
579
				" OR hybride_parent_01 LIKE {$p['mots']} ".
579
				" OR hybride_parent_01 LIKE {$p['mots']} ".
Line 582... Line 582...
582
				" OR hybride_parent_02_notes LIKE {$p['mots']} ".
582
				" OR hybride_parent_02_notes LIKE {$p['mots']} ".
583
				" OR nom_francais LIKE {$p['mots']} ".
583
				" OR nom_francais LIKE {$p['mots']} ".
584
				" OR presence LIKE {$p['mots']} ".
584
				" OR presence LIKE {$p['mots']} ".
585
				" OR statut_origine LIKE {$p['mots']} ".
585
				" OR statut_origine LIKE {$p['mots']} ".
586
				" OR statut_introduction LIKE {$p['mots']} ".
586
				" OR statut_introduction LIKE {$p['mots']} ".
587
				" OR statut_culture LIKE {$p['mots']} ".
587
				" OR statut_culture LIKE {$p['mots']} ";
588
				') ';
-
 
-
 
588
			$where .= ($referentiel == "bdtfx") ? " OR num_basionyme LIKE {$p['mots']}) " : " OR basionyme  LIKE {$p['mots']}) ";
589
			}
589
			}
590
		}
590
		}
591
		if (isset($p['sg'])) {
591
		if (isset($p['sg'])) {
592
			$where .= "AND nom_supra_generique LIKE {$p['sg']} ";
592
			$where .= "AND nom_supra_generique LIKE {$p['sg']} ";
593
		}
593
		}