Probleme avec le calendrier de cobaye

ViPHP
ViPHP | 3607 Messages

05 nov. 2006, 13:59

c'est une partie du code générer, il manque toute la partie des numéros de jours, jeprofite de ce bout de code pour t'expliquer brièvement ce qu'est un élément parent: voici le code indenter à l'extrême:

Code : Tout sélectionner

<table id="tabcalendrier" summary="Calendrier des évènements"> <caption class="calendar-month"> <span class=""> <a href=admin//%22index.php/%22 onClick="go(10,2006); return false;"> <img src=mois_prec.jpg alt="Mois précédent" /> </a> </span> &nbsp;Novembre&nbsp;2006&nbsp; <span class=""> <a href=admin//%22index.php/%22 onClick="go(12, 2006); return false;"> <img src=mois_suiv.jpg alt="Mois suivant" /> </a> </span><br /> <span style='color: black' id="event"> &nbsp; </span> </caption> <thead> <tr> <th abbr="Dimanche">Dim</th> <th abbr="Lundi">Lun</th> <th abbr="Mardi">Mar</th> <th abbr="Mercredi">Mer</th> <th abbr="Jeudi">Jeu</th> <th abbr="Vendredi">Ven</th> <th abbr="Samedi">Sam</th> </tr> </thead>
par exemple içi,

Code : Tout sélectionner

<img src=mois_prec.jpg alt="Mois précédent" />
cette balise <a> à pour éléments parents: span,caption,et table et bien sur mais ça n'est pas visible dans le code, body, html.
Pour mon exemple, mon calendrier est inclus dans un div, qui celui de mon menu, et dans ce div que je déclare la couleur de la police... voilà

Mammouth du PHP | 19672 Messages

05 nov. 2006, 14:02

Le HTML est un langage de structure pour organiser les données dans une page. La scrutre est arborescente.

Si tu mettais le HTML de façon un peu moins fouillis, tu visualiserais notablement mieux :

Code : Tout sélectionner

<table id="tabcalendrier" summary="Calendrier des évènements"> <caption class="calendar-month"> <span class=""><a href="admin/index.php" onClick="go(10,2006); return false;"><img src=mois_prec.jpg alt="Mois précédent" /></a></span> &nbsp;Novembre&nbsp;2006&nbsp; <span class=""><a href="admin/index.php" onClick="go(12, 2006); return false;"><img src=mois_suiv.jpg alt="Mois suivant" /></a></span><br /> <span style='color: black' id="event">&nbsp;</span> </caption> <thead> <tr> <th abbr="Dimanche">Dim</th> <th abbr="Lundi">Lun</th> <th abbr="Mardi">Mar</th> <th abbr="Mercredi">Mer</th> <th abbr="Jeudi">Jeu</th> <th abbr="Vendredi">Ven</th> <th abbr="Samedi">Sam</th> </tr> </thead> <!-- etc... --> </table>
Par exemple, une balise <td> a pour élément parent la balise <tr> et cette dernière a pour élément parent <tbody> ou <table>, etc...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 258 Messages

05 nov. 2006, 14:05

Bon merci pour ces explication, mais je crois que je suis con, je n'arrive meme pas a pige, c'est pas grave je vais faire sans.

Merci

Mammouth du PHP | 19672 Messages

05 nov. 2006, 14:31

Ce n'est pas compliqué, on va prendre le problème dans l'autre sens.

Au départ tu as un élément parent de tout, c'est la fenêtre. le premier élément enfant, c'est <html>

Cet élément a lui-même deux éléments enfants : <head> et <body>
Et ainsi de suite, on descend dans les liens de "parenté" dans body, tu peux avoir plusieurs éléments enfants qui seront alors "éléments frères", par exemple, <h1> et plus loin <p>
Si on s'arrête sur ce dernier élément, la filiation complète sera :
html>body>p

Est-ce que c'est moins obscur comme ça ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 258 Messages

05 nov. 2006, 15:22

Je suis d'accord avec sa, cyrano.
Mais en faite quand je ne fait pas le code moi meme je ne comprend rien.

La, on a une page calendrier.php avec tout un tas de code que j'arrive un peut a comprendre.

Apres vous me parle de CSS, deja du mal avec php, et java vous me rajouter de CSS, puis vous me dite de modifier les element parent,mais ou faut il les modifier dans la page calendrier.php ou dans la page index.php (celle qui include calendrier.php). Donc vous allez me dire si j'ai compris ou pas.

Je ne touche pas a ma page calendrie.php, je vais dans ma page index.php.
La je cré un style comme sa:

Code : Tout sélectionner

.Coulpoljours { color: #0000FF; font-weight: bold; }
et apres :?: puis on include la page calendrier.php a moi que sa se pase avec

Code : Tout sélectionner

<div id="calendrier">
qui se trouve avant include

ViPHP
ViPHP | 3607 Messages

05 nov. 2006, 15:44

Si tu ne touche pas à calendrier.php, le code css que tu donne n'aura aucun effet...
par contre essaye ceci:
#calendrier {
color: red;
background-color: yellow;
font-size: 2em;
}
et tu verras que ta police de caractre à une nouvelle couleur et une nouvelle taille (enfin ça devrait)
après que le tout soit de mauvais gout, je le conçoit :wink:

Eléphant du PHP | 258 Messages

05 nov. 2006, 16:29

Non le mauvais gout c'est que je vous fasse chier avec sa.

Et oui car tu me donne se bout de code mais comme je l'ai dis ou je le met je suis perdu.

Si j'ai bien compris je le met dans la page index.php mais comme il y a #calendrier{} sa le modifier. Puisque je fait appelle a l'affichage du calendrier en faisant

Code : Tout sélectionner

<div id="calendrier">
Est bien sa.

ViPHP
ViPHP | 3607 Messages

05 nov. 2006, 16:39

je croit que tu n'as pas tout saisi, commençons par le début, sans parler du calendrier...
mettons que tu es une page comme celle-ci:

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Titre de la page</title> <style type="text/css"> @import url(styles.css); </style> </head> <body> <h1>un titre</h1> <p>un paragraphe</p> </body> </html>
tu as deux solutions, pour se servir du css, soit, tu fait un fichier à part, avec l'extension .css et tu l'enregistre pas trop loin de ta page, et ensuite, dans la page, tu peux faire un :

Code : Tout sélectionner

<link rel="stylesheet" href="styles.css" type="text/css" />
ou bien un

Code : Tout sélectionner

<style type="text/css"> @import url(styles.css); </style>
donc içi, ce que je t'ai dit d'essayer, tu le mettrai dans le fichier styles.css puis tu enregistre, et tu regarde ce que tu as sur ta page...
essaye d'intégrer un peu ça, essaye de l'appliquer sur ta page qui contient le calendrier et si ça marche toujours pas, revient nous voir, en mettant le code ta page entièrement, ainsi que celui des pages annexes...

Eléphant du PHP | 258 Messages

05 nov. 2006, 18:49

Merci je viend essayer sa me modifie le calendrier.

Donc encore si j'ai bien compris on peut appeler les CSS de deux facon differente soit en mettant le style entre les balises <style type="text/css"> et </style>, soit en enregistrant sur une page .CSS et en l'appellant par

Code : Tout sélectionner

<style type="text/css"> @import url(styles.css); </style>
Donc pour mon calendrier, si je veut changer la couleur des jours de la semaines par exemple c'est la qu'il faut que je mette le style.

met je garde #calendrier {}.

merci je vait essayer d'autres truc et si sa ne marche pas j'appelle au secour

Eléphant du PHP | 258 Messages

06 nov. 2006, 11:43

Bon voila j'ai reussi grace a vous a avoir mon calendrier comme je voulais a part les mois que je n'arrive pas a faire a une taille differente mais sa c'est pas grave,merci encore.

Donc maintenant je suis passé a autre chose avec mon calendrie tout neuf,je suis passé évènements.

