Bonsoir à tous,
Je suis en pleine construction d'une classe Journée, qui affiche tous les évènements d'une journée... comme c'est une première

, je me pose beaucoup de questions... est-ce logique ? Est-ce qu'on s'y prend comme ça ?
et j'aurais besoin de conseils pour l'améliorer (ou la reprendre peut-être).
Pourriez-vous prendre qq minutes pour y jeter un oeil ?
Merci de votre aide !
<?php
class Journee
{
private $_timstp_jr = array(),
$_planning = array(),
$_planningJournee = null;
public function __construct($timestamp_jour)
{
//array timstp_jr
$this->_timstp_jr['timstp']=$timestamp_jour;
$this->_timstp_jr['jr']= date('d',$timestamp_jour);
$this->_timstp_jr['mois']= date('m',$timestamp_jour);
$this->_timstp_jr['an']= date('Y',$timestamp_jour);
//array planning
$this_plannig = self::recupererPlanning();
$this->_planningJournee = self::afficherJournee();
return $this->_planningJournee;
}
private function afficherJournee()
{
$planningJournee = '<table cellpadding=5>';
if(!empty ($this->_planning))
{
//parcourt ts les evnmts (Tant q $i inf au nb total d'élmt du tableau)
for($i=0;$i<sizeof($this->_planning);$i++)
{
$eventTimstpDebut = transfo_date_en_unix_timestamp($this->_planning[$i]['event_date_debut']);
$eventDureeEnSec = transfo_duree_en_secondes($this->_planning[$i]['event_duree']);
$eventTimstpFin = $eventTimstpDebut+$eventDureeEnSec;
$eventDateDebut = $this->_planning[$i]['event_date_debut'];
$eventDateFin = date('Y-m-d',$eventTimstpFin);
//$ex= $i;
//$planningJournee.='<br/> :'.$ex;
//précédent Jour J
if ($eventTimstpDebut < $this->_timstp_jr['timstp'])
{
$eventHMinDebut = '00h00';
$noteSupp[$i] = '(...suite de la veille)';
}
//sinon Jour J
else
{
$eventHMinDebut = date('H\hi',$eventTimstpDebut);
}
//terminant après
if ($eventTimstpFin > $this->_timstp_jr['timstp']+3600*23)
{
$eventHMinFin = '00h00';
$noteSupp[$i] = '(...suite le lendemain)';
}
//sinon Jour J
else
{
$eventHMinFin =date('H\hi',$eventTimstpFin);
}
//notes supplémentaires
$noteSupp[$i] = (isset($noteSupp[$i])) ? '<span style="color:red;font-size:0.8em">'.$noteSupp[$i].'</span>' : '';
//affichage
$planningJournee.= '<tr>
<td valign="top">'.$eventHMinDebut.'
</td>
<td><strong>'.$this->_planning[$i]['event_intitule'].'</strong>
<br/>
<u>de '.$eventHMinDebut.' à '.$eventHMinFin.'</u> '.$noteSupp[$i].'
<br/><i>'.$this->_planning[$i]['event_type_aff'].'</i>
<br/>'.$this->_planning[$i]['event_commentaires'].'
</td>
</tr>';
}
}
else
{
//affichage
$planningJournee.= '<tr>
<td>Journée entièrement disponible !</td>
</tr>';
}
$planningJournee.= '</table></div>';
return $planningJournee;
}
private function recupererPlanning()
{
//connexion BDD
bdconnect();
/*
TABLES / CHAMPS
evnmt_type
evnmt_type_id
evnmt_type_aff
evenements
event_id
event_date_debut
event_duree
event_type
event_intitule
event_commentaires
*/
//Expr 0 : affichage du jour demandé => $timestamp_jour
$expr0 = 'date(\''.$this->_timstp_jr['an'].'-'.$this->_timstp_jr['mois'].'-'.$this->_timstp_jr['jr'].'\')';
//Expr 1 : affichage du debut de l'event (date de début à 00:00:00)
$expr1 = 'date(E.event_date_debut)';
//Expr 2 : calcul de la date de la fin de l'événement le matin à minuit
$expr2 = 'DATE_ADD(E.event_date_debut,INTERVAL E.event_duree HOUR_SECOND)';
//Expr3 : date de la fin de l'événement le soir à minuit (expr2 au format '1998-01-02' +1jr ).
$expr3 = 'date(DATE_ADD('.$expr2.', INTERVAL 1 DAY))';
//condition où : expr1 <= jour_analysé and jour_analysé < expr3
$where = '('.$expr1.' <= '.$expr0.') && ('.$expr0.' < '.$expr3.')';
$sql ='SELECT *
FROM
evenements E,
evnmt_type T
WHERE
'.$where.'
&& E.event_type = T.evnmt_type_id
ORDER BY day(E.event_date_debut)';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($event = mysql_fetch_array($req))
{
$this->_planning []= array(
'event_id' => $event['event_id'],
'event_date_debut' => $event['event_date_debut'],
//stocker durée en secondes !
'event_duree' => $event['event_duree'],
'event_type_id' => $event['evnmt_type_id'],
'event_type_aff' => $event['evnmt_type_aff'],
'event_intitule' => $event['event_intitule'],
'event_commentaires' => $event['event_commentaires']);
}
mysql_free_result ($req);
//return $this->_planning;
}
public function __toString()
{
$jourAffiche = '<div class="planning_jour">'.$this->_planningJournee.'</div>';
return $jourAffiche;
}
public function __destruct()
{
//echo 'Objet Calendrier détruit<br/>';
}
}
//affichage du jour (à 00:00:00)
if(!isset($_GET['d']) && !isset($_GET['m']) && !isset($_GET['y']))
{
// Si rien dans l'url, récupération de la date du jour
$timestamp_jour = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
}
else
{
//sinon récupèration de la date envoyée ds url
$timestamp_jour = mktime(0, 0, 0, $_GET['m'], $_GET['d'], $_GET['y']);
}
/*
//CONTRÔLES
//lien factice pr voir si ça marche
echo '<a href="class_calendrier4.php?d=16&m=11&y=2011">clic sur 17 Novembre 2011</a><br/>';
echo 'Jour : '.$timestamp_jour.'</br>';
echo '<br/>'.date('d m Y H:i',$timestamp_jour); // affich 16 11 2011 00:00
echo '<br/>'.date('H\Hi',$timestamp_jour); // affich 00H00
echo '<br/>'.date('d F Y',$timestamp_jour);// affich 16 November 2011
*/
$journee = new Journee($timestamp_jour);
//var_dump($journee);
echo $journee;
//destruction de l'objet pour ne pas surcharger la mémoire
unset ($journee);
?>