Probleme de fusion case dans un tableau de requete rdv avec plage horaire

Petit nouveau ! | 2 Messages

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 :
Image

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>'; }
merci de vos réponses et de votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8250 Messages

15 sept. 2019, 11:34

Là pour le coup ce n'est pas un problème PHP mais un problème de pur HTML.
Regarde la source HTML générée pour voir ce qui cloche et une fois que tu verras comment corriger le HTML tu pourras modifier ton code PHP pour qu'il génère le code correct.
Quand tout le reste a échoué, lisez le mode d'emploi...