Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1947 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Poo et php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Poo et php

n°1001314
Gat$
http://www.wowteamfinder.com
Posté le 04-03-2005 à 21:11:52  profilanswer
 

BOnjour,  
 
je suis en train de développer une petite application en php et j'essaie tant bien que mal de la programmer en orienter objet.
Par contre mes notion de poo sont assez limitée, donc je voudrais si possible que qqun me guide sur ceci :  
 
En fait j'ai dans une base de données postgres, une table horaires qui se présente comme ceci :  
 

Code :
  1. id_horaire
  2. id_salle          // La salle associee
  3. id_jour           // Le jour  
  4. id_employe        // Professeur donnant cours
  5. id_discipline     // le cours associé
  6. heure_deb         // L'heure de début
  7. heure_fin         // L'heure de fin


 
Dans cette table un enregistrement est en fait une heure dedébut a une heure de fin, par exemple :  
 
- de 18H00 à 19H30, l'employe n°13 donnera cours dans la salle n°2 le jour de la semaine n°3 le cours n°6
 
et sur base de tout les enregistrement de cette table, on etablis une grille horaire.
 
Maintenant ce que je ne suis pas trop sur c'est comment m'y prendre coté php avec les classes.
 
J'ai bien fait ceci :  
 

Code :
  1. class clsHoraire {
  2.  var $id;
  3.  var $salle_assoc;
  4.  var $jour_assoc;
  5.  var $employe_assoc;
  6.  var $cours_assoc;
  7.  var $heure_deb;
  8.  var $heure_fin;
  9.  // Constructeur
  10.  function clsHoraire($arg) {
  11.   global $db_link;
  12.   if(is_array($arg)) {
  13.    $this->id=$arg['id_horaire'];
  14.    $this->salle_assoc   = new clsSalle($arg);
  15.    $this->jour_assoc    = new clsJour($arg);
  16.    $this->employe_assoc = new clsEmploye($arg);
  17.    $this->cours_assoc   = new clsCours($arg);
  18.    $this->heure_deb=$arg['heure_deb'];
  19.    $this->heure_fin=$arg['heure_fin'];
  20.   }
  21.   else {
  22.    $rs_horaires=sql_select($db_link, "
  23.     SELECT * FROM horaire_semaine
  24.     WHERE id_horaire='".$arg."'
  25.    " );
  26.    $this->clsHoraire($rs_horaires[0]);
  27.   }
  28.  }
  29. }


 
(Deja n'hesitez pas a critiquer si ca vous parrait louche... ca m'aidera.)
 
Ma question est : Comment faire pour rester dans l'esprit poo, pour avoir une fonction, qui affiche la grille horaire?
 
Dois je implementer une fonction AffHoraire dans cette classe meme ?  
Ou alors il faut creer une classe "père" intitulée Horaires, et la classe ci-dessus alors ne serait pas nommée correctement, je devrais l'appeler plutot HeuresHoraire ?
 
voila je suis un peu perdu, si qqun pourrais me montrer un ptit exemple concret pour m'orienter en prenant comme point de départ cette classe, ca serait cool, car j'ai un peu de mal :(
 
J'espere que tout est clair, si besoin de precision sur un truc dite le moi.
 
Merci davance tout le monde
 
P.S.: pour la categorie j'ai mis "php" faute de categorie "poo", si il est preferable de mettre "Divers" pour être mieux ciblé dite le moi merci :)


Message édité par Gat$ le 04-03-2005 à 21:14:48
mood
Publicité
Posté le 04-03-2005 à 21:11:52  profilanswer
 

n°1001368
omega2
Posté le 04-03-2005 à 22:36:29  profilanswer
 

clsHoraire ne corespond qu'a une seule réservation et donc qu'a un seul horaire.
Pour afficher une grille horaire compléte, il te faudrait par exemple une classe "clsGrilleHoraire" contenant un tableau d'objets de type "clsHoraire".

n°1001540
Gat$
http://www.wowteamfinder.com
Posté le 05-03-2005 à 00:43:24  profilanswer
 

omega2 a écrit :

clsHoraire ne corespond qu'a une seule réservation et donc qu'a un seul horaire.
Pour afficher une grille horaire compléte, il te faudrait par exemple une classe "clsGrilleHoraire" contenant un tableau d'objets de type "clsHoraire".


 
Merci pour ta réponse!
 
J'ai fait comme ceci :  
 

Code :
  1. <?php
  2. class clsGrilleHoraire {
  3.  var $Grille;
  4.  // Constructeur
  5.  function clsGrilleHoraire() {
  6.   global $db_link;
  7.   $rs_horaires=sql_select($db_link, "SELECT * FROM horaire_semaine" );
  8.   for($i=0; $i<count($rs_horaires); $i++) {
  9.    $this->Grille[$i] = new clsHoraire($rs_horaires[$i]);
  10.   }
  11.  }
  12. }
  13. class clsHoraire {
  14.  var $id;
  15.  var $salle_assoc;
  16.  var $jour_assoc;
  17.  var $employe_assoc;
  18.  var $cours_assoc;
  19.  var $louee;
  20.  var $heure_deb;
  21.  var $heure_fin;
  22.  // Constructeur
  23.  function clsHoraire($arg) {
  24.   global $db_link;
  25.   if(is_array($arg)) {
  26.    $this->id=$arg['id_horaire'];
  27.    $this->salle_assoc   = new clsSalle($arg);
  28.    $this->jour_assoc    = new clsJour($arg);
  29.    $this->employe_assoc = new clsEmploye($arg);
  30.    $this->cours_assoc   = new clsCours($arg);
  31.    $this->louee=$arg['louee'];
  32.    $this->heure_deb=$arg['heure_deb'];
  33.    $this->heure_fin=$arg['heure_fin'];
  34.   }
  35.   else {
  36.    $rs_horaires=sql_select($db_link, "
  37.     SELECT * FROM horaire_semaine
  38.     WHERE id_horaire='".$arg."'
  39.    " );
  40.    $this->clsHoraire($rs_horaires[0]);
  41.   }
  42.  }
  43. }
  44. ?>


 
Ca te parrait correct ?  
 
J'ai pas mis  
 

Code :
  1. class clsHoraire extends clsGrilleHoraire { ... }


 
Car en fait je vois pas trop a quoi pourrait servir un heritage dans ce cas ci, dis moi si je me trompe. :)
 
Merci


Message édité par Gat$ le 05-03-2005 à 00:43:54
n°1001779
omega2
Posté le 05-03-2005 à 15:15:22  profilanswer
 

Voilà, t'as pigé le principe. En effet, l'héritage ne peut pas servir dans ce cas ci.
Il te reste plus qu'à rajouter les fonctions pour utiliser les données. :)
 
Au fait, pour rendre ton sctript plus rapide, tu pourais éviter de rechercher à nouveau les données dans la base de donnée vu que la premiére classe les a déjà reçu. ;)

n°1001787
Gat$
http://www.wowteamfinder.com
Posté le 05-03-2005 à 15:26:05  profilanswer
 

Ok c cool merci si j'ai d'autre prob je ferai un reply ici, merci pour ton aide :)
 

