Bonjour,
Cette fonction facile a comprendre je pense, me sert a faire mes requettes et je veut quelle gère tous les cas j'ai donc fait comme suite.
public function query($statement,$attrs = null,$one = null){
if($attrs != null){ //si on des d'attributs
$req = $this->getPDO()->prepare($statement);
$req->execute($attrs);
if($one === 'all'){ //si on veut tous les résultat
$data = [];
while($rows = $req->fetchObject()){ // on fait while pour que le forach soit plus simple
$data[] = $rows;
}
}else{ //si on veut un seul résultat
$data = $req->fetchObject();
}
}else{ // si on a pas d'attribus
$req = $this->getPDO()->query($statement);
if($one === 'all'){ //si on veut tous les résultat
$data = [];
while($rows = $req->fetchObject()){ // on fait while pour que le forach soit plus simple
$data[] = $rows;
}
}else{ //si on veut un seul résultat
$data = $req->fetchObject();
}
}
return $data;
}
suite a cela je peut faire ma requette pour mon forum par exemple : mes catégorie je les veut toutes je n'ai pas besoins d'attributs puisqu'elle ne sont pas liée avec une autre table ou un parram en GET, ensuite je veut tous mes forums liée au catégories cette fois l'attribut c'est l'id du where
class Forums{
public static function categorieList(){
return App::getDB()->query("SELECT * FROM f_categories ORDER BY id",[],'all');
}
public static function forumList($id){
return App::getDB()->query("
SELECT
id,
f_forum_name,
f_categorie_id,
f_forum_description,
f_count_rep,
ordre
FROM f_forums
WHERE f_categorie_id = ?
ORDER BY f_forums.ordre DESC
",[$id],'all');
}
}
voila comment je sort tous :
<?php
if(!empty(Forums::categorieList() != null)){
foreach(Forums::categorieList() as $cats){
//catégories
if(!empty(Forums::forumList($cats->id) != null)){
foreach(Forums::forumList($cats->id) as $forum){
//forums
}else{
}
}else{
}
ça fonctionne du feux de dieux mais je voulais quand même savoir si c'est une bonne pratique ?
Jespère avoir été claire merci !!
Bonjour.
Pour éviter de te répéter dans ta fonction query, tu pourrais peut-être faire comme ceci :
public function query($statement, $attrs = [], $one = null)
{
if ($attrs) {
$req = $this->getPDO()->prepare($statement);
$req->execute($attrs);
} else {
$req = $this->getPDO()->query($statement);
}
return $this->fetch($req, $one);
}
public function fetch($req, $one)
{
if ($one === 'all'){
$data = [];
while ($rows = $req->fetchObject()){
$data[] = $rows;
}
} else {
$data = $req->fetchObject();
}
return $data;
}