Navigation : Forums > Forum Général > Ajout de fonctions à script existant

Pages : 1 2 > Poster un nouveau sujet Ajouter un message
Auteur Message
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 14/04/2004 à 15:54:31 Message N°1 #
Salut à tous!

J'ai récupéré un bout de code sur le net pour faire un calendrier. J'aimerais bricoler un peu de code mais je n'arrive pas à trouver comment afficher seulement 28 ou 30 jours selon le mois... Si quelqu'un a une piste ou deux à me donner ce serait sympa.

Voilà le code:


$month = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet",
"août", "septembre", "octobre", "novembre", "décembre");


if(empty($mois)) $mois = date("n");
if(empty($annee)) $annee = date("Y");
if(empty($jour)) $jour = date("d");

$nbre_jours = date("t", $sec);

if($mois > 12) $mois = $mois-12;
if($mois < 1) $mois = $mois+12;

$jour_num = date("w", mktime(0,0,0,$mois,01,$annee));
if($jour_num == 0) $jour_num = 7;


echo "<font face=\"verdana\" color=\"white\" size=\"2\">";
if($mois == 1) $mois_av = 12;
else $mois_av = $mois-1;
echo " <a class=\"lienblanc\" href=\"index.php?jour=".$jour;
echo "&mois=".$mois_av."&annee=".$annee."\">-</a> n";
echo $month[$mois-1];


if($mois == 12) $mois_ap = 1;
else $mois_ap = $mois+1;
echo " <a class=\"lienblanc\" href=\"index.php?jour=".$jour;
echo "&mois=".$mois_ap."&annee=".$annee."\"> +</a><br><a class=\"lienblanc\" ";
echo "href=\"index.php?jour=".$jour."&mois=".$mois."&annee=";
echo ($annee-1)."\">-</a>".$annee."<a class=\"lienblanc\" ";
echo "href=\"index.php?jour=";
echo $jour."&mois=".$mois."&annee=".($annee+1)."\">+</a></font>n</td>n </tr>n";

echo "<tr><td width=\"40\" align=\"center\"><font face=\"verdana\" size=\"2\" ";
echo "color=\"white\">lun</font></td><td width=\"40\" align=\"center\">";
echo "<font face=\"verdana\" size=\"2\" color=\"white\">mar</font></td>";
echo "<td width=\"40\" align=\"center\"><font face=\"verdana\" size=\"2\" ";
echo "color=\"white\">mer</font></td><td width=\"40\" align=\"center\">";
echo "<font face=\"verdana\" size=\"2\" color=\"white\">jeu</font></td>";
echo "<td width=\"40\" align=\"center\"><font face=\"verdana\" size=\"2\" ";
echo "color=\"white\">ven</font></td><td width=\"40\" align=\"center\">";
echo "<font face=\"verdana\" size=\"2\" color=\"white\">sam</font></td>";
echo "<td width=\"40\" align=\"center\"><font face=\"verdana\" size=\"2\" ";
echo "color=\"white\">dim</font></td></tr>n<tr>n";





$case = 0;

if($jour_num != 1)
{
while($jour_num > 1)
{
echo "<td width=\"40\">&nbsp;</td>n";
$jour_num--;
$case++;
}
}

for($u = 1; $u <= $nbre_jours; $u++)
{
if($u == $jour)
{
echo "<td width=\"20\" align=\"center\" bgcolor=\"white\"><font ";
echo "face=\"verdana\" color=\"#336699\" size=\"2\">".$u."</font></td>n";
}
else
{
echo "<td width=\"40\" align=\"center\"><font face=\"verdana\" ";
echo "color=\"white\" size=\"2\"><a class=\"lienblanc\" ";
echo "href=\"index.php?jour=";
echo $u."&mois=".$mois."&annee=".$annee."\">".$u."</a></font></td>n";
}
if(is_integer(($case+$u)/7) && $u < $nbre_jours)
echo "</tr>n<tr>n";
}

