Probleme de fusion case dans un tableau de requete rdv avec plage horaire
Posté : 13 sept. 2019, 15:54
bonjour, je vous explique mon problème, j'aimerai faire un tableau des plages horaires disponible et non disponible selon la date sélectionnée au préalable. celle disponible on pourra cliquez dessus pour enregistrer un rdv et celle non disponible on pourra modifier le rdv.
j'y arrive j'obtiens les plages horaires occupés et celle libre , mon soucis se situe au niveau de la fusion des cases, par exp; un rdv va aller de 8h30 à 11h30 donc je fusionne les cases de ces plages horaires mais du coup ces cases là apparaissent à côte à droite avec marque libre.
ce que j'ai en images :

merci de vos réponses et de votre aide.
j'y arrive j'obtiens les plages horaires occupés et celle libre , mon soucis se situe au niveau de la fusion des cases, par exp; un rdv va aller de 8h30 à 11h30 donc je fusionne les cases de ces plages horaires mais du coup ces cases là apparaissent à côte à droite avec marque libre.
ce que j'ai en images :

Code : Tout sélectionner
if (isset($_POST['voir_horaire_dispo']))
{
$jour =$_POST['jour'];$mois=$_POST['mois'];$annee=$_POST['annee'];
$datevu_1= $jour."-".$mois."-".$annee;
$datevu_12 = strtotime ($datevu_1);
$date_select = strftime("%Y-%m-%d",$datevu_12);
echo $date_select."<br/>";
$ligneheure = array(1=>'08:00', '08:30','09:00','09:30','10:00','10:30', '11:00','11:30', '12:00', '12:30','13:00', '13:30','14:00','14:30', '15:00','15:30', '16:00','16:30', '17:00','17:30', '18:00','18:30', '19:00','19:30','20:00');
echo "<table border=1>";
for ($h = 1; $h <= 25; $h++)
{
echo '<tr>';
echo '<td>'.$ligneheure[$h].'</td>';
//IF ON TROUVE UN RESULATS SION AJOUTER LIBRE
$debut_rdv = $date_select." ".$ligneheure[$h];
//echo $debut_rdv;
$fin_rdv = $date_select." 13:00"; // A INSERER DNAS LA BDD AVEC CLAUCL ET A EXTRAIRE DANS REQ APRES
//echo $fin_rdv;
$red = $bdd->prepare('SELECT nom FROM brico_produits_client
INNER JOIN brico_clients ON brico_produits_client.id_client = brico_clients.id
INNER JOIN brico_commandes ON brico_produits_client.id_commandes = brico_commandes.id
INNER JOIN brico_ref_produits ON brico_produits_client.id_ref_produits = brico_ref_produits.id
WHERE rdv_livreur LIKE ?');
$red->execute(array($debut_rdv."%"));
$nb2 = $red->rowCount();
if ($nb2 == 0) {
{echo "<td>ajouter rdv libre (ajouter temps dispo si besoin de 1H et qu'il reste 20 refusé</td>";}
}
else {
// ON TEST UNE HORAIRE DU JOUR SELECTIONNE A CHAQUE FOIS
$red = $bdd->prepare('SELECT DISTINCT nom,rdv_livreur,DATE_FORMAT(rdv_livreur, "%d/%m/%Y") AS jour_rdv_livreur,
DATE_FORMAT(rdv_livreur, "%H:%i") AS heure_rdv_livreur,DATE_FORMAT(rdv_livreur, "%d") AS chiffredujour_rdv_livreur,tps_total_deplacement,ville
FROM brico_produits_client
INNER JOIN brico_clients ON brico_produits_client.id_client = brico_clients.id
INNER JOIN brico_commandes ON brico_produits_client.id_commandes = brico_commandes.id
INNER JOIN brico_ref_produits ON brico_produits_client.id_ref_produits = brico_ref_produits.id
WHERE rdv_livreur LIKE ?');
$red->execute(array($debut_rdv."%"));
//$red->execute(array($date_select."%"));
while ($donnees = $red->fetch())
{
// ON OBTIENT HORAIRE FIN RDV
if ($donnees['tps_total_deplacement'] < 60) { $dureearrondi = 2;}
if ($donnees['tps_total_deplacement'] > 60 && $donnees['tps_total_deplacement'] < 120) { $dureearrondi = 4;}
if ($donnees['tps_total_deplacement'] > 120 && $donnees['tps_total_deplacement'] < 180) { $dureearrondi = 6;}
$date_en_timestamp = strtotime($donnees['rdv_livreur']);
$ajout_dureearrondiminutes = ($dureearrondi/2)*60*60;
$dateplusajout = $date_en_timestamp + $ajout_dureearrondiminutes;
$date_fin_rdv = date('H:i', $dateplusajout);
?><td bgcolor='red' width=70% rowspan ="<?php echo $dureearrondi;?>" ><?php
echo $donnees['nom']."<br/>".$donnees['ville']."<br/>".
$donnees['jour_rdv_livreur']."<br/>".$donnees['heure_rdv_livreur']."-";
$date_en_timestamp = strtotime($donnees['rdv_livreur']);
$ajout_dureearrondiminutes = ($dureearrondi/2)*60*60; // DUREEARRONDI /2 x 60 X60 => par exmple 180 en se conde si duree = 6/2;
//echo $ajout_dureearrondiminutes."<br/>";
$dateplusajout = $date_en_timestamp + $ajout_dureearrondiminutes;
//echo $date_en_timestamp."<br/>";
//$date_fin_rdv = date('d/m/Y H:i', $dateplusajout);
$date_fin_rdv = date('H:i', $dateplusajout);
echo $date_fin_rdv."<br/>";
//echo "tps min :".$donnees['tps_total_deplacement']."<br/>";
$tps_total_deplacement_Heure = FLOOR($donnees['tps_total_deplacement']/60);
$tps_total_deplacement_Minutes = $donnees['tps_total_deplacement'] % 60;
echo "tps:".$tps_total_deplacement_Heure."h ".$tps_total_deplacement_Minutes. "m <br/>";
echo "duree :".$dureearrondi;
echo " </td>";
}$red->closeCursor();
}
echo '</tr>';
}
echo '</table>';
}