2,6 → 2,7 |
class NomDAO { |
private $bdd = null; |
private $versions = null; |
private $requeteNbreNomsTotal = null; |
|
public function __construct(Ressources $ressources, Parametres $parametres, Bdd $bdd, Versions $versions) { |
$this->ressources = $ressources; |
27,20 → 28,21 |
} |
|
public function rechercher() { |
$clause = $this->getClauseSelectSpeciale(); |
$table = $this->getTable(); |
$conditions = $this->getConditions(); |
$where = $this->getWhere($conditions); |
$navigation = $this->getNavigation(); |
|
$requete = 'SELECT SQL_CALC_FOUND_ROWS ns.*, '. |
$requete = "SELECT $clause ns.*, ". |
' nr.nom_sci AS nr_nom_sci, nb.nom_sci AS nb_nom_sci '. |
"FROM $table AS ns ". |
" LEFT JOIN $table AS nr ON (ns.num_nom_retenu = nr.num_nom) ". |
" LEFT JOIN $table AS nb ON (ns.basionyme = nb.num_nom) ". |
$where.$conditions. |
$where.' '.$conditions.' '. |
'ORDER BY ns.nom_sci ASC '. |
"LIMIT $navigation "; |
|
$this->requeteNbreNomsTotal = $this->transformerRequetePourNbreNomsTotal($requete); |
$resultats = $this->bdd->recupererTous($requete); |
|
return $resultats; |
47,11 → 49,13 |
} |
|
public function rechercherFloue() { |
$clause = $this->getClauseSelectSpeciale(); |
$table = $this->getTable(); |
$masque = $this->parametres->getMasquePourBdd(); |
$where = $this->getWhere(); |
$navigation = $this->getNavigation(); |
$requete = 'SELECT SQL_CALC_FOUND_ROWS ns.*, '. |
|
$requete = "SELECT $clause ns.*, ". |
' nr.nom_sci AS nr_nom_sci, nb.nom_sci AS nb_nom_sci '. |
"FROM $table AS ns ". |
" LEFT JOIN $table AS nr ON (ns.num_nom_retenu = nr.num_nom) ". |
62,10 → 66,16 |
" OR (SOUNDEX(REVERSE(ns.nom_sci)) = SOUNDEX(REVERSE($masque))) " : ''). |
'ORDER BY ns.nom_sci ASC '. |
"LIMIT $navigation "; |
$this->requeteNbreNomsTotal = $this->transformerRequetePourNbreNomsTotal($requete); |
$resultats = $this->bdd->recupererTous($requete); |
return $resultats; |
} |
|
private function getClauseSelectSpeciale() { |
$clause = (Config::get('bdd_protocole') == 'mysql') ? 'SQL_CALC_FOUND_ROWS' : ''; |
return $clause; |
} |
|
private function getTable() { |
$versions = $this->versions->getVersions(); |
$derniereVersion = end($versions); |
125,8 → 135,19 |
return $navigation; |
} |
|
private function transformerRequetePourNbreNomsTotal($requete) { |
$requete = preg_replace('/SELECT .* FROM/', 'SELECT COUNT(*) AS nbre FROM', $requete); |
$requete = preg_replace('/LIMIT [0-9]+,[0-9]+/', '', $requete); |
return $requete; |
} |
|
public function recupererNombreNomsTotal() { |
$requete = 'SELECT FOUND_ROWS() AS nbre'; |
if (Config::get('bdd_protocole') == 'mysql') { |
$requete = 'SELECT FOUND_ROWS() AS nbre'; |
} else { |
$requete = $this->requeteNbreNomsTotal; |
} |
|
$nombre = $this->bdd->recuperer($requete); |
return (int) $nombre['nbre']; |
} |