while(!is_integer(($case+$u-1)/7))
{
echo "<td width=\"40\">&nbsp;</td>n";
$u++;
}



Merci d'avance et a plus!
Profil Citer
loranger

Messages : 392
Inscrit le : 04/04/2002
Posté le 14/04/2004 à 17:56:42 Message N°2 #
date("t", $timestamp);
te renvoie le nombre de jour du mois en question...
Profil Citer
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 14/04/2004 à 22:34:47 Message N°3 #
Ca marche, je vais creuser dans cette direction! Merci beaucoup! =D


En passant, votre site est vraiment top. C'est vraiment une référence pour moi dans les sites php. Tout est toujours expliqué très simplement, j'adore!
Profil Citer
renaud

Messages : 321
Inscrit le : 10/05/2002
Posté le 15/04/2004 à 10:45:27 Message N°4 #
y a aussi la fonction cal_days_in_month
Profil Citer
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 22/04/2004 à 10:59:42 Message N°5 #
Impec' c'est terminé, merci à tous!!
Profil Citer
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 23/04/2004 à 10:17:40 Message N°6 #
Non, c'est pas fini en fait. J'ai une erreur que je n'arrive pas à virer: Undefined variable: _server. J'ai réussi à corriger toutes les autres quand je suis passé de easyphp 1.6 à 1.7 avec les histoires de variables à déclarer... :-/

enfin, bref, celle-ci je n'y arrive pô!!

Voilà le bout de code incriminé!



if(!isset($_server)){
$_server = $_server['php_self'];
}



en fait je me sers de $_server['php_self'] pour la navigation dans le script. je pourrais mettre directement le nom de la page, mais vu qu'elle va probablement bouger plusieurs fois, j'ai préféré utiliser $_server['php_self'].

Voilà!
Profil Citer
maverick

maverick

Messages : 619
Inscrit le : 04/04/2002
Posté le 23/04/2004 à 16:11:54 Message N°7 #
essaie plutôt :
$_SERVER['PHP_SELF']

en majuscule
____________________
image
Profil Citer
renaud

Messages : 321
Inscrit le : 10/05/2002
Posté le 23/04/2004 à 19:08:36 Message N°8 #
Mais à l'origine la variable $_SERVER est un tableau qui contient un certain nombre d'informations ... Alors si tu fais l'affectation
$_SERVER = $_SERVER['PHP_SELF'];
la variable ne sera plus un tableau et tu vas écraser toutes les autres informations ...
Profil Citer
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 26/04/2004 à 10:04:49 Message N°9 #
C vrai, mais je ne vois pas vraiment comment faire...
Mais maintenant que ce problème est réglé, j'ai un souci.
Lorsque l'on navigue dans le calendrier, des valeurs sont passées dans l'url. c'est pourquoi j'ai ajouté

$mois = $_GET['mois'];
$jour = $_GET['jour'];
$annee = $_GET['annee'];

dans ma page. Tout fonctionne mais lorsque je reviens à l'index, ou lorsque je lance la page:

Notice: Undefined index: mois in... car évidememment aucune valeur n'est envoyé.

Le mystère, quoi...

@+
Profil Citer
loranger

Messages : 392
Inscrit le : 04/04/2002
Posté le 26/04/2004 à 13:31:30 Message N°10 #
Et bien tout simplement en vérifiant si la variable en question existe :
if( isset($_GET['mois']) ){
$mois = $_GET['mois'];
} else {
$mois = valeur_par_defaut;
}[/quote]
ou encore, de façon plus condensée :
[quote]$mois = (isset($_GET['mois'])) ? $_GET['mois'] : date("m");
Profil Citer

Navigation : Forums > Forum Général > Ajout de fonctions à script existant

Pages : 1 2 > Poster un nouveau sujet Ajouter un message


Se rendre directement sur le forum :