omega2 a écrit :


Au fait, pour rendre ton sctript plus rapide, tu pourais éviter de rechercher à nouveau les données dans la base de donnée vu que la premiére classe les a déjà reçu. ;)


 
Ben en fait quand je recois un tableau en argument c'est en fait un resultat de requete et donc la fct sait qu'elle ne doit pas interroger la db, par contre si ce n'est pas un tableau c'est que c'est un identificateur, et donc il faut aller chercher les données dans la DB, j'ai fait gaffe a paas faire 2 fois la meme chose :)
 
 

n°1001791
omega2
Posté le 05-03-2005 à 15:46:05  profilanswer
 

ha oui, j'avais pas vu. :)
Fait attention avec les fonctions récursives, le jour ou ca se passe pas bien, ca risque de tourner en boucle et là t'auras dfroit à un message d'erreur pas forcément facile à comprendre.
Dans le cas présent, il vaudrait mieux se dire : si on me passe que l'identifiant, je cherche les données et je les mets dans une variable tableau mais si on me passe tout, je le copie dans l'autre variable tableau. ;) Et si t'as besoin de faires d'autres opérations derriéres, tu ne risqueras pas de les faire plusieurs fois. :)

n°1001795
Gat$
http://www.wowteamfinder.com
Posté le 05-03-2005 à 15:54:42  profilanswer
 

omega2 a écrit :

ha oui, j'avais pas vu. :)
Fait attention avec les fonctions récursives, le jour ou ca se passe pas bien, ca risque de tourner en boucle et là t'auras dfroit à un message d'erreur pas forcément facile à comprendre.


 
Oui d'ailleur c'est arrivé, et explorer met "impossible d'afficher la page" quand ca boucle a l'infini  :whistle:
 

omega2 a écrit :


Dans le cas présent, il vaudrait mieux se dire : si on me passe que l'identifiant, je cherche les données et je les mets dans une variable tableau mais si on me passe tout, je le copie dans l'autre variable tableau.


 
Moui, j'etais si content d'avoir trouvé un truc qui marchait bien, avec un minimum de code :o  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Poo et php

 

Sujets relatifs
probleme debutant pooaborder la POO
[POO] Probleme de recuperation de variable[PHP] Question POO / pointeurs [résolu- presque]
GUI et POO[Perl] Aide pour logique en POO
[Perl] POO et utilisation d'une method dans un print ou un shell execcommunication entre les plugins et le coeur d'une application POO
[PHP] La POOOu download Tinky Winky, Dipsy, Laa-Laa et Poo???????????????? ?
Plus de sujets relatifs à : Poo et php


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)