477,7 → 477,7 |
|
public function assemblerLaRequete() { |
$requete = ' SELECT '.$this->champs_recherches.' FROM '.$this->table.' ' |
.$this->retournerRequeteCondition().' '; |
.Informations::retournerRequeteCondition($this->requete_condition).' '; |
if ($this->nb_ressources != 1 ) { |
$requete .= $this->delimiterResultatsRequete(); |
} |
484,48 → 484,24 |
return $requete; |
} |
|
public function calculerTotalResultat() { |
$requete = 'SELECT count(*) as nombre FROM '.$this->table.' '.$this->retournerRequeteCondition(); |
$res = $this->getBdd()->recuperer($requete); |
if ($res) { |
$this->total_resultat = $res['nombre']; |
} else { |
$this->total_resultat = 0; |
$e = 'Données introuvables dans la base'; |
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e); |
} |
} |
|
public function delimiterResultatsRequete() { |
$this->calculerTotalResultat(); |
$requete_limite = ''; |
if ($this->limite_requete['limite'] != '*') { |
if ( ($this->limite_requete['depart'] <= $this->total_resultat)){ |
if (($this->limite_requete['limite'] + $this->limite_requete['depart'] ) |
< $this->total_resultat ){ |
$requete_limite = 'LIMIT '.$this->limite_requete['depart'].', ' |
.$this->limite_requete['limite']; |
} |
} else { |
$e = "Erreur : la valeur pour le paramètre navigation.départ est supérieure". |
" au nombre total de résultats."; |
throw new Exception($e, RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE); |
} |
} |
return $requete_limite; |
} |
|
|
|
public function retournerRequeteCondition() { |
$condition = ''; |
if (empty($this->requete_condition) == false) { |
$condition = ' WHERE '.implode(' AND ', $this->requete_condition); |
} |
return $condition; |
} |
$this->total_resultat = self::calculerTotalResultat( |
$this->getBdd(), |
$this->table, |
Array(), |
$this->requete_condition); |
if ($this->limite_requete['limite'] == '*') return ''; |
|
if ( ($this->limite_requete['depart'] > $this->total_resultat)) { |
throw new Exception( |
"Erreur : la valeur pour le paramètre navigation.départ est supérieure au nombre total de résultats.", |
RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE); |
} |
|
|
if (($this->limite_requete['limite'] + $this->limite_requete['depart'] ) < $this->total_resultat) { |
return 'LIMIT '.$this->limite_requete['depart'].', ' .$this->limite_requete['limite']; |
} |
// ? |
return ''; |
} |
} |
?> |