Calendrier lié à une table

Signaler
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007
-
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007
-
Bonjour à tous.

J'aimerai lier mon calendrier en php avec ma table qui contient des évenements. C'est à dire que lorsque l'utilisateur clique sur un jour une page doit s'afficher . En clair le jour clique doit etre recherché dans la table.

Merci

16 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut,



si tu nous montrais ton code qui affiche le calendrier (le mois ou la
semaine en cours) ça serait pas mal, car nous ne sommes pas devins :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

// numéro du mois


$m = isset($_GET['m']) ? $_GET['m'] : date('m');


// exclure les valeurs en dehors de [ 1 , 12 ]


$m %= 12;


if ($m 0) $m 12;


// numéro de l'année


$a = (int) ( isset($_GET['a']) ? $_GET['a'] : date('Y') );


// exclure les années < 1970


if ($a<1970) $a=1970;


// timestamp du 1er du mois à minuit une


$t = mktime(0, 0, 1, $m, 1, $a);


// nombre de jours dans ce mois


$nj = date('t', $t);


// n° du premier jour du mois: on décale le résultat anglais (premier=0=dimanche) pour obtenir premier=1=lundi


$j = date('w', $t);


if ($j==0) $j = 7; // dimanche=7


else $j = $j; // lundi=1 ... samedi=6


// nombre d'espaces à laisser vides avant le premier jour du mois = numéro du jour - 1


$sb = $j - 1;


// nombre de lignes au total dans la table


// sachant qu'il faut placer AU MOINS $nj+$sb cases, et qu'on a 7 colonnes


$nl = ceil(($nj+$sb)/7);


// pré-remplissage de la table avec des cases vides (0) partout


$tb = array_fill(0,$nl,array_fill(1,7,'&nbsp;'));


// remplissage avec les n° de jours, en sautant les $sb premières cases


for ($i=1; $i<=$nj; $i++) {


$ligne = floor(($i+$sb-1)/7);


$colonne = ($i+$sb-1)%7 + 1;


$tb[$ligne][$colonne] = $i;


}
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
dans ton code tu affiches bien le calendrier quelque part non ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

<HTML>


<HEAD>


</HEAD>


<?php


$m_loc = array(


1=>'Janvier',


2=>'F
évrier',


3=>'Mars',


4=>'Avril',


5=>'Mai',


6=>'Juin',


7=>'Juillet',


8=>'Août',


9=>'Septembre',


10=>'Octobre',


11=>'Novembre',


12=>'Décembre'


);


// numéro du mois


$m = isset($_GET['m']) ? $_GET['m'] : date('m');


// exclure les valeurs en dehors de [ 1 , 12 ]


$m %= 12;


if ($m 0) $m 12;


// numéro de l'année


$a = (int) ( isset($_GET['a']) ? $_GET['a'] : date('Y') );


// exclure les années < 1970


if ($a<1970) $a=1970;


// timestamp du 1er du mois à minuit une


$t = mktime(0, 0, 1, $m, 1, $a);


// nombre de jours dans ce mois


$nj = date('t', $t);


// n° du premier jour du mois: on décale le résultat anglais (premier=0=dimanche) pour obtenir premier=1=lundi


$j = date('w', $t);


if ($j==0) $j = 7; // dimanche=7


else $j = $j; // lundi=1 ... samedi=6


// nombre d'espaces à laisser vides avant le premier jour du mois = numéro du jour - 1


$sb = $j - 1;


// nombre de lignes au total dans la table


// sachant qu'il faut placer AU MOINS $nj+$sb cases, et qu'on a 7 colonnes


$nl = ceil(($nj+$sb)/7);


// pré-remplissage de la table avec des cases vides (0) partout


$tb = array_fill(0,$nl,array_fill(1,7,'&nbsp;'));


// remplissage avec les n° de jours, en sautant les $sb premières cases


for ($i=1; $i<=$nj; $i++) {


$ligne = floor(($i+$sb-1)/7);


$colonne = ($i+$sb-1)%7 + 1;


$tb[$ligne][$colonne] = $i;


}


// mois précédent


$m_prec = $m==1 ? 12 : $m-1;


$a_prec = $m==1 ? $a-1 : $a;


// mois suivant


$m_suiv = $m==12 ? 1 : $m+1;


$a_suiv = $m==12 ? $a+1 : $a;


// jour en cours (pour surligner la case correspondante)


// -1 si mois != mois en cours ou année != année en cours


$jc = $a==date('Y') && $m==date('m') ? date('d') : -1;


?>


<?php if ($m>1||$a>1970) { ?>&m=<?=$m_prec?>">&lt;<?php } ?>

<?=$m_loc[$m]?> <?=$a?>

&m=<?=$m_suiv?>">&gt; |

----

Lun |

Mar |

Mer |

Jeu |

Ven |

Sam |

Dim |

<?php foreach ($tb as $l) { ?>

----

<?php foreach ($l as $c) { ?>

<?php } ?>><? =$c?>,

<?php } ?>

<?php } ?>



</HTML>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
<HTML>



<HEAD>



</HEAD>



<?php



$m_loc = array(



1=>'Janvier',



2=>'Février',



3=>'Mars',



4=>'Avril',



5=>'Mai',



6=>'Juin',



7=>'Juillet',



8=>'Août',



9=>'Septembre',



10=>'Octobre',



11=>'Novembre',



12=>'Décembre'



);



// numéro du mois



$m = isset($_GET['m']) ? $_GET['m'] : date('m');



// exclure les valeurs en dehors de [ 1 , 12 ]



$m %= 12;



if ($m 0) $m 12;



// numéro de l'année



