257,6 → 257,7 |
|
$tableau_mappage = $this->obtenirChampsMappageAnnuaire($identifiant); |
$champ_code_postal = $tableau_mappage[0]['champ_code_postal']; |
$champ_pays = $tableau_mappage[0]['champ_pays']; |
|
$requete_nombre_inscrits = 'SELECT IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '. |
' SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '. |
263,6 → 264,7 |
' SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) AS id, '. |
' COUNT(*) AS nbre '. |
'FROM '.$resultat_informations_annuaire['aa_bdd'].'.'.$resultat_informations_annuaire['aa_table'].' '. |
'WHERE '.$champ_pays.' = "FR" '. |
'GROUP BY IF ( SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) >= 96, '. |
' SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 3 ), '. |
' SUBSTRING( '.$champ_code_postal.' FROM 1 FOR 2 ) ) '. |
349,7 → 351,7 |
* @param boolean $modele indique si l'on veut recherche la valeur exacte ou non |
* @return array un tableau contenant la liste des inscrits dans l'annuaire donné, correspondants à ce critère |
*/ |
public function rechercherInscritDansAnnuaireMappeParChamp($id_annuaire, $champ_critere, $valeur, $modele = false, $numero_page = 1, $taille_page = 50) { |
public function rechercherInscritDansAnnuaireMappeParTableauChamps($id_annuaire, $criteres, $modele = false, $numero_page = 1, $taille_page = 50) { |
|
$sep = ''; |
|
357,9 → 359,11 |
$sep = '%'; |
} |
|
$valeurs = array($champ_critere => $valeur.$sep); |
foreach($criteres as $champ => $valeur) { |
$criteres[$champ] = $valeur.$sep; |
} |
|
return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, array(), true, $numero_page, $taille_page); |
return $this->rechercherInscritDansAnnuaireMappe($id_annuaire, $criteres, array(), true, $numero_page, $taille_page); |
} |
|
/** |
1038,7 → 1042,7 |
* @param array $id_a_inclure un tableau d'identifiants à inclure (pour chainer des recherches) |
* @param boolean $exclusive indique si l'on recherche effectue une recherche exclusive ou inclusive (AND, ou OR) |
*/ |
public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50) { |
public function rechercherInscritDansAnnuaireMappe($id_annuaire, $valeurs, $id_a_inclure = array(), $exclusive = true, $numero_page = 1, $taille_page = 50, $ordre = 'champ_nom') { |
|
// Si la fonction est appelée et que tous les critères sont vides |
if(count($valeurs) == 0 && count($id_a_inclure) == 0) { |
1078,6 → 1082,13 |
// si le champ contient un % alors on ne cherche pas une valeur exacte : on utilise LIKE |
foreach($valeurs as $champ => $valeur) { |
if(trim($valeur) != '') { |
|
if($champ == $champs_mappage[0]['champ_nom'] || $champ == $champs_mappage[0]['champ_code_postal']) { |
if(strpos($valeur,"%") == false) { |
$valeur .= '%'; |
} |
} |
|
if(strpos($valeur,"%") != false) { |
$operateur = ' LIKE '; |
} else { |
1104,6 → 1115,7 |
$nb_inscrits = $resultat_nb_inscrits['nb']; |
} |
|
$requete_recherche_inscrits .= ' ORDER BY '.$champs_mappage[0]['champ_nom']; |
$requete_recherche_inscrits .= ' LIMIT '.(($numero_page-1)*$taille_page).','.($taille_page); |
|
$resultat_recherche_inscrits = $this->requeteTous($requete_recherche_inscrits); |