pb pr l affichage des absences ds mon planning

WoBy
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 08:43

Salutation
Apres que j'arrive a afficher les rdv ds mon planning je m'attak aux absences. Comme pr les rdv, je vai chercher ca ds mes tables mais ensuite des que jveu afficher ca ds mes cellules tout bug.
Il faut rajouter un if pr les ABS mais bon ca seré cool si kelk1 m'aidait car jfai la meme chose que pr les RDv mais ca foire.
Merci


<!-- On construit et génère le tableau -->
<table width="100%" height="75%" border="6" cellpadding="5" cellspacing="2" table background="images/fond2.gif">
<tr><th width="10%">
<?
//La base de données
$jour=Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi");
//initialiser les RDV et leurs durées (à rien et 0 heure par défaut)
for ($c=0; $c<10; $c++) for ($j=0; $j<5; $j++) $RDV [$c][$j] = ".";
for ($c=0; $c<10; $c++) for ($j=0; $j<5; $j++) $durées_RDV [$c][$j] = 0;

//On affiche l'entête du tableau (Les jours)
for ($j=0; $j<5; $j++) {
?>
<th width="18%" class="colonnetableau">
<?
$aWeek=$vsem; $aYear=$van;
for ($aDay=0;$aDay<5;$aDay++) {
$adate=datefromweeknr($aYear, $aWeek, $aDay+1);
if ($j==$aDay) {
echo "$jour[$j]";
$datentete = date('Y-m-d',$adate);
echo ' '.date('d-m-Y',$adate).'<br>';

require('config/myConnexion.php');
require('config/connect.php');

$query2 = 'SELECT libelle_rdv as lib, heure_deb, heure_fin, date FROM rendezvous, avoir WHERE avoir.code_rdv=rendezvous.code_rdv AND code_util="'.$vnom.'" and date="'.$datentete.'"';
$result2 = mysql_query ($query2) or die (" La requête pour la recherche des rendez-vous a échouée ");
while ($row_Resul2=mysql_fetch_assoc($result2)) {
if ($row_Resul2['date'] == $datentete) {
$c = $row_Resul2['heure_deb']-8 ;
$j = $aDay;
$RDV [$c][$j] = $row_Resul2['lib'];
$durées_RDV [$c][$j] = $row_Resul2['heure_fin']-$row_Resul2['heure_deb']; }
}
mysql_close();

require('config/myConnexion.php');
require('config/connect.php');

$query3 = 'SELECT motif as lib, duree, date FROM absence, etre WHERE etre.code_abs=absence.code_abs AND code_util="'.$vnom.'" and date="'.$datentete.'"';
$result3 = mysql_query ($query3) or die (" La requête pour la recherche des absences a échouée ");
while ($row_Resul3=mysql_fetch_assoc($result3)) {
if ($row_Resul3['date'] == $datentete) {
$ABS [$c][$j] = $row_Resul3['lib'];
$j = $aDay;
if ($row_Resul3['duree'] == "Matinee") { $c = 0 ; $durées_ABS [$c][$j] = 5;}
if ($row_Resul3['duree'] == "Apres_midi") { $c = 5 ; $durées_ABS [$c][$j] = 5;}
if ($row_Resul3['duree'] == "Journee") { $c = 0 ; $durées_ABS [$c][$j] = 10;}

}
}
mysql_close();}
}
}

//En suite on affiche les 10 lignes correspondants aux crénneaux allant de 8H à 18H
//Les 8 crénneau peuvent être calculés automatiquement à partir de 8H
$hd = 8; //Heure de départ des crénneaux d'un jour
for ($c=0; $c<10 ; $c++){
//La première colonne de la ligne contient le crénneau calculé à partir de $hd
?>
<tr>
<th width="10%" class="lignetableau">
<?
//La durée affichée d'un crénneau est toujour 1 heure
$hf = $hd +1; //par exemple $hf contient 9H si $hd contient 8H
echo "$hd"."H"." à "."$hf"."H";

//Préparer le crénneau suivant
$hd += 1;

//La deuxieme partie de la ligne affichée contient les RDV des 5 jours
for ($j=0; $j<5 ; $j++){
//Attention: ne pas créer de céllule si le crénneau précédent l'a déjà consommée à cause d'une durée qui dépasse 1 heure
//$c : le n° du crénneau et $j celui du jour du RDV
if (!($c>0 && $durées_RDV[$c-1][$j]>0)) {
//la céllule qui s'affiche peut consommer plusieurs lignes selon la durée du RDV planifié (c'est ROWSPAN qui s'en charge)
//BGCOLOR permet de peindre le fond si le RDV existe
//COLOR change de couleur de texte si le RDV existe

?>
<td valign="middle" align="center" width="18%" rowspan=<? echo $durées_RDV[$c][$j]; ?>
bgcolor="<? echo $durées_RDV[$c][$j]>0?"silver":""; ?>" color="<? echo $RDV[$c][$j]=="."?"":"red"; ?>">
<?
echo $RDV[$c][$j];
}//fin if
}//fin for $j
}//fin for $c
?>
</table>

Eléphant du PHP | 281 Messages

12 mai 2005, 08:45

Bonjour wobby, met ton code entre balise [ PHP ] [ / PHP] la prochaine fois c'est relou du lire du code noir, en attendant je vais le faire et lire ton code;), rajoute le message d'erreur que tu recoi s'il te plait ca nous aiderai ;)
<!-- On construit et génère le tableau -->
<table width="100%" height="75%" border="6" cellpadding="5" cellspacing="2" table background="images/fond2.gif">
<tr><th width="10%">
<?
//La base de données
$jour=Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi");
//initialiser les RDV et leurs durées (à rien et 0 heure par défaut)
for ($c=0; $c<10; $c++) for ($j=0; $j<5; $j++) $RDV [$c][$j] = ".";
for ($c=0; $c<10; $c++) for ($j=0; $j<5; $j++) $durées_RDV [$c][$j] = 0;

//On affiche l'entête du tableau (Les jours)
for ($j=0; $j<5; $j++) {
?>
<th width="18%" class="colonnetableau">
<?
$aWeek=$vsem; $aYear=$van;
for ($aDay=0;$aDay<5;$aDay++) {
$adate=datefromweeknr($aYear, $aWeek, $aDay+1);
if ($j==$aDay) {
echo "$jour[$j]";
$datentete = date('Y-m-d',$adate);
echo ' '.date('d-m-Y',$adate).'<br>';

require('config/myConnexion.php');
require('config/connect.php');

$query2 = 'SELECT libelle_rdv as lib, heure_deb, heure_fin, date FROM rendezvous, avoir WHERE avoir.code_rdv=rendezvous.code_rdv AND code_util="'.$vnom.'" and date="'.$datentete.'"';
$result2 = mysql_query ($query2) or die (" La requête pour la recherche des rendez-vous a échouée ");
while ($row_Resul2=mysql_fetch_assoc($result2)) {
if ($row_Resul2['date'] == $datentete) {
$c = $row_Resul2['heure_deb']-8 ;
$j = $aDay;
$RDV [$c][$j] = $row_Resul2['lib'];
$durées_RDV [$c][$j] = $row_Resul2['heure_fin']-$row_Resul2['heure_deb']; }
}
mysql_close();

require('config/myConnexion.php');
require('config/connect.php');

$query3 = 'SELECT motif as lib, duree, date FROM absence, etre WHERE etre.code_abs=absence.code_abs AND code_util="'.$vnom.'" and date="'.$datentete.'"';
$result3 = mysql_query ($query3) or die (" La requête pour la recherche des absences a échouée ");
while ($row_Resul3=mysql_fetch_assoc($result3)) {
if ($row_Resul3['date'] == $datentete) {
$ABS [$c][$j] = $row_Resul3['lib'];
$j = $aDay;
if ($row_Resul3['duree'] == "Matinee") { $c = 0 ; $durées_ABS [$c][$j] = 5;}
if ($row_Resul3['duree'] == "Apres_midi") { $c = 5 ; $durées_ABS [$c][$j] = 5;}
if ($row_Resul3['duree'] == "Journee") { $c = 0 ; $durées_ABS [$c][$j] = 10;}

}
}
mysql_close();}
}
}

//En suite on affiche les 10 lignes correspondants aux crénneaux allant de 8H à 18H
//Les 8 crénneau peuvent être calculés automatiquement à partir de 8H
$hd = 8; //Heure de départ des crénneaux d'un jour
for ($c=0; $c<10 ; $c++){
//La première colonne de la ligne contient le crénneau calculé à partir de $hd
?>
<tr>
<th width="10%" class="lignetableau">
<?
//La durée affichée d'un crénneau est toujour 1 heure
$hf = $hd +1; //par exemple $hf contient 9H si $hd contient 8H
echo "$hd"."H"." à "."$hf"."H";

//Préparer le crénneau suivant
$hd += 1;

//La deuxieme partie de la ligne affichée contient les RDV des 5 jours
for ($j=0; $j<5 ; $j++){
//Attention: ne pas créer de céllule si le crénneau précédent l'a déjà consommée à cause d'une durée qui dépasse 1 heure
//$c : le n° du crénneau et $j celui du jour du RDV
if (!($c>0 && $durées_RDV[$c-1][$j]>0)) {
//la céllule qui s'affiche peut consommer plusieurs lignes selon la durée du RDV planifié (c'est ROWSPAN qui s'en charge)
//BGCOLOR permet de peindre le fond si le RDV existe
//COLOR change de couleur de texte si le RDV existe

?>
<td valign="middle" align="center" width="18%" rowspan=<? echo $durées_RDV[$c][$j]; ?>
bgcolor="<? echo $durées_RDV[$c][$j]>0?"silver":""; ?>" color="<? echo $RDV[$c][$j]=="."?"":"red"; ?>">
<?
echo $RDV[$c][$j];
}//fin if
}//fin for $j
}//fin for $c
?>
</table>

WoBy
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 08:53

Je ne possède pas de msg d'erreur, mais mes redv et abs s'affichent n'importe. Completment a droite et en dehors de mon planning, des petites cellules apparaissent avec certains de mes rdv et abs.

Eléphant du PHP | 281 Messages

12 mai 2005, 08:57

A vu de nez, j'ai l'impression que tu ne ferme pas tes balises, regarde ici :
<td valign="middle" align="center" width="18%" rowspan=<? echo $durées_RDV[$c][$j]; ?>
bgcolor="<? echo $durées_RDV[$c][$j]>0?"silver":""; ?>" color="<? echo $RDV[$c][$j]=="."?"":"red"; ?>">
<?
echo $RDV[$c][$j];
}//fin if
}//fin for $j
}//fin for $c
?>
</table>
il n'y a pas de fin de TD donc cela peu poser des soucis déjà et fermer le TR aussi avant d efermé le table !

WoBy
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 09:16

Non ca marche bien, ce n'est pas un pb de balises car les rdv sont bien affichés. Mais des ke jrajoute une condition if pr les absences comme pour les rdv, preske tout s'affiche a droite en dehors du planning

Eléphant du PHP | 281 Messages

12 mai 2005, 09:18

une bonne méthode de debugage c'est de prendre firefox, et tu fais afficher le code de ta page generé
et tu regarde pkoi certains sont a l'exterieur dans ton code
ca t'aidera a cibler le soucis d'affichage, je peux pas t'aider plus que ca dans ces cas là dsl :oops:

WoBy
Invité n'ayant pas de compte PHPfrance

12 mai 2005, 09:29

Bah j essaye avec IE et Mozilla et c'est le meme pb AIE
:cry:
Merci kand meme

Eléphant du PHP | 281 Messages

12 mai 2005, 09:36

lol ta pas compris ce que je voulais dire... Je t'ai dis de prendre Firefox pke il colorise le code donc plus lisible ;) pour faire du debugage de code avec le navigateur, enfaite tu fais afficher la source sur la page generé ou tu vois les bug et tu regarde le code correspondant tu vera plus clairement les erreurs