Afficher une liste de réservation sous forme de planning

Petit nouveau ! | 7 Messages

04 mai 2012, 08:01

Bonjour,

J'ai réalisé pour mon boulot, un système de réservation des véhicules de services.
Lorsque l'utilisateur accède à la liste des réservations, il voit ceci:
Image.

Mais en fait, j'aurais voulu un truc de ce genre:
Image

C'est à dire, la colonne des véhicules dervait rester fixe et on devrait pouvoir voyager dans le tableau des dates mois par mois (ou semaine par semaine) de manière à pouvoir voir si un véhicule est pris ou non à un moment donné

Ma liste des réservations est extraite de la table de bdd appelée "mission" et comprte ces champs:
idvehicule, idindividu, objectif, datedepart, heuredepart, datefin, heurefin.

Je suis trés débutant et là je nage vraiment pour obtenir une représentation graphique de mes données, aussi si quelqu'un pouvait m'aider, ce serait super sympa =D>

Un grand merci d'avance,

Pierre

Petit nouveau ! | 7 Messages

05 mai 2012, 15:26

Up
personne n'a une idée ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 mai 2012, 19:16

Pour faire ce que tu veux, il te faut générer un tableau html (<table>). Pour cela il te faut une première boucle qui va affiche tous les véhicules (et donc les lignes de ton tableau : <tr>).

Dans cette boucle, il te faudra une seconde boucle qui va générer les colonnes en créer des cellules (<td>). Pour chacune de ces cellules (qui correspondront à tes dates/heures), tu devras vérifier si le véhicule est réservé ou non pour adapter la couleur de la cellule et son contenu.

Code : Tout sélectionner

TANT QUE tu as des véhicules AFFICHE le nom du véhicule TANT QUE tu as des jours/heures à afficher SI le véhicule est libre à la date/heure AFFICHE une cellule vide SINON AFFICHE le nom de celui qui occupe le véhicule FIN SI FIN TANT QUE FIN TANT QUE
Par exemple un véhicule réserver le 12 de 10h à 14h, tu vas tester :
- la cellule du 12 < 10h, pas de réservation,
- la cellule du 12 de 10-12h, une réservation
- etc.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 7 Messages

10 mai 2012, 10:33

bonjour,
Sur base des indication recues, voici ce que j'ai commencé:

Image

Ainsi donc, j'arrive à afficher mes dates, mes horaires et mes véhicules, et pour y arriver, voici le code utilisé:

Code : Tout sélectionner

<?php include "../connect_base.php"; ?> <?php   //conversion des mois vers le français   $mois["January"] = "Janvier"; $mois["Febrary"] = "Février"; $mois["March"] = "Mars"; $mois["April"] = "Avril"; $mois["May"] = "Mai"; $mois["June"] = "Juin"; $mois["July"] = "Juillet"; $mois["August"] = "Août"; $mois["September"] = "Septembre"; $mois["October"] = "Octobre"; $mois["November"] = "Novembre"; $mois["December"] = "Décembre";   function getMois($month){ return $mois[$month]; }   $month = Date("F"); getMois($month);   //on commences ton tableau :   echo '<caption><h2><color=red>Planning voiture '.$mois[$month].'   '.Date("Y").'</color></h></caption>'; echo '<TABLE border="1" align="center" class="tableau">';   // on débutes la ligne head echo '<thead><tr>'; //1ère cellule    echo '<th bgcolor=\"#FFCC33\">Dates</th>';   //on crée la ligne des dates   $start = new DateTime("now");              // 'now' n'est pas nécéssaire, c'est la valeur par défaut $end= new DateTime("now+30 day");      // 'on ajoute 30 jours à la date courante pour un affichage qui couvrira depuis aujourd'huy jusqu'à 30 jours plus tard..   foreach (new DatePeriod($start,new DateInterval('P1D')/*pas de 1 jour*/ , $end)as $dt){ echo '<th bgcolor=\"#FFCC33\" colspan="12" >' ; echo $dt->format('D-d/m/y'); echo'</th>';  }   // on fermes le head   echo '</tr></thead>';   // on crées les lignes des horaires   echo '<tbody><tr>'; echo '<td bgcolor=\"fffcd9\">Liste_des_vehicules</td>';                 // dans la première cellule on indique que la colonne en dessous sera la liste des voitures for($i = 1; $i<31; $i++) { echo '<td bgcolor=\"#CCFFFF\">07h00</td><td bgcolor=\"#FF99FF\">08h00</td><td bgcolor=\"#CCFFFF\">09h00</td><td bgcolor=\"#FF99FF\">10h00</td><td bgcolor=\"#CCFFFF\">11h00</td><td bgcolor=\"#FF99FF\">12h00</td><td bgcolor=\"#CCFFFF\">13h00</td><td bgcolor=\"#FF99FF\">14h00</td><td bgcolor=\"#CCFFFF\">15h00</td><td bgcolor=\"#FF99FF\">16h00</td><td bgcolor=\"#CCFFFF\">17h00</td><td bgcolor=\"#FF99FF\">18h00</td>'; } echo '</tr>';     // ensuite on crée les lignes du tableau en faisant un requête pour aller chercher les voitures et leurs réservations en base   $req="select immatriculationvehicule from vehicule ORDER BY immatriculationvehicule"; $resultat=mysql_query($req) or die(mysql_error());   while ($row=mysql_fetch_row($resultat)) {   echo "<tr>";     echo "<td bgcolor=\"#FFFF99\"align=\"center\" >$row[0]</td>";     }     //etc...on récupères toutes les infos à afficher   $requete='select idmission, identifiant, immatriculationvehicule, objectifmission, datereservation, datefinreservation, heuredepart, heurearrivee from mission m, individu i, vehicule v where m.idindividu=i.idindividu and v.idvehicule=m.idvehicule ORDER BY datereservation, immatriculationvehicule '; $mission=mysql_query($requete) or die(mysql_error());   //on colore dans le corps du tableau les cellules correspondant aux dates et heures auquels sont réservés les véhicules...       echo '<tr>';       echo '</tr>';*/       // on fermes le tableau echo '</tbody>';   echo '</table>'; ?>
J'en suis donc arrivé au point où il faut insèrrer les réservations effectuées en colorant les cellules qui correspondent au heures prises en fonction des dates.
A ce propos, dans ma table appelée "mission", les dates de départ et d'arrivées sont en fait de simples INT

Et c'est là que je me noie ! :oops:

Dès lors, deux questions:

- 1° Ai-je la bonne approche ?
- 2° Comment faire pour afficher ces réservations ?

Merci d'avance pour votre aide,