calendrier par mois

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : calendrier par mois

par thehawk » 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 ^^

par Pierre AP » 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

calendrier

par Topaze » 28 juil. 2005, 16:23

salut,

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

par sadjiro » 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)

calendrier

par Topaze » 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]); }

par zeus » 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:

par Topaze » 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+

par zeus » 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

calendrier

par Topaze » 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.

par sadjiro » 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

par Topaze » 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>";

?> 

par sadjiro » 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 :))

par Jawad » 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)
     {
[...]
     }

par fab » 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

calendrier par mois

par Topaze » 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