PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Affichage d'un planning de disponnibilité par dates et plages horaires » 11-05-2012 02:55:19

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 .

#2 Re : Forum Général PHP » Affichage d'un planning de disponnibilité par dates et plages horaires » 11-05-2012 02:55:19

Maljuna Kris a écrit :

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é.

#3 Forum Général PHP » Affichage d'un planning de disponnibilité par dates et plages horaires » 11-05-2012 02:55:19

pierre3401
Réponses : 6

Bonjour,

Désolé de vous demander encore de l'aide, mais il est des situations dont je n'arrive pas à m'extirper neutral

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:

860469planning2.jpg

Je suis arrivé à ce résultat avec ce code:

<?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.
Et c'est là que je me noie ! roll

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,

#4 Re : Forum Général PHP » verifications de données » 09-05-2012 20:56:06

Ok,
J'ai fait un tour sur (Vous pouvez lire ce post si vous êtes interessé) et je vais regarder ça de plus près, mais je pense que ça va me prendre un peu de temps à comprendre hmm
J'ai aussi regardé ceci : Php facile : les déclencheurs
Mais là aussi, il va me faloir du temps...
Ce que j'ai compris de ceci, c'est que je peut créer un déclencheur dans la base et avant que la commande INSERT ne s'exécute afin de vérifier que je n'ai pas deux fois le même enregistrement.
Encore faut-il savoir comment faire, je sais que le début de ma commande devrat-être:

"mysql> CREATE TRIGGER ???BEFORE INSERT ON mission"
Mais je ne sais pas quoi mettre à la place des "???" ni quoi mettre ensuite sad
Enfin, question: comment la réonse se traduit-elle dans ma page php ?

#5 Re : Forum Général PHP » verifications de données » 09-05-2012 20:56:06

Jc a écrit :

Bonsoir,

Désolé mais on n'a rien vu sad

Ce code témoigne tout de même l'état dans lequel se trouve votre système de réservation. Ex: Impossibilité de réserver deux véhicules différents le même jour à la même heure pour ne citer que celui ci.

roll

Aucun problèmes de ce point de vue, j'arrive parfaitement à réserver tous les véhicules (12 actuellement) le même jour à la même heure.
Par contre j'arrive aussi à réserver un seul véhicule deux fois le même jour à la même heure et/ ou dans la même plage horaire, c'est là que j'ai un problème, je veux éviter celà et je n'arrive pas à trouver comment faire.

#6 Re : Forum Général PHP » verifications de données » 09-05-2012 20:56:06

Par contre j'irai faire un tour sur le post.
Mais vos propos sont un peu obscurs,je ne suis qu'un humble débutant
..
D'ou ce post-ci.
Et j'ai edité mon code...

#7 Re : Forum Général PHP » verifications de données » 09-05-2012 20:56:06

Jc a écrit :

Il l'a désactivé à cause de son problème.

Heu non c'est pas desactivé, c'est la retranscripton du code...ici il interprete les "//"comme commentaires sur plusieurs lignes...
neutral

#8 Re : Forum Général PHP » verifications de données » 09-05-2012 20:56:06

C'est normal qu'il y ai un INSERT...Je ne veux pas modier une donnee existante je veux en ajouter.

#9 Re : Forum Général PHP » verifications de données » 09-05-2012 20:56:06

Oui, je recupere bien les donnees.
Je l'ai même verifié dans mon script

 echo("<span class=\"style4\">L'ajout a ete correctement effectue $datedep</span>") ;

C'est pourquoi je suis perdu

#10 Forum Général PHP » verifications de données » 09-05-2012 20:56:06

pierre3401
Réponses : 17

Bonjour,
Dans un systeme de reservation de vehicules je voudrais eviter de permettre les doubles reservation.
Mais le code ci-dessous ne fonctionne pas et je ne sais plus quoi faire...
Quoi qu'il arrive la reservation est validee

     
<?php
include('../connect_base.php'); ?>
<html>
<head>
<title>Ajouter reservation</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../lien.css" rel="stylesheet" type="text/css"> </head> <body bgcolor="#fffcd9" marginheight="25" leftmargin="25">
<?php
 //récupération des données à modifier

$individu=$_POST["nom"]; $vehicule=$_POST["matricule"]; $objectif=$_POST["objectif"]; $datedepart=$_POST["datede"];

$h=$_POST["HeureDepart"]; $HeureDepart=$h.':00:00'; if ($h==o) $HeureDepart =NULL; $h=$_POST["HeureArrivee"]; $HeureArrivee=$h.':00:00'; if ($h==o) $HeureArrivee =NULL;

$req = 'SELECT COUNT(*) FROM mission WHERE datereservation = ' . $datedepart . ' AND datefinreservation = ' . $datefin. ' AND heuredepart = ' . $heureDepart. ' AND heurearrivee = ' . $heureArrivee. '';

$resultat = mysql_query($req)or die(mysql_error());

//Test qui permet de savoir combien de résultats à trouvé la requête

 if(mysql_num_rows($resultat) == 0) { /* Les dates de réservations ainsi que l'heure sont disponible. donc, tu peux faire le script de réservation */

//formate la date yyyy-mm-dd vers jj/mm/aaa

$datedepart = explode('/', $datedepart); $datedepart = array_reverse($datedepart); $datedepart = implode('-', $datedepart);

$datefin=$_POST["datefi"];


$datefin = explode('/', $datefin); $datefin = array_reverse($datefin); $datefin = implode('-', $datefin);

//requete de mise à jour
$requete="insert into mission (idvehicule, idindividu, objectifmission, datereservation, heuredepart, datefinreservation, heurearrivee) values ('".$vehicule."', '".$individu."', '".$objectif."', '".$datedepart."', '".$HeureDepart."', '".$datefin."', '".$HeureArrivee."')"; $resultat=mysql_query($requete) or die(mysql_error()); if($resultat){ echo("<span class=\"style4\">L'ajout a ete correctement effectue $datedep</span>") ; } else{ echo("<span class=\"style4\">L'ajout a échoue</span>") ;

// bouton de retour
echo "<br><br>"; echo "<form>"; echo "<input type='button' value=\"Retour\" onclick=\"window.location='liste_reservation1.php';\">"; echo "</form>";

}
else
{
 /* Sinon, affichage d'une message d'erreur comme quoi, la réservation n'est pas possible car les dates et heures sont déjà prises */
echo("<span class=\"style4\">cette reservation existe</span>") ; }
 // bouton de retour
echo "<br><br>"; echo "<form>"; echo "<input type='button' value=\"Retour\" onclick=\"window.location='liste_reservation1.php';\">"; echo "</form>"; } mysql_close();
?>
</body>

Merci de votre aide

Pied de page des forums

Propulsé par FluxBB