Subversion Repositories Applications.annuaire

Rev

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

Rev 162 Rev 200
Line 255... Line 255...
255
			trigger_error('impossible de récupérer les informations de la table '.$identifiant);
255
			trigger_error('impossible de récupérer les informations de la table '.$identifiant);
256
		}
256
		}
Line 257... Line 257...
257
 
257
 
258
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($identifiant);
258
		$tableau_mappage = $this->obtenirChampsMappageAnnuaire($identifiant);
-
 
259
		$champ_code_postal = $tableau_mappage[0]['champ_code_postal'];
Line 259... Line 260...
259
		$champ_code_postal = $tableau_mappage[0]['champ_code_postal'];
260
		$champ_pays = $tableau_mappage[0]['champ_pays'];
260
 
261
 
261
		$requete_nombre_inscrits = 'SELECT IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
262
		$requete_nombre_inscrits = 'SELECT IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
262
						'		SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
263
						'		SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
263
						'		SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) AS id, '.
264
						'		SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) AS id, '.
-
 
265
						'	COUNT(*) AS nbre '.
264
						'	COUNT(*) AS nbre '.
266
						'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '.
265
						'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '.
267
						'WHERE '.$champ_pays.' = "FR" '.
266
						'GROUP BY IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
268
						'GROUP BY IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '.
267
						'	SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
269
						'	SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '.
Line 338... Line 340...
338
			trigger_error('impossible de récupérer le nombre d\'inscrits de la table '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']);
340
			trigger_error('impossible de récupérer le nombre d\'inscrits de la table '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table']);
339
		}
341
		}
Line 340... Line 342...
340
 
342
 
341
		return $resultat_nombre_inscrits;
343
		return $resultat_nombre_inscrits;
342
	}
344
	}
343
 
345
	
344
	/**
346
	/**
345
	 * Recherche selon une valeur d'un champ qui peut être une valeur approximative (avec des %) dans un champ d'annuaire donné
347
	 * Recherche selon une valeur d'un champ qui peut être une valeur approximative (avec des %) dans un champ d'annuaire donné
346
	 * @param int $id_annuaire l'identifiant de l'annuaire
348
	 * @param int $id_annuaire l'identifiant de l'annuaire
347
	 * @param string $champ_critere le champ qui servira de filtre
349
	 * @param string $champ_critere le champ qui servira de filtre
348
	 * @param string $valeur la valeur à rechercher
350
	 * @param string $valeur la valeur à rechercher
349
	 * @param boolean $modele indique si l'on veut recherche la valeur exacte ou non
351
	 * @param boolean $modele indique si l'on veut recherche la valeur exacte ou non
350
	 * @return array un tableau contenant la liste des inscrits dans l'annuaire donné, correspondants à ce critère
352
	 * @return array un tableau contenant la liste des inscrits dans l'annuaire donné, correspondants à ce critère
351
	 */
353
	 */
Line 352... Line 354...
352
	public function rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, $modele = false, $numero_page = 1, $taille_page = 50) {
354
	public function rechercherInscritDansAnnuaireMappeParTableauChamps($id_annuaire, $criteres, $modele = false, $numero_page = 1, $taille_page = 50) {
Line 353... Line 355...
353
 
355
 
354
		$sep = '';
356
		$sep = '';
355
 
357
 
-
 
358
		if($modele) {
-
 
359
			$sep = '%';
-
 
360
		}
-
 
361
		
Line 356... Line -...
356
		if($modele) {
-
 
357
			$sep = '%';
-
 
358
		}
362
		foreach($criteres as $champ => $valeur) {
359
 
363
			$criteres[$champ] = $valeur.$sep;	
Line 360... Line 364...
360
		$valeurs = array($champ_critere => $valeur.$sep);
364
		}
361
 
365
 
362
		return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, array(), true, $numero_page, $taille_page);
366
		return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $criteres, array(), true, $numero_page, $taille_page);
Line 1036... Line 1040...
1036
	 * @param int $id_annuaire identifiant de l'annuaire dans lequel on recherche
1040
	 * @param int $id_annuaire identifiant de l'annuaire dans lequel on recherche
1037
	 * @param array $valeurs un tableau de valeurs à rechercher
1041
	 * @param array $valeurs un tableau de valeurs à rechercher
1038
	 * @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches)
1042
	 * @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches)
1039
	 * @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR)
1043
	 * @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR)
1040
	 */
1044
	 */
1041
	public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50) {
1045
	public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50, $ordre = 'champ_nom') {
Line 1042... Line 1046...
1042
		
1046
		
1043
		// Si la fonction est appelée et que tous les critères sont vides
1047
		// Si la fonction est appelée et que tous les critères sont vides
1044
		if(count($valeurs) == 0 && count($id_a_inclure) == 0) {
1048
		if(count($valeurs) == 0 && count($id_a_inclure) == 0) {
1045
			// on sort directement
1049
			// on sort directement
Line 1076... Line 1080...
1076
		}
1080
		}
Line 1077... Line 1081...
1077
 
1081
 
1078
		// si le champ contient un % alors on ne cherche pas une valeur exacte : on utilise LIKE
1082
		// si le champ contient un % alors on ne cherche pas une valeur exacte : on utilise LIKE
1079
		foreach($valeurs as $champ => $valeur) {
1083
		foreach($valeurs as $champ => $valeur) {
-
 
1084
			if(trim($valeur) != '') {
-
 
1085
				
-
 
1086
				if($champ == $champs_mappage[0]['champ_nom'] || $champ == $champs_mappage[0]['champ_code_postal']) {
-
 
1087
					if(strpos($valeur,"%") == false) {
-
 
1088
						$valeur .= '%';
-
 
1089
					}
-
 
1090
				}
1080
			if(trim($valeur) != '') {
1091
				
1081
				if(strpos($valeur,"%") != false) {
1092
				if(strpos($valeur,"%") != false) {
1082
					$operateur = ' LIKE ';
1093
					$operateur = ' LIKE ';
1083
				} else {
1094
				} else {
1084
					$operateur = ' = ';
1095
					$operateur = ' = ';
Line 1102... Line 1113...
1102
		$nb_inscrits = 0;
1113
		$nb_inscrits = 0;
1103
		if($resultat_nb_inscrits) {
1114
		if($resultat_nb_inscrits) {
1104
			$nb_inscrits = $resultat_nb_inscrits['nb'];
1115
			$nb_inscrits = $resultat_nb_inscrits['nb'];
1105
		}
1116
		}
Line -... Line 1117...
-
 
1117
 
1106
 
1118
		$requete_recherche_inscrits .= ' ORDER BY '.$champs_mappage[0]['champ_nom'];
Line 1107... Line 1119...
1107
		$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
1119
		$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page);
Line 1108... Line 1120...
1108
 
1120