J'ai regarder un peut le code de jojolapine est il y a une partie que je ne commprend pas.
while($value=$connec_calendrier->fetchNextRow(MYSQL_ASSOC)) array_push($donnees,$value); 
foreach($donnees as $donnee){ 
    $date=explode(' ',$donnee['date_concert']); 
    $jour=explode('-',$date[0]); 
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]); 
    $calendrier->affec_day( 
                       $jour, 
                       'dates.php?tri='.$date[0], 
                       'eventday', 
                       $donnee['nom_groupe'], 
                       "Nom du groupe: ".$donnee['nom_groupe']."\nSalle: ". 
                       $donnee['salle']."\nHoraire: ".$date[1]); 
C'est celle la que je ne comprend pas, vous allez me dire c'est presque tout et c'est pas faut.

Car moi j'ai une Table 'tagenda' avec 4 champs (IDa,DATEa,TITagenda,TEXagenda) je l'ai tri par dates pour les afficher.

L'utilisateur entre la date de l'evenement ,qui s'enregistre dans la BD.

Et ce que je voudrais faire c'est que cette date soit marque sur le calendrier ou plus exactement que le jour du mois et de l'anné correspondante soit cliclabe, et affiche sur le calendrier a la place deja existante le tritre de l'agenda et quand on clique sur le jour sa va a une page notesAgenda.php.

Une autre question comment fait ton pour supprimer les tests des dates qui sont dans le calendrier.


Merci de votre part.

Eléphant du PHP | 258 Messages

07 nov. 2006, 16:53

Donc j'ai bien regardé le calendrier et c'est sur sa que je doit jouer pour ajouter un jours cliclabe.


Dans la page calendier.php
$jour1 = mktime(0,0,0,9,18,2006);
$jour2 = mktime(0,0,0,9,20,2006);
$calendrier->affec_day($jour1, '#','','test event');
$calendrier->affec_day($jour2, '#','','test event 2');
 function affec_day($day, $link='#', $class='',$titre='')
    {
        if(date('m',$day)==$this->month && date('Y',$day)==$this->year)
        {
            $jour = intval(date('d', $day));
            $lien = '<td'.($class ? ' class="'.htmlspecialchars($class).'">' : '>');
            if(isset($this->day[$jour]))
            {
                $onblur = ("onmouseover=\"document.getElementById('event').innerHTML='Plusieurs évènements ce jour'\" onmouseout=\"document.getElementById('event').innerHTML='".$this->event."'\"");
            }else{
                $onblur = ($titre ? "onmouseover=\"document.getElementById('event').innerHTML='".$titre."'\" onmouseout=\"document.getElementById('event').innerHTML='".$this->event."'\"" : "");
            }
            $lien .= ($link ? '<a href="admin/%27.htmlspecialchars($link).%27" '.$onblur.'>'.$jour.'</a>' : $jour).'</td>';
            $this->day[$jour] = $lien;
        }
    }
Je vais essayer avec le code de jojolapine en modifier un peut mais je ne sait meme pas ou le mettre si c'est dans calendier.php ou index.php

ViPHP
ViPHP | 3607 Messages

11 nov. 2006, 16:39

bonjour,
Bon voila j'ai reussi grace a vous a avoir mon calendrier comme je voulais a part les mois que je n'arrive pas a faire a une taille differente mais sa c'est pas grave,merci encore.

Donc maintenant je suis passé a autre chose avec mon calendrie tout neuf,je suis passé évènements.

J'ai regarder un peut le code de jojolapine est il y a une partie que je ne commprend pas.
while($value=$connec_calendrier->fetchNextRow(MYSQL_ASSOC)) array_push($donnees,$value); 
foreach($donnees as $donnee){ 
    $date=explode(' ',$donnee['date_concert']); 
    $jour=explode('-',$date[0]); 
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]); 
    $calendrier->affec_day( 
                       $jour, 
                       'dates.php?tri='.$date[0], 
                       'eventday', 
                       $donnee['nom_groupe'], 
                       "Nom du groupe: ".$donnee['nom_groupe']."\nSalle: ". 
                       $donnee['salle']."\nHoraire: ".$date[1]); 