$a = (int) ( isset($_GET['a']) ? $_GET['a'] : date('Y') );



// exclure les années < 1970



if ($a<1970) $a=1970;



// timestamp du 1er du mois à minuit une



$t = mktime(0, 0, 1, $m, 1, $a);



// nombre de jours dans ce mois



$nj = date('t', $t);



// n° du premier jour du mois: on décale le résultat anglais (premier=0=dimanche) pour obtenir premier=1=lundi



$j = date('w', $t);



if ($j==0) $j = 7; // dimanche=7



else $j = $j; // lundi=1 ... samedi=6



// nombre d'espaces à laisser vides avant le premier jour du mois = numéro du jour - 1



$sb = $j - 1;



// nombre de lignes au total dans la table



// sachant qu'il faut placer AU MOINS $nj+$sb cases, et qu'on a 7 colonnes



$nl = ceil(($nj+$sb)/7);



// pré-remplissage de la table avec des cases vides (0) partout



$tb = array_fill(0,$nl,array_fill(1,7,'&nbsp;'));



// remplissage avec les n° de jours, en sautant les $sb premières cases



for ($i=1; $i<=$nj; $i++) {



$ligne = floor(($i+$sb-1)/7);



$colonne = ($i+$sb-1)%7 + 1;



$tb[$ligne][$colonne] = $i;



}



// mois précédent



$m_prec = $m==1 ? 12 : $m-1;



$a_prec = $m==1 ? $a-1 : $a;



// mois suivant



$m_suiv = $m==12 ? 1 : $m+1;



$a_suiv = $m==12 ? $a+1 : $a;



// jour en cours (pour surligner la case correspondante)



// -1 si mois != mois en cours ou année != année en cours



$jc = $a==date('Y') && $m==date('m') ? date('d') : -1;



?>



<gras><?php if ($m>1||$a>1970) { ?>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

le lien sur les jours du calendrier marche. Je vais maintenant faire le code machin .php qui va afficher la page.

Merci
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Tu peux cliquer sur "réponse acceptée" stp ?



j'ai pas corrigé le reste de ton script mais bon y'aurait des améliorations à effectuer au niveau portabilité.



a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

oui mais j'ai encore une question dans mon calendrier les liens matérialisés par un - se retrouvent dans les cases vide de mon calendrier. Comment faire pour les enlever

ma table evenement contient les champs
id,
type_evenement
lieu
début_evenement
fin_evenement
description

je sais que machin.php doit etre un script qui va aller chercher par exemple la date 18 septembre 2005 qui sera dans le champ fin_evenement. Sinon j'afficherai pas d' évenement.

je n'ai pas bien compris ce que tu as fait ici

<?php
if($c= =$jc)
{
echo '[machin.php?jour=',$c,' ',$c,' ]';
}
else
{
echo '[machin.php?jour =',$c,' ',$c,']';
}
}
}
?>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
bah pour chaque jour du mois j'ai ajouté un lien puisque ta question
originelle était "C'est à dire que lorsque l'utilisateur clique sur un
jour une page doit s'afficher"

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

je vous que je t'embete merci tu m'as déjà trop aidé

A+
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
non c'est pas ça, mais bon tu me poses une question j'y ai répondu, si après t'as un autre problème essaie d'être plus clair...



" les liens matérialisés par un - se retrouvent dans les cases vide de mon calendrier"



j'ai rien compris

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

voici ce que j'ai dans le calendrier

- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
...
ceux sont les liens en rouges que j'aimerai enlever
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
heu bah


if($c= =$jc)
{
echo '[machin.php?jour=',$c,' ',$c,' ]';
}
elseif(is_numeric($c))
{
echo '[machin.php?jour =',$c,' ',$c,']';
}
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

Cool, cela marche.

Par ailleurs seule la date courante de mon calendrier affiche les évenements qui sont dans ma table. Exemple auj'8 c'est le 18 quand je clique sur le 19 j'aimerai voir tout ce qui est proposé pour cette date.

voici mon code


<?php


$BD_serveur = "localhost";


$BD_utilisateur = "root";


$BD_motDePasse = "";


$BD_base = "mabase";


$description = isset($_POST["description"]) ? $_POST["description"] : "";


$typevent = isset($_POST["typevent"]) ? $_POST["typevent"] : "";


@mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)


or die("Impossible de se connecter au serveur de bases de donn
ées.");


@mysql_select_db($BD_base)


or die("Impossible de se connecter à la base de données.");


$requete = "SELECT * FROM Table" ;




$result = mysql_query($requete);


echo' <CENTER>AGENDA DES EVENEMENTS</CENTER> ';


echo'<HR>';


echo'</HR>';




while ($enreg = @mysql_fetch_array($result)) {




// Si une ligne a été trouvée c'est que le couple


// (identifant, mot de passe) est valide


echo'';

echo '----
';

echo 'DESCRIPTION, ';

echo ''.$enreg['description'].', ';

echo ', ';

echo '';

echo '----
';

echo 'LIEU, ';

echo ''.$enreg['lieu'].', ';

echo 'Le , ';

echo ''.$enreg['finevent'].', ';

echo '';

echo '----
';

echo 'DEBUT INSCRIPTION, ';

echo ''.$enreg['debutevent'].', ';

echo '';

echo '
'."\n";


echo'<HR>';


echo'</HR>';


}


?>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Je comprends pas ton problème, mais j'aimerais plutôt que de te faire
tout le code que tu recherches un peu, t'as vu comment j'ai fait pour
mettre un lien pour les jours, je pense pas que tu auras de problème
pour gérer une action en fonction du jour :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

J'ai pas pu régler mon problème après de longue recherche