Calendrier lié à une table

01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007 - 17 sept. 2005 à 19:12
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007 - 24 sept. 2005 à 22:23
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

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 sept. 2005 à 20:51
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>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
17 sept. 2005 à 20:59
// 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;


}
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 sept. 2005 à 21:05
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>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
17 sept. 2005 à 21:17
<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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 sept. 2005 à 21:37
<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>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
17 sept. 2005 à 22:06
le lien sur les jours du calendrier marche. Je vais maintenant faire le code machin .php qui va afficher la page.

Merci
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 sept. 2005 à 22:07
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>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
17 sept. 2005 à 22:42
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,']';
}
}
}
?>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 sept. 2005 à 22:44
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>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
17 sept. 2005 à 23:06
je vous que je t'embete merci tu m'as déjà trop aidé

A+
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 sept. 2005 à 23:08
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>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
17 sept. 2005 à 23:35
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
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 sept. 2005 à 00:01
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>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
18 sept. 2005 à 13:47
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>';


}


?>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 sept. 2005 à 19:10
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>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 22:23
J'ai pas pu régler mon problème après de longue recherche
0
Rejoignez-nous