56,7 → 56,7 |
* - etendue : ajout automatique du signe % à la place des espaces et en fin de masque avec utilisation de LIKE. |
* - floue : recherche tolérante vis-à-vis d'approximations ou d'erreurs (fautes d'orthographe par exemple) */ |
protected $recherche; |
|
|
/** Permet de stocker le tableau de résultat (non encodé en json) */ |
protected $table_retour = array(); |
/** Stocke le nombre total de résultats de la requete principale. Est calculée lors de l'assemblage de la requete */ |
73,19 → 73,19 |
foreach ($this->parametres as $param => $valeur) { |
switch ($param) { |
case 'masque' : |
$this->ajouterLeFiltreMasque('nom_vernaculaire', $valeur); |
$this->ajouterFiltreMasque('nom_vernaculaire', $valeur); |
break; |
case 'masque.nt' : |
$this->ajouterLeFiltreMasque('num_taxon', $valeur); |
$this->ajouterFiltreMasque('num_taxon', $valeur); |
break; |
case 'masque.nv' : |
$this->ajouterLeFiltreMasque('nom_vernaculaire', $valeur); |
$this->ajouterFiltreMasque('nom_vernaculaire', $valeur); |
break; |
case 'masque.lg' : |
$this->ajouterLeFiltreMasque('code_langue', $valeur); |
$this->ajouterFiltreMasque('code_langue', $valeur); |
break; |
case 'masque.cce' : |
$this->ajouterLeFiltreMasque('num_statut', $valeur); |
$this->ajouterFiltreMasque('num_statut', $valeur); |
break; |
case 'retour.format' : |
$this->retour_format = $valeur; |
109,7 → 109,7 |
} |
} |
|
public function ajouterLeFiltreMasque($nom_champ, $valeur) { |
public function ajouterFiltreMasque($nom_champ, $valeur) { |
if ($nom_champ == 'num_taxon') { // si il s'agit d'un chiffre |
$this->requete_condition[] = $nom_champ.' = '.$this->getBdd()->proteger($valeur); |
} else { |
186,6 → 186,7 |
' FROM '.$this->table |
.$this->formerRequeteCondition() |
.$this->formerRequeteLimite(); |
|
return $requete; |
} |
|
332,7 → 333,7 |
$table_retour_json['entete']['href.suivant'] = $url['suivant']; |
} |
|
foreach ($resultat as $tab) { |
foreach ($resultat as $tab) { |
$resultat_json[$tab['num_nom_vernaculaire']]['id'] = $tab['id']; |
$resultat_json[$tab['num_nom_vernaculaire']]['nom_vernaculaire'] = $tab['nom_vernaculaire']; |
$resultat_json[$tab['num_nom_vernaculaire']]['langue.code'] = $tab['code_langue']; |
343,16 → 344,44 |
$this->taxons[] = $tab['num_taxon']; // utiliser pour chercher les noms latins |
$resultat_json[$tab['num_nom_vernaculaire']]['href'] = $this->ajouterHref('noms-vernaculaires', $tab['id']); |
} |
|
if($this->retour_format == 'max') { |
//TODO: la fonction afficherTaxonsAttributions itere sur tout le tableau de résultats alors qu'elle ne devrait |
// traiter qu'une ligne à la fois (i.e.: la ligne en cours dans $tab), ce qui serait bien plus rapide |
$resultat_json = $this->afficherTaxonsAttributions($resultat_json); |
$resultat_json[$tab['num_nom_vernaculaire']] = $this->afficherChampsSupplementairesOntologie($tab); |
} |
} |
|
if ($this->retour_format == 'max') { |
$resultat_json = $this->afficherTaxonsAttributions($resultat_json); |
} |
|
|
$table_retour_json['resultat'] = $resultat_json; |
return $table_retour_json; |
} |
|
public function afficherChampsSupplementairesOntologie($ligne_resultat) { |
foreach($this->champ_infos as $cle => $champs_supplementaires) { |
extract($champs_supplementaires); |
$valeur_recherche = ''; |
switch($cle) { |
case 'taxon': |
$valeur_recherche = $ligne_resultat['num_taxon']; |
break; |
case 'genre': |
$valeur_recherche = $ligne_resultat['num_genre']; |
break; |
case 'conseil_emploi': |
$valeur_recherche = $ligne_resultat['num_statut']; |
break; |
} |
$code_valeur = ''; |
if(trim($valeur_recherche) != '') { |
$url = $this->ajouterHrefAutreProjet($service, $ressource, $valeur_recherche, $projet); |
$code_valeur = $this->chercherSignificationCode($url, $nom); |
} |
$ligne_resultat[$cle] = $code_valeur; |
} |
return $ligne_resultat; |
} |
|
public function afficherTaxonsAttributions($resultat) { |
$nom_sci = $this->recupererNomTaxons(); |
foreach ($resultat as $num=>$tab) { |
540,7 → 569,7 |
list($table, $version) = explode('_v',$this->table); |
$requete = "SELECT b.*, lb.notes FROM nvjfl_lien_biblio_v$version lb, nvjfl_biblio_v$version b ". |
"WHERE b.num_ref = lb.num_ref AND lb.num_nom = '$num_nom' ;"; |
$resultat = $this->getBdd()->recupererTous($requete); //Debug::printr($resultat); |
$resultat = $this->getBdd()->recupererTous($requete); |
|
if ($resultat == '') { //cas ou la requete comporte des erreurs |
$r = 'La requête SQL formée comporte une erreur !!'; |