C'est celle la que je ne comprend pas, vous allez me dire c'est presque tout et c'est pas faut.

Car moi j'ai une Table 'tagenda' avec 4 champs (IDa,DATEa,TITagenda,TEXagenda) je l'ai tri par dates pour les afficher.

L'utilisateur entre la date de l'evenement ,qui s'enregistre dans la BD.

Et ce que je voudrais faire c'est que cette date soit marque sur le calendrier ou plus exactement que le jour du mois et de l'anné correspondante soit cliclabe, et affiche sur le calendrier a la place deja existante le tritre de l'agenda et quand on clique sur le jour sa va a une page notesAgenda.php.

Une autre question comment fait ton pour supprimer les tests des dates qui sont dans le calendrier.


Merci de votre part.
je vais essayer de t'expliquer comment j'ai procédé...
comme tu as pu t'en rendre compte, la procédure affec_day() affecte un évènement à une date donnée, j'ai donc procédé comme suit:
mes informations sont stockées dans une base de données, je récupère donc ces infos à l'aide d'une classe de connections, c'est peut-être pour cela que tu n'as pas tout compris, mais tu peux faire de même avec des fonctions d'accès au base de données classiques...
donc je reprend, j'ai récupéré mes informations dans un tableau, et ensuite dans une boucle, je parcourt tout le tableau à fin d'affecter une date à chaque évènement.... voilà je sais pas si je suis très clair :? redemande si tu souhaite plus d'informations...

Eléphant du PHP | 258 Messages

11 nov. 2006, 21:16

Merci jojolapine je vait tester tout ca,s'a va me prendre pas mal de temps donc je vous tient au courant

Eléphant du PHP | 258 Messages

10 déc. 2006, 15:49

Salut me revoilà, je vous l'avais dis que je reviendrais.

Bon voila je me suis remis sur le calandrier et voila se que j'ai compris(en commentaire dans le code)
<?php
while($value=$connec_calendrier->fetchNextRow(MYSQL_ASSOC)) array_push($donnees,$value);
// boucle while (pas compris)retourne le nombre element dans le tableau value (je sais pas ce qu'est "donnees,$value);  
foreach($donnees as $donnee){ // boucle foreach (je sais toujours pas) 
    $date=explode(' ',$donnee['date_concert']);// Séparer l'heure et la date($donnee['date_concert'])  
    $jour=explode('-',$date[0]);// Séparer le jour, mois années  
    $jour = mktime(0,0,0,$jour[1],$jour[2],$jour[0]); //Je  sais pas
    $calendrier->affec_day( //appel à la fonction affect_day du fichier calendrier.php 
                       $jour, //ET tou le reste j'ai pas tout compris 
                       'dates.php?tri='.$date[0],  
                       'eventday',  
                       $donnee['nom_groupe'],  
                       "Nom du groupe: ".$donnee['nom_groupe']."\nSalle: ".  
                       $donnee['salle']."\nHoraire: ".$date[1]);

?>
Se que j'ai compris n'est peut etre pas juste, mais pour moi c'est se que j'ai compris :shock:

Je sais pas si vous comprendrais comme sa.
Mais demander je suis là.

Mammouth du PHP | 19672 Messages

10 déc. 2006, 19:42

Explication de texte :
foreach($donnees as $donnee){ // boucle foreach (je sais toujours pas) 
La boucle foreach va, à chaque tour, mettre le pointeur sur une ligne du tableau $donnees

En mettant "as $donnee", on va pointer sur la première dimension du tableau, mais comme on ne sait pas forcément le nom de l'index de cette première dimension, on en prend un comme si on utilisait une variable générique dont la valeur pourra varier à chaque tour.

Ensuite, on utilise $donnee['nom_groupe'] : ça signifie que nous avons en fait affaire à un tableau à deux dimensions : pour chaque ligne de $donnees, $donnee est un tableau aussi ou si tu préfères, un sous-tableau. Donc on en extrait les valeurs en utilisant $donnee['index-recherche'].

Est-ce que tu comprends mieux ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: