Calendrier en PHP

Yop la zone!

Je dois réaliser un calendrier en PHP, mais je n’ai absolument aucune idée de la manière dont je dois m’y prendre :confused:

En gros, il faudrait que ca se présente comme ceci :


l | m | m | j | v | s | d |

1 | 2 | 3 | 4 | 5 | 6 | 7 |

et que dans les celulles du tableau vienne se mettrent automatiquement (suivant la semaine) la date

Je ne sais pas si je m’exprime correctement, auquel cas j’en suis désolé :stuck_out_tongue:

Merci a ceux qui pourraient m’aider

Si tu ne veux pas trop te casser la tête, il y a un truc tout fait xCalendar (il faut s’inscrire pour telecharger les fichiers) - il suffit de copier l’exemple fournis et c’est bon :stuck_out_tongue:

moi j’ai commencé l’algo pendant mon bac blanc d’allemand, je suis arrivé a la conclusion suivante :

faut faire un tableau ayant pour premiere ligne : ( ex) L M M J V S M
( tu l’aura compris, ton tableau fait 7 colones )
ensuite, un mois fait entre 28 et 31 jours, donc 31/7 ça fait 5.
donc dans tous les cas, tu fait une boucle imbriquée ( tant que ligne <5 { tant que jour < 7 } )
ainsi, tu prendra le jour actuel, division euclidienne pour determiner la semaine dans laquelle on est.

On arrive ainsi dans nos boucles a tester si semaine en cours de tracé = semaine actuel et jour = n°= de jour de la semaine, alors on fais par exemple un soulignage ou une mise en couleur …

j’espere t’avoir eclairé.
plus de details, pm ou ici, au choix.

Si tu veux j’avais réalisé un calendrier. Tu pourras arranger le code à ta guise si je remet la main dessus!

Voila, comme chuis gentil, je viens de programmer un calendrier fonctionnel.

[code]<?php
$year = 2005;
$month = 4;
$space_char = ’ ';
//$space_char = ’ ';

setlocale(LC_ALL, fr_FR);

$string = strftime(’%B, %Y’, mktime(0, 0, 0, $month, 1, $year)) . “

\n”;

$start_day = strftime(’%u’, mktime(0, 0, 0, $month, 1, $year));
$days_in_month = date(‘j’, mktime(0, 0, 0, $month + 1, 0, $year));

for ($i = 2 - $start_day; $i <= 8 - $start_day; $i++)
$string .= ucfirst(strftime(’%a’, mktime(0, 0, 0, $month, $i, $year))) . $space_char;
$string .= “
\n”;

$line_day = $start_day;
$string .= str_repeat($space_char, ($start_day - 1) * 4);

for ($i = 1; $i <= $days_in_month; $i++) {
if ($line_day == 8) {
 $line_day = 1;
 $string .= “
\n”;
}
$string .= $i . str_repeat($space_char, 4 - strlen($i));
$line_day++;
}

echo $string;
?>[/code]

Il faut evidemment utiliser une police a largeur fixe.

Rha merci unreal!!!

Exactement ce que je voulais… sauf que… bah regarde par toe même : http://www.sjattert.info/index.php

Y’a la première ligne qui part un peu en croquette il me semble :stuck_out_tongue:

Voici ton code, modifié par mes soins :

[code]<?php
function calendrier(){
$year = date(« Y »);
$month = date(« m »);
$space_char = ‹  ›;
//$space_char = ’ ';

setlocale(LC_ALL, fr_FR);

$string = "<table><th>".strftime('%B, %Y', mktime(0, 0, 0, $month, 1, $year)) . "</th>\n"; // trois premières lettre du jour

$start_day = strftime('%u', mktime(0, 0, 0, $month, 1, $year));
$days_in_month = date('j', mktime(0, 0, 0, $month + 1, 0, $year));
$string .= "<tr>";
for ($i = 2 - $start_day; $i <= 8 - $start_day; $i++)
$string .= "<td>".ucfirst(strftime('%a', mktime(0, 0, 0, $month, $i, $year)))."</td>";
$string .= "</tr>\n";
$string .= "<tr>";
$line_day = $start_day;
$string .= "<td>".str_repeat($space_char, ($start_day - 1) * 4)."</td>";

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

if ($line_day == 8) {

 $line_day = 1;
 $string .= « \n »;
}
$string .= «  ».$i . str_repeat($space_char, 4 - strlen($i))."";
$line_day++;
}
$string.= «  »;
echo $string;
}
?>[/code]

C’est parce que le mois tient dans 1 seule colonne, remplace par , pour que le nom du mois s’étale sur les 7 colonnes
edit: oué nan pardon j’ai rien dit y a pas que ça :stuck_out_tongue:
il doit falloir remplacer

$string .= "<td>".str_repeat($space_char, ($start_day - 1) * 4)."</td>";

par

for( $j=1; $j<$start_day; $j++ ) { &nbsp; &nbsp; &nbsp; &nbsp;$string .= "<td>&nbsp;</td>"; }

normal …
codé comme ça :stuck_out_tongue:
on voit les haut level :wink:
tain php c’est riche pour les dates quand meme, je m’y paume moi faut que j’aille voir sur php.net a l’occaz
merci aussi pour la source.
Je peux la publier sur mon site ( en disant biensur qu’elle est de toi ) ?
ok j’aurai pu faire ça en privé mais bon …