Bonjour, je voudrais afficher mes cours dans mon emploi du temps.
mon code actuel:
$bdd = new PDO("sqlite:..//bdd/gestion.sql");
$bdd->exec("CREATE TABLE addtable (
id INTEGER PRIMARY KEY AUTOINCREMENT,
dpt varchar(250) NOT NULL,
cours varchar(250) NOT NULL,
matiere varchar(250) NOT NULL,
salle varchar(250) NOT NULL,
heure_debut varchar(250) NOT NULL,
heure_fin varchar(250) NOT NULL,
date DATE
);");
$bdd->exec("INSERT INTO addtable (id, dpt, cours, matiere, salle, heure_debut, heure_fin, date) VALUES
(47, 'Informatique', 'TP', 'Programmation web 1', 'G310', '8:00', '9:00', '20-01-2021'),
(48, 'Mathématiques', 'TD', 'Mathématiques 1', 'P14', '10:00', '12:00 ', '23-01-2021'),
(50, 'Sciences de la vie et de la Terre', 'CM', 'Sciences de la vie et de la terre 1', 'S25', '13:00', '14:00', '09-09-2021'),
(51, 'Physique-Chimie', 'TP', 'Programmation web 1', 'G110', '14:00', '15:00', '18-09-2021'),
(52, 'Informatique', 'TD', 'Algorithme et programmation 1', 'D101', '15:00', '17:00', '20-09-2021'),
(53, 'Mathématiques', 'CM', 'Mathématiques 2', 'S19','8:00', '10:30', '01-09-2021');");
$bdd = new PDO('sqlite:..//bdd/gestion.sql');
$query = ("SELECT * FROM addtable ");
$res = $bdd->query($query);
$jours = array(null, "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi");
echo "<div class='container'><table width='' class='table table-bordered' style='text-align:center;' border='1' >
<tr><th></th>";
for($x = 1; $x < 6; $x++){
echo "<th style='text-align:center; background:#CCCCCC;'>".$jours[$x]."</th>";
}
echo "</tr>";
for ($heure = 8; $heure <= 18; $heure++) {
echo "<tr>";
$heure_aff = $heure;
if(strlen($heure_aff) <= 2) {
echo "<td style=\"width:3%; vertical-align:top; text-align:center; background:#CCCCCC; font-weight: bold; \">";
echo $heure_aff;
echo "h00";
echo "</td>";
}
for($d = 0; $d < 5; $d++){
$date_num = date("d-m-Y", mktime(0, 0, 0, 1, 20+$d, 2021));
echo "<td style=\"padding:10px 5px 10px 5px; border:1px solid #999999;\">";
$date_lecon = $heure.":00 ".$date_num;
while($row = $res->fetch()){
if($date_lecon == $row['heure_debut']." ".$row['date']){
$rdv = $row['cours']."<br>".$row['matiere']."<br>".$row['salle'];
echo $rdv;
}
}
echo "</td>";
}
}
echo "</table>";
Ce que je veux
Je voudrais quelque chose comme ça mais uniquement en heure pile:
[(https://i.stack.imgur.com/4jZEa.png)]
Ce que j'obtiens
Actuellement mon While ne s'effectue que dans une seule cellule.... Je ne comprends ppas pourquoi donc j'ai ceci:
[(https://i.stack.imgur.com/tefYT.png)]
Or si je echo $date_lecon juste avant d'entrer le while j'obtiens bien ceci:
Merci d'avance pour votre aide !
J'ai réussi à régler en partie mon problème en modifiant mon code comme ceci:
$query = ("SELECT * FROM addtable ");
$res = $bdd->query($query);
$rows = $res->fetchAll();// ICI !!!
$jours = array(null, "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi");
echo "<div class='container'><table width='' class='table table-bordered' style='text-align:center;' border='1' >
<tr><th></th>";
for ($x = 1; $x < 6; $x++) {
echo "<th style='text-align:center; background:#CCCCCC;'>".$jours[$x]."</th>";
}
echo "</tr>";
for ($heure = 8; $heure <= 18; $heure++) {
echo "<tr>";
$heure_aff = $heure;
if (strlen($heure_aff) <= 2) {
echo "<td style=\"width:3%; vertical-align:top; text-align:center; background:#CCCCCC; font-weight: bold; \">";
echo $heure_aff;
echo "h00";
echo "</td>";
}
for ($d = 0; $d < 5; $d++) {
$date_num = date("d-m-Y", mktime(0, 0, 0, 1, 20 + $d, 2021));
echo "<td style=\"padding:10px 5px 10px 5px; border:1px solid #999999;\">";
$date_lecon = $heure.":00 ".$date_num;
foreach ($rows as $row) {
if ($date_lecon == $row['heure_debut']." ".$row['date']) {
$rdv = $row['cours']."<br>".$row['matiere']."<br>".$row['salle'];
echo $rdv;
}
}
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
Le problème est que si mon cours fait 2 heures il s'affiche que dans une seule ligne au lieu de 2, une idée ?