Un petit calendrier light

Eléphant du PHP | 205 Messages

10 mars 2005, 02:59

Je me demandais juste si c'était valide comme code? (en tout cas ça ferait 7 lignes faciles! :wink:
<
?
p
h
p


// contenu...


?
>
Si vous pensez que l'éducation coûte cher, essayez l'ignorance!

hrz
Eléphant du PHP | 52 Messages

10 mars 2005, 18:41

Code : Tout sélectionner

<?php /* 0,10$ < Tarif > 0,15$ */ ?>
et le tarif aussi il est en commentaire :?:

Petit nouveau ! | 1 Messages

20 mars 2005, 15:15

Salut!
Merci de ce code, il correspond exactement qu besoin que j'avais pour envoyer certains parametres de tri dans une requete sans installer une usine a gaz...
j'ai ajouté un ptit truc sympa qui permet de recuperer les variables annee mois et jour ( c'est pas 100% compatible ISO, mais ca suffit pour ce que je veux faire ;-) ):
[php]
<?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,0));

// 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;

?>
<table border="1">
<tr><th align="center" colspan="7">
<?php if ($m>1||$a>1970) { ?><a href="calendrier.php?a=<?=$a_prec?>&m=<?=$m_prec?>"><</a><?php } ?>
<?=$m_loc[$m]?> <?=$a?>
<a href="calendrier.php?a=<?=$a_suiv?>&m=<?=$m_suiv?>">></a>
</th></tr>
<tr>
<th>Lundi</th>
<th>Mardi</th>
<th>Mercredi</th>
<th>Jeudi</th>
<th>Vendredi</th>
<th>Samedi</th>
<th>Dimanche</th>
</tr>
<?php foreach ($tb as $l) { ?>
<tr>
<?php foreach ($l as $c) { ?>
<td <?php
/*
passage en GET de anne mois et jour pour les recuperer dans une page au choix
et ajout d'un test sur la valeur de $c pour eviter l'affichage de date zero clicables
*/
if ($c==$jc) { ?> style="background:#E0E0E0"<?php } ?>><? if ($c!=0){ echo "<a href=\"test.php?a=".$a."&m=".$m."&j=".$c."\">".$c."</a>"; } ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>

[/php]

pmd
Eléphanteau du PHP | 15 Messages

08 mai 2005, 16:27

comment fair pour qu'au lieu qui il ai des zero il y ai un espace ?

ViPHP
fab
ViPHP | 2657 Messages

08 mai 2005, 16:30

 $chaine = str_replace('0',' ',$chaine); 

pmd
Eléphanteau du PHP | 15 Messages

08 mai 2005, 16:34

putain j'avais oublier le _ entre str et replace

pmd
Eléphanteau du PHP | 15 Messages

08 mai 2005, 16:38

par contre ca bug au lieu de mettre un espace ou autre caractere il me met supprime les cases ...
sivous plé

ViPHP
fab
ViPHP | 2657 Messages

08 mai 2005, 16:40

 $chaine = str_replace('0',&nbsp;',$chaine); 
la ça sera un espace insécable

pmd
Eléphanteau du PHP | 15 Messages

08 mai 2005, 16:44

ca fait la meme chose ...
j'ai fait ca pour l'adapter :
$tb = str_replace('0','&nbsp;',$tb);

ViPHP
fab
ViPHP | 2657 Messages

08 mai 2005, 16:47

bah ça doit remplacer les 0 de la chaine $tb en espace insécable, donc apres faut voir ce que tu as mis dans ta chaine $tb

pmd
Eléphanteau du PHP | 15 Messages

08 mai 2005, 16:49

    // pré-remplissage de la table avec des cases vides (59) partout
    $tb = array_fill(0, $nl, array_fill(1,7,0));

    $tb = str_replace('0','5',$tb);