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>';
}