Bonjour,
Voila, je dois coder un emploi du temps en php, je dois gérer plusieurs salles de cours, et un emploi du temps qui va de 8h à 20h.
Donc je l'ai codé comme suit : j'ai une fonction qui converti les heures en numéro :
static function conversionHeureCase($heure)
{
switch ($heure)
{
case "08h00": $numcase=1; break; case "08h15": $numcase=2; break;
case "08h30": $numcase=3; break; case "08h45": $numcase=4; break;
case "09h00": $numcase=5; break; case "09h15": $numcase=6; break;
case "09h30": $numcase=7; break; case "09h45": $numcase=8; break;
case "10h00": $numcase=9; break; case "10h15": $numcase=10; break;
case "10h30": $numcase=11; break; case "10h45": $numcase=12; break;
case "11h00": $numcase=13; break; case "11h15": $numcase=14; break;
case "11h30": $numcase=15; break; case "11h45": $numcase=16; break;
case "12h00": $numcase=17; break; case "12h15": $numcase=18; break;
case "12h30": $numcase=19; break; case "12h45": $numcase=20; break;
case "13h00": $numcase=21; break; case "13h15": $numcase=22; break;
case "13h30": $numcase=23; break; case "13h45": $numcase=24; break;
case "14h00": $numcase=25; break; case "14h15": $numcase=26; break;
case "14h30": $numcase=27; break; case "14h45": $numcase=28; break;
case "15h00": $numcase=29; break; case "15h15": $numcase=30; break;
case "15h30": $numcase=31; break; case "15h45": $numcase=32; break;
case "16h00": $numcase=33; break; case "16h15": $numcase=34; break;
case "16h30": $numcase=35; break; case "16h45": $numcase=36; break;
case "17h00": $numcase=37; break; case "17h15": $numcase=38; break;
case "17h30": $numcase=39; break; case "17h45": $numcase=40; break;
case "18h00": $numcase=41; break; case "18h15": $numcase=42; break;
case "18h30": $numcase=43; break; case "18h45": $numcase=44; break;
case "19h00": $numcase=45; break; case "19h15": $numcase=46; break;
case "19h30": $numcase=47; break; case "19h45": $numcase=48; break;
case "20h00": $numcase=49; break;
}
return($numcase);
}
Ensuite j'ai une fonction qui me calcule la longueur d'une plage horraire :
static function longueurPlage($heuredeb,$heurefin)
{
$caseheuredeb=Edt::conversionHeureCase($heuredeb);
$caseheurefin=Edt::conversionHeureCase($heurefin);
$lgplage=$caseheurefin-$caseheuredeb;
return($lgplage);
}
Ensuite j'ai une fonction qui me crée une ligne d'un tableau.
Son fonctionnement : on va récupérer dans la BD, toutes les réservations de plage horraire qui ont été faite pour la ligne en question (qui dépend donc de la salle etc...). Ensuite, tant qu'il y a des réservations, ou qu'on a pas encore mis toutes les cellules dans la ligne, on continue la boucle. Donc pour chaque case, on test si la case en question correspond au début d'une plage horraire réservée, si ce n'est pas le cas, on ajoute une cellule vide à la ligne, et on passe au numéro de cellule suivante. Si c'est le cas, on calcule la durée de la plage horraire, on fait passer cette durée comme variable du colspan de la cellule qu'on va créer en conséquence. Ensuite on ajoute au numéro de case de la cellule actuelle, la longueur de la cellule qu'on vient d'ajouter, afin de continuer la boucle à partir de la fin de la cellule qu'on vient d'ajouter. Ainsi de suite jusqu'a la fin de la ligne.
static function creeLigne($numsalle,$jour,$numsemaine)
{
$i=1;
$sql = "SELECT * FROM reservationedt WHERE jour='$jour' AND numsemaine='$numsemaine' AND numsalle='$numsalle' ORDER BY heuredebut";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$row = mysql_fetch_array($req);
echo'<tr><td>'.$numsalle.'</td>';
while($row OR $i<49)
{
while($i!=Edt::conversionHeureCase($row['heuredebut']))
{
echo'<td></td>';
$i=$i+1;
}
$lgplage=Edt::longueurPlage($row['heuredebut'],$row['heurefin']);
echo'<td colspan="'.$lgplage.'"> "'.$row['prenom'].'" <br> <a href="reseredtdet.php5?numreservation='.$row['numreservation'].'">+</a></td>';
$i=$i+$lgplage;
}
echo'</tr>';
}
Voila, ces fonctions sont contenues dans une classe appelée Edt.
J'include ensuite cette classe dans une page dynamique :
<table>
<?php
include 'config.php';
include 'edt.class.php5';
$result=mysql_query("SELECT nomsalle FROM salle ORDER BY nomsalle DESC");
while ($row2 = mysql_fetch_array($result))
{
Edt::creeLigne($row2['nomsalle'],$jour,$numsemaine);
}
?>
</table>
Bon et je crois pas avoir d'erreurs dans mes fonctions que ce soit de synthaxe ou de logique, mais quand j'affiche ma page, on dirait que la boucle de la ligne ne se finit jamais, la page charge indéfiniement, il n'y a que la premiere ligne qui s'affiche (alors qu'il y a une vaingtaine de salles donc une 20aine de ligne a afficher), et au final ca fait bugger le navigateur et je dois le fermer...
J'aimerai donc savoir si vous aviez vu des erreurs notables, si vous voyez d'ou peut venir le probleme...
Si vous avez besoin de plus d'infos n'hésitez pas.
Merci d'avance.
(mon mail :
[email protected])
Bonjour,
Voila, je dois coder un emploi du temps en php, je dois gérer plusieurs salles de cours, et un emploi du temps qui va de 8h à 20h.
Donc je l'ai codé comme suit : j'ai une fonction qui converti les heures en numéro :
[php]static function conversionHeureCase($heure)
{
switch ($heure)
{
case "08h00": $numcase=1; break; case "08h15": $numcase=2; break;
case "08h30": $numcase=3; break; case "08h45": $numcase=4; break;
case "09h00": $numcase=5; break; case "09h15": $numcase=6; break;
case "09h30": $numcase=7; break; case "09h45": $numcase=8; break;
case "10h00": $numcase=9; break; case "10h15": $numcase=10; break;
case "10h30": $numcase=11; break; case "10h45": $numcase=12; break;
case "11h00": $numcase=13; break; case "11h15": $numcase=14; break;
case "11h30": $numcase=15; break; case "11h45": $numcase=16; break;
case "12h00": $numcase=17; break; case "12h15": $numcase=18; break;
case "12h30": $numcase=19; break; case "12h45": $numcase=20; break;
case "13h00": $numcase=21; break; case "13h15": $numcase=22; break;
case "13h30": $numcase=23; break; case "13h45": $numcase=24; break;
case "14h00": $numcase=25; break; case "14h15": $numcase=26; break;
case "14h30": $numcase=27; break; case "14h45": $numcase=28; break;
case "15h00": $numcase=29; break; case "15h15": $numcase=30; break;
case "15h30": $numcase=31; break; case "15h45": $numcase=32; break;
case "16h00": $numcase=33; break; case "16h15": $numcase=34; break;
case "16h30": $numcase=35; break; case "16h45": $numcase=36; break;
case "17h00": $numcase=37; break; case "17h15": $numcase=38; break;
case "17h30": $numcase=39; break; case "17h45": $numcase=40; break;
case "18h00": $numcase=41; break; case "18h15": $numcase=42; break;
case "18h30": $numcase=43; break; case "18h45": $numcase=44; break;
case "19h00": $numcase=45; break; case "19h15": $numcase=46; break;
case "19h30": $numcase=47; break; case "19h45": $numcase=48; break;
case "20h00": $numcase=49; break;
}
return($numcase);
}[/php]
Ensuite j'ai une fonction qui me calcule la longueur d'une plage horraire :
[php]static function longueurPlage($heuredeb,$heurefin)
{
$caseheuredeb=Edt::conversionHeureCase($heuredeb);
$caseheurefin=Edt::conversionHeureCase($heurefin);
$lgplage=$caseheurefin-$caseheuredeb;
return($lgplage);
}
[/php]
Ensuite j'ai une fonction qui me crée une ligne d'un tableau.
Son fonctionnement : on va récupérer dans la BD, toutes les réservations de plage horraire qui ont été faite pour la ligne en question (qui dépend donc de la salle etc...). Ensuite, tant qu'il y a des réservations, ou qu'on a pas encore mis toutes les cellules dans la ligne, on continue la boucle. Donc pour chaque case, on test si la case en question correspond au début d'une plage horraire réservée, si ce n'est pas le cas, on ajoute une cellule vide à la ligne, et on passe au numéro de cellule suivante. Si c'est le cas, on calcule la durée de la plage horraire, on fait passer cette durée comme variable du colspan de la cellule qu'on va créer en conséquence. Ensuite on ajoute au numéro de case de la cellule actuelle, la longueur de la cellule qu'on vient d'ajouter, afin de continuer la boucle à partir de la fin de la cellule qu'on vient d'ajouter. Ainsi de suite jusqu'a la fin de la ligne.
[php]static function creeLigne($numsalle,$jour,$numsemaine)
{
$i=1;
$sql = "SELECT * FROM reservationedt WHERE jour='$jour' AND numsemaine='$numsemaine' AND numsalle='$numsalle' ORDER BY heuredebut";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$row = mysql_fetch_array($req);
echo'<tr><td>'.$numsalle.'</td>';
while($row OR $i<49)
{
while($i!=Edt::conversionHeureCase($row['heuredebut']))
{
echo'<td></td>';
$i=$i+1;
}
$lgplage=Edt::longueurPlage($row['heuredebut'],$row['heurefin']);
echo'<td colspan="'.$lgplage.'"> "'.$row['prenom'].'" <br> <a href="reseredtdet.php5?numreservation='.$row['numreservation'].'">+</a></td>';
$i=$i+$lgplage;
}
echo'</tr>';
} [/php]
Voila, ces fonctions sont contenues dans une classe appelée Edt.
J'include ensuite cette classe dans une page dynamique :
[php]<table>
<?php
include 'config.php';
include 'edt.class.php5';
$result=mysql_query("SELECT nomsalle FROM salle ORDER BY nomsalle DESC");
while ($row2 = mysql_fetch_array($result))
{
Edt::creeLigne($row2['nomsalle'],$jour,$numsemaine);
}
?>
</table>[/php]
Bon et je crois pas avoir d'erreurs dans mes fonctions que ce soit de synthaxe ou de logique, mais quand j'affiche ma page, on dirait que la boucle de la ligne ne se finit jamais, la page charge indéfiniement, il n'y a que la premiere ligne qui s'affiche (alors qu'il y a une vaingtaine de salles donc une 20aine de ligne a afficher), et au final ca fait bugger le navigateur et je dois le fermer...
J'aimerai donc savoir si vous aviez vu des erreurs notables, si vous voyez d'ou peut venir le probleme...
Si vous avez besoin de plus d'infos n'hésitez pas.
Merci d'avance.
(mon mail :
[email protected])