Vous n'êtes pas identifié(e).
Bonjour,
Désolé de vous demander encore de l'aide, mais il est des situations dont je n'arrive pas à m'extirper
il s'agit d'un système de réservation de véhicules de service pour mon boulot, les utilisateur peuvent réserver un véhicule à une date et dans une plage horaire qui court de 7 heures à 18 heures, dans ma base de données appellée mission, les date de départ et d'arrivée sont en fait des champs INT.
Je voudrais, pour la lisibilité, réaliser un tableau sous forme de planning qui reprends en header, les dates du mois en cours et en dessous de chaque dates les heures.
Dans le body, la première collonne reprends tous les véhicules identifiés par leur immatriculation.
Jai donc commencer par suivre cette idée et voici ce que jobtiens:
Je suis arrivé à ce résultat avec ce code:
//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.
Et c'est là que je me noie !
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,
Humble débutant...
Hors ligne
Saluton,
S'agissant des données, il ne faut pas confondre le placard avec la casserole et donc pas la base de données avec les tables qu'elle est censée contenir.
En première analyse je dirais qu'il te faut apprendre à séparer les genres et à dédier à chaque domaine les problématiques qui relèvent de sa compétence.
Et nous commencerons par le rendu visuel à l'écran qui doit, de plus en plus, être confié à une feuille de style (CSS).
Par ailleurs, il y a moyen de configurer PHP pour qu'il retourne les dates en français, je n'ai pas ça sous la main, mais ça se trouve aisément dans la doc.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Saluton,
S'agissant des données, il ne faut pas confondre le placard avec la casserole et donc pas la base de données avec les tables qu'elle est censée contenir.En première analyse je dirais qu'il te faut apprendre à séparer les genres et à dédier à chaque domaine les problématiques qui relèvent de sa compétence.
Et nous commencerons par le rendu visuel à l'écran qui doit, de plus en plus, être confié à une feuille de style (CSS).
Par ailleurs, il y a moyen de configurer PHP pour qu'il retourne les dates en français, je n'ai pas ça sous la main, mais ça se trouve aisément dans la doc.
Pardon pour la confusion entre BDD et table, mea culpa.
Pour ce qui concerne le rendu visuel, je suis d'accord, mais j'en suis encore à chercher ce que je veux de ce point de vue et j'envisageais de créer celle-ci dès lors que j'ai résolu mon problème de tableau.
Quand à la date, tu veux sans doute parler de "setlocale" ? j'avoue ne pas avoir essayé.
Humble débutant...
Hors ligne
Pour ce qui concerne le rendu visuel, je suis d'accord, mais j'en suis encore à chercher ce que je veux de ce point de vue et j'envisageais de créer celle-ci dès lors que j'ai résolu mon problème de tableau.
C'est une raison supplémentaire pour structurer correctement ton document (pense DTD), y identifier des entités et des classes auxquelles tu appliqueras plus tard des règles de style.
N'oublie pas, par exemple les balises thead tfoot tbody
Quand à la date, tu veux sans doute parler de "setlocale" ? j'avoue ne pas avoir essayé.
C'est exactement à cela que je pensais, utiliser les fonctionnalités éprouvées plutôt que de réinventer des roues qui tourneront plus ou moins rond.
@+
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pour revenir au fond de ton problème, je te conseille de ne pas afficher le tableau pour le mois en entier.
Soit tu fais un fenêtrage quotidien par onglet ou par choix dans une liste déroulante, mais un tableau HTML de plus de 350 colonnes c'est, au mieux, pas pratique.
Par ailleurs, lors du parcours de ta requête, tu vas devoir construire les colonnes dynamiquement en fonction de l'empan des plages de réservation (entre heuredepart et heurearrivee) bien que je me rende compte que ces horaires peuvent très bien porter, pour une même mission, sur des dates différentes.
A ce propos, pourquoi avoir utiliser des colonnes de types DATE et TIME et non pas directement des DATETIME ou des TIMESTAMP ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
J'ai utilisé des colonne DaetTime pour ce qui concerne les jours,mais j'ai utilisé des INT pour les heures parce que j'ai suivi les conseils donnés sur sdz (sanns pub aucune )...
Maintenant, je recherche une solution, je ne dis pas que mon cheminement est le bon.
Je suis évidemment ouvert à tout, d'autant plus que très debutant , je n'ai aucune idée pour avancer .
Humble débutant...
Hors ligne
Afin d'éviter de te poser trop de questions à tiroir, peux-tu nous donner le résultat des SHOW CREATE TABLE mission, SHOW CREATE TABLE individu et SHOW CREATE TABLE vehicule.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne