Problème de class
salyks
-
salyks -
salyks -
Bonjour,
Voilà mon code :
contrôleur :
$choix = Choix::getChoixById($_GET['id']);
modèle :
public static function getChoixById($id)
{
require_once('modeles/SQL.class.php');
$requete = SQL::requete('(SELECT "cours" AS type, e.nom, e.prenom, e.numeroHarpege, ec.idChoix, 0 AS nbGroupes, ec.duree, ec.etat, m.libelle_module, m.code_module, p.annee
FROM module m, enseignant e, enseignercours ec, promotion p
WHERE ec.numeroHarpege = e.numeroHarpege AND m.code_module = ec.code_module AND ec.idChoix = ? AND m.promotion = p.id AND p.annee = ?)
UNION
(SELECT "td" AS type, e.nom, e.prenom, e.numeroHarpege, et.idChoix, et.duree, et.nbGroupes, et.etat, m.code_module, m.libelle_module, p.annee FROM module m, enseignant e, enseignertd et, promotion p WHERE et.numeroHarpege = e.numeroHarpege AND m.code_module = et.code_module AND et.idChoix= ? AND m.promotion = p.id AND p.annee = ?)', array($id, $_SESSION['annee'], $id, $_SESSION['annee']), SQL::connexion());
while ($donnees = $requete->fetch(PDO::FETCH_OBJ)){
}
return (new Choix($donnees, ''));
}
Mon problème :
En bref, je veux récupérer un objet Choix mais il est vide. Je tiens a préciser que $_SESSION['annee'] et $_GET['id'] sont bien affectés. D'ailleurs si dans le constructeur je demande un affichage d'un des attribut, ça marche. D'où peut venir le problème ?
Merci
Voilà mon code :
contrôleur :
$choix = Choix::getChoixById($_GET['id']);
modèle :
public static function getChoixById($id)
{
require_once('modeles/SQL.class.php');
$requete = SQL::requete('(SELECT "cours" AS type, e.nom, e.prenom, e.numeroHarpege, ec.idChoix, 0 AS nbGroupes, ec.duree, ec.etat, m.libelle_module, m.code_module, p.annee
FROM module m, enseignant e, enseignercours ec, promotion p
WHERE ec.numeroHarpege = e.numeroHarpege AND m.code_module = ec.code_module AND ec.idChoix = ? AND m.promotion = p.id AND p.annee = ?)
UNION
(SELECT "td" AS type, e.nom, e.prenom, e.numeroHarpege, et.idChoix, et.duree, et.nbGroupes, et.etat, m.code_module, m.libelle_module, p.annee FROM module m, enseignant e, enseignertd et, promotion p WHERE et.numeroHarpege = e.numeroHarpege AND m.code_module = et.code_module AND et.idChoix= ? AND m.promotion = p.id AND p.annee = ?)', array($id, $_SESSION['annee'], $id, $_SESSION['annee']), SQL::connexion());
while ($donnees = $requete->fetch(PDO::FETCH_OBJ)){
}
return (new Choix($donnees, ''));
}
Mon problème :
En bref, je veux récupérer un objet Choix mais il est vide. Je tiens a préciser que $_SESSION['annee'] et $_GET['id'] sont bien affectés. D'ailleurs si dans le constructeur je demande un affichage d'un des attribut, ça marche. D'où peut venir le problème ?
Merci
A voir également:
- Problème de class
- Logiciel de classement de photos gratuit - Guide
- Logiciel de classement de documents gratuit - Télécharger - Bureautique
- Ajoutez à la liste de contacts ana le goff, inscrite le 27 novembre 2015, dans la catégorie i. puis triez les contacts en les classant : par ordre alphabétique de leur nom de famille (critère principal), puis par date du plus récent au plus ancien (critère secondaire). quel mot apparaît à la verticale dans la colonne "catégorie" entre les lignes 200 et 209 (en-tête compris) ? ✓ - Forum Word
- Logiciel de chronométrage et classement gratuit - Télécharger - Sport
- Dans le code de la page, modifiez la couleur de fond de la classe .pix. un code de 4 chiffres doit apparaître dans la grille. lequel ? ✓ - Forum Excel
1 réponse
Bonjour,
Le problème vient de ces dernières lignes :
À chaque itération de ta boucle, $donnees est écrasé par la nouvelle ligne de résultat : $requete->fetch(PDO::FETCH_OBJ).
À la dernière itération, il n'y a plus de résultat, et $donnees est écrasé par ce que renvoie fetch dans ce cas, à savoir : FALSE.
Résultat, la ligne suivante devient :
return (new Choix(FALSE, ''));
Vu le nom de ta fonction, j'imagine que tu n'attends qu'un seul résultat à ta requête.
Dans ce cas, je te suggère tout simplement de supprimer la boucle while :
Xavier
Le problème vient de ces dernières lignes :
while ($donnees = $requete->fetch(PDO::FETCH_OBJ)){
}
return (new Choix($donnees, ''));
À chaque itération de ta boucle, $donnees est écrasé par la nouvelle ligne de résultat : $requete->fetch(PDO::FETCH_OBJ).
À la dernière itération, il n'y a plus de résultat, et $donnees est écrasé par ce que renvoie fetch dans ce cas, à savoir : FALSE.
Résultat, la ligne suivante devient :
return (new Choix(FALSE, ''));
Vu le nom de ta fonction, j'imagine que tu n'attends qu'un seul résultat à ta requête.
Dans ce cas, je te suggère tout simplement de supprimer la boucle while :
return (new Choix($requete->fetch(PDO::FETCH_OBJ), ''));
Xavier
salyks
Merci tu m'a sauvé, en plus c'était tout bête...