calendrier par mois

Eléphant du PHP | 62 Messages

24 juil. 2005, 21:33

Salut à tous,

J'aimerais créer un calendrier qui va afficher chaque mois sur ma page mais cela me donne un peu de souci. voici le script :
<?
 
function makeCalendar($month, $year);

$year = (int)($year+($month-1)/12);
$month = (($month-1)%12+1);

$html_code = "<table>";
$html_code = "<tr><th>";
$html_code = getMonth($month,1) . " " . $year;
$html_code = "</th></tr>";
$html_code = "</table>";

echo $html_code;

function getMonth($month, $majuscule=false)
     {
     $mois = array('janvier','février','mars','avril','mai',
     'juin','juillet','août','septembre','octobre','novembre','décembre' );

     if ($majuscule) { return ucfirst($mois[($month-1)%12]); }
     else { return $mois[($month-1)%12]; }
     }


function getDaysNumber($month, $year)
     {
     return date("t", mktime(0,0,0,$month,1,$year));
     }

function getDayOfWeekNumber($day, $month, $year)
     {
     $n = date("w", mktime(0,0,0,$month,1,$year));
     if ($n==0) { $n = 7; }
     return $n;
     }

$html_code = "<table>";
$html_code = "<tr><th colspan=7>";
$html_code = getMonth($month,1) . " " . $year;
$html_code = "</th></tr>";

$x=0;
$j=1;
$daysNumber = getDaysNumber($month,$year);
$firstDayNumber = getDayOfWeekNumber(1,$month,$year);

while ($j<=$daysNumber)
     {
     if ($x%7==0) { echo "<tr>"; }
     if ($j==1)
          {for ($i=1;$i<$firstDayNumber;$i++)
               {
               $html_code = "<td>&nbsp;</td>";
               $x++;
               }
          }
     $html_code = "<td">;

     if (date("j.m.y")==date("j.m.y", mktime(0,0,0,$month,$j,$year)))
          { $html_code = " style=background:red"; }
     $html_code = ">$j</td>";
     $x++;
     if ($x%7==0) { $html_code = "</tr>"; }
     $j++;
     }

$html_code = "</table>";

?>
Quand je l'exécute j'ai ce message
Parse error: parse error, expecting `'{'' in c:\easyphp1-8\www\site\test1.php on line 3

Lorsque j'ajoute { j'ai toujours le même message. Est ce que quelqu'un pourra y jeter un coup de pour me dire où se trouve l'erreur.

Merci

ViPHP
fab
ViPHP | 2657 Messages

24 juil. 2005, 21:57

function makeCalendar($month, $year); 
regarde un peu la doc sur la déclaration et l'utilisation des fonctions :
http://fr.php.net/functions

Eléphant du PHP | 63 Messages

24 juil. 2005, 22:12

Ou regarde plus simplement la manière dont sont déclarées les autres fonctions de ton code. Il y'a une différence entre :
function makeCalendar($month, $year);
Et:
function getMonth($month, $majuscule=false)
     {
[...]
     }

Eléphant du PHP | 58 Messages

25 juil. 2005, 12:17

Ui une fonction se fait toujours de la manière suivante :

function ($variable)
{

contenu

}

(tu peux aussi ne pas mettre de variable ou en mettre plusieurs)

vala :)

(je sais Jawad c'est ce que tu lui a déjà dit mais je lui réexplike pourquoi :))
...come from the pain...

:) I've found my home in the game :)

^^ let's frag ^^

Eléphant du PHP | 62 Messages

27 juil. 2005, 12:32

Bonjour,

Après correction du script suivant vos conseils j'ai ce message :
Notice: Undefined variable: year in c:\easyphp1-8\www\web\calenda11.php on line 59

Notice: Undefined variable: month in c:\easyphp1-8\www\web\calenda11.php on line 59


<? 
 

function makeCalendar($month, $year)
{ 

$year = (int)($year+($month-1)/12);
$month = ($month-1)%12+1;

$html_code = "<table>";
$html_code = "<tr><th>";
$html_code = getMonth($month,1) . " " . $year;
$html_code = "</th></tr>";
$html_code = "</table>";

echo $html_code;
 
} 
function getMonth($month, $majuscule=false)
     {
     $mois = array('janvier','février','mars','avril','mai',
     'juin','juillet','août','septembre','octobre','novembre','décembre' );

     if ($majuscule) { return ucfirst($mois[($month-1)%12]); }
     else { return $mois[($month-1)%12]; }
     }

function getDaysNumber($month, $year)
     {
     return date("t", mktime(0,0,0,$month,1,$year));
     }
function getDayOfWeekNumber($day, $month, $year)
     {
     $n = date("w", mktime(0,0,0,$month,1,$year));
     if ($n==0) { $n = 7; }
     return $n;
     }

$html_code = "<table>";
$html_code = "<tr><th colspan=7>";
$html_code = getMonth($month,1) . " " . $year;
$html_code = "</th></tr>";
$x=0;
$j=1;
$daysNumber = getDaysNumber($month,$year);
$firstDayNumber = getDayOfWeekNumber(1,$month,$year);
while ($j<=$daysNumber)
     {
     if ($x%7==0) { echo "<tr>"; }
     if ($j==1)
          {
for ($i=1;$i<$firstDayNumber;$i++)
               {
               $html_code = "<td>&nbsp;</td>";
               $x++;
               }
          }
     $html_code = "<td";
[u]if (date("j.m.y")==date("j.m.y", mktime(0,0,0,$month,$j,$year)))[/u]          { $html_code = " style=background:red"; }
     $html_code = ">$j</td>";
     $x++;
     if ($x%7==0) { $html_code = "</tr>"; }
     $j++;
     }

$html_code = "</table>";

?> 
Modifié en dernier par Topaze le 27 juil. 2005, 12:55, modifié 1 fois.

Eléphant du PHP | 58 Messages

27 juil. 2005, 12:42

tu aurais pu nous surligner la ligne 59 ou au moins la mettre en gras... non ?

je pense que c'est parce que tu appelles une variable qui n'est pas renseigné.

je suppose que ton erreur est ici :

Code : Tout sélectionner

$html_code = getMonth($month,1) . " " . $year;

$year n'est pas renseigné d'après ce que je peux lire du code.
tu lui donnes une valeur seulement, si tu utilises une fonction, hors ici :
1 - Tu n'utilises pas de fonctions
2 - La fonction getMonth ne charge pas la variable $year.


vala ...

la prochaine fois merci de souligner tes lignes :)
car ligne 59 on sais pas trop ou c'est
...come from the pain...

:) I've found my home in the game :)

^^ let's frag ^^

Eléphant du PHP | 62 Messages

27 juil. 2005, 13:06

Je viens de souligner la ligne 59 :

if (date("j.m.y")==date("j.m.y", mktime(0,0,0,$month,$j,$year)))

Si je reviens sur là où me m'aviez dit qu'il y a une erreur c'est à dire la ligne :
$html_code = getMonth($month,1) . " " . $year;

je ne vois pas comment faire. car quand je fais comme cela

$html_code = getMonth($month,1) . " " . getYear($year); cela ne marche pas.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 juil. 2005, 13:16

C'est un problème de portée des variable. $month et $year existe dans la fonction makeCalendar et toi, tu veux les utiliser dans getMonth

Or les variables locales (celles qu'on utilise toujours) n'ont de portée que la fonction dans laquelle elles sont créés. Même si tu appelle getMonth dans makeCalendar, les variable $month et $year n'existe pas dans getMonth. Si tu veut les utiliser, il faut que tu les passes en paramètres
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 62 Messages

27 juil. 2005, 13:57

Salut,

Zeus je sais que tu ne vas pas le faire à ma place. Peux tu me guider un peu plus car je ne vois pas ce qu'il faut faire. Sois diriges moi vers un site qui pourra m'aider

A+

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

27 juil. 2005, 14:03

Voiçi un résumé de ce que tu as fait
function makeCalendat($month, $year) {
  $var = getMonth($month, 1);
}

getMonth($month, $majuscule=false) {
  if (date("j.m.y")==date("j.m.y", mktime(0,0,0,$month,$j,$year)))
}
les variables $month et $year sont définies dans la fonction makeCalendar, OK ?
Dans cette fonction, tu appelle la fonction getMonth, OK ?

Or, ton erreur vient du fait que tu veux utiliser $year dans la fonction getMonth alors qu'elle n'existe pas dans cette fonction.

Si tu veux pouvoir l'utiliser, il faudrait que tu passes cetta variable en paramètre à getMonth et remplacant
function getMonth($month, $majuscule=false)
par
function getMonth($month, $majuscule=false, $year)
et en appellant cette fonction de cette manière :
$html_code = getMonth($month,1, $year) . " " . $year; 
Est-ce que tu as compris ? Si ce n'est pas le cas, n'hésite pas à reposer des questions.

PS : ma signature ne te concernait pas, enfin pas dans ce post parce que on sait jamais, tu peut (re)passer du côté obscure de la force ... :twisted:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 62 Messages

27 juil. 2005, 17:26

J'ai fait les correction que vous m'aviez indiquée et en excécutant j'ai ce message :
Notice: Undefined variable: month in c:\easyphp1-8\www\web\calenda11.php on line 40

$html_code = getMonth($month,1, $year) . " " . $year;

Notice: Undefined offset: -1 in c:\easyphp1-8\www\web\calenda11.php on line 23

if ($majuscule) { return ucfirst($mois[($month-1)%12]); }

Eléphant du PHP | 58 Messages

28 juil. 2005, 11:39

peut etre car ton $month n'est pas renseigné

jette un coup d'oeil sur mon calendrier sur mon site :)

il est simple et je n'utilise aucune fonction ^^.

en plus il est assez explicite quand tu surf sur les pages, peut etre qu'il pourra t'aider :oops:

(désolé mais les fonctions c'est pas mon fort :oops: , tout ce que je peux éviter comme les fonctions, classes, sessions, je l'évite et perso si tu y arrives vraiment pas et que tu veux finir ton projet, je te conseille la meme chose :), puis par la suite tu peux améliorer avec des fonctions)
...come from the pain...

:) I've found my home in the game :)

^^ let's frag ^^

Eléphant du PHP | 62 Messages

28 juil. 2005, 16:23

salut,

Quel est ton site je ne vois pas de lien dans ta réponse

Eléphanteau du PHP | 12 Messages

23 avr. 2007, 01:34

Bonjour Sadjiro,

En cliquant sur www, j'arrive sur ton site, que je trouve intéressant.
Pour le calendrier, c'est parfait. Mais je ne vois aucune infos sur le code.

Pourrais-tu nous en dire davantage ?

Amitiés, Pierre AP

Mammouth du PHP | 991 Messages

23 avr. 2007, 09:36

Salut a tous, bon ben mois j'utilise beacoup les sessions et je fais mes site uniquement avec des fonctions mais je n'utilise pas de class

Pour le site tu peux chercher de l'aide sur :
le site du zéro
PHP Débutant
ET bien sure sur le site de PHP France ^^
DevOps, Symfony4, Hoa