Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/05/2011, 22h34   #1
Nouveau Membre du Club
 
Homme
Inscription : avril 2009
Messages : 169
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Arts - Culture

Informations forums :
Inscription : avril 2009
Messages : 169
Points : 37
Points : 37
Par défaut Calendrier

Bonjour à tous !
Je travaille depuis quelques temps sur un calendrier

En fait, je ne comprends pas vraiment le code qui génère le calendrier (je le remets en bas de mon message) ; du coup je ne suis pas capable de voir ce qui donne le nom du mois en cours. Par ailleurs, je ne sais pas sélectionner des enregistrements pour lesquels la date (qui est bien au format DATE de MySQL dans ma petite base) inclus un mois qui est le même que le mois affiché dans le calendrier.
Désolé, c'est sans doute une question très simple, mais je suis archi débutant en PHP et MySQL !
Merci d'avance pour votre aide !!!

Voici le code du calendrier. Il était lié par l'auteur du message de départ de ce sujet :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
//Creating general vars
$year = date("Y");
if(!isset($_GET['month'])) $monthnb = date("n");
else {
    $monthnb = $_GET['month'];
    $year = $_GET['year'];
    if($monthnb <= 0) {
        $monthnb = 12;
        $year = $year - 1;
    }
    elseif($monthnb > 12) {
        $monthnb = 1;
        $year = $year + 1;
    }
}
$day = date("w");
$nbdays = date("t", mktime(0,0,0,$monthnb,1,$year));
$firstday = date("w",mktime(0,0,0,$monthnb,1,$year));
 
//Replace the number of the day by its french name
$daytab[1] = 'Lu';
$daytab[2] = 'Ma';
$daytab[3] = 'Me';
$daytab[4] = 'Je';
$daytab[5] = 'Ve';
$daytab[6] = 'Sa';
$daytab[7] = 'Di';
 
//Build the calendar table
$calendar = array();
$z = (int)$firstday;
if($z == 0) $z =7;
for($i = 1; $i <= ($nbdays/5); $i++){
    for($j = 1; $j <= 7 && $j-$z+1+(($i*7)-7) <= $nbdays; $j++){
        if($j < $z && ($j-$z+1+(($i*7)-7)) <= 0){
                $calendar[$i][$j] = null;
        }
        else {
            $calendar[$i][$j] = $j-$z+1+(($i*7)-7);            
        }
    }
}
 
//Replace the number of the month by its french name
switch($monthnb) {
    case 1: $month = 'Janvier'; break;
    case 2: $month = 'Fevrier'; break;
    case 3: $month = 'Mars'; break;
    case 4: $month = 'Avril'; break;
    case 5: $month = 'Mai'; break;
    case 6: $month = 'Juin'; break;
    case 7: $month = 'Juillet'; break;
    case 8: $month = 'Août'; break;
    case 9: $month = 'Septembre';    break;
    case 10: $month = 'Octobre'; break;
    case 11:    $month = 'Novembre';    break;
    case 12:    $month = 'Décembre';    break;
}
?>
<div id="calendrier">
    <table>
        <tr>
            <th><span class="linkcal"><a href="index.php?month=<?php echo $monthnb - 1; ?>&year=<?php echo $year; ?>"><<</a></span></th>
            <th colspan="5" class="headcal"><?php echo($month.' '.$year);  ?></th>
            <th><span class="linkcal"><a href="index.php?month=<?php echo $monthnb + 1; ?>&year=<?php echo $year; ?>">>></a></span></th>
        </tr>
        <?php
            echo('<tr>');
            for($i = 1; $i <= 7; $i++){
                echo('<th>'.$daytab[$i].'</th>');
            }
            echo('</tr>');
            for($i = 1; $i <= count($calendar); $i++) {
                echo('<tr>');
                for($j = 1; $j <= 7 && $j-$z+1+(($i*7)-7) <= $nbdays; $j++){
                    if($j-$z+1+(($i*7)-7) == date("j") && $monthnb == date("n") && $year == date("Y")) 
                    	echo('<th class="current">'.$calendar[$i][$j].'</th>');
                    else 
                    	echo('<th class="jour">'.$calendar[$i][$j].'</th>');
                }
                echo('</tr>');
            }
        ?>
    </table>
</div>
Celadon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 18h51   #2
Nouveau Membre du Club
 
Homme
Inscription : avril 2009
Messages : 169
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Arts - Culture

Informations forums :
Inscription : avril 2009
Messages : 169
Points : 37
Points : 37
Bonsoir à tous !
J'ai bien avancé ! J'aurais dû penser à chercher en anglais, j'ai trouvé comment récupérer les éléments d'un moi
J'arrive aussi à récupérer les deux chiffres du jour, avec un
Code :
$jour_event = substr($cemois['event_date'], 8, 2);
.
Mais j'ai quand même un problème ! Voici un gros bout de code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$event_mois = mysqli_query($lien, "SELECT * FROM events WHERE YEAR(event_date) = '$a' AND MONTH(event_date) = '$m' ORDER BY event_date");
 
while ($ligne = mysqli_fetch_array($event_mois))
{
	$cemois[] = array('event_date' => $ligne['event_date'],
				'event_descr'  => $ligne['event_descr']);
}
foreach ($cemois as $ce_mois):
	$jour_event = substr($cemois['event_date'], 8, 2);
	echo '<i>' . $jour_event . '</i><br>';
 
	while ($ligne = mysqli_fetch_array($event_mois))
	{
		$jour_event_mois[$jour_event] = $ligne['events.id'];
	}
	foreach ($jour_event_mois as $jour_mois):
		echo $jour_mois;
	endforeach;
	echo $ce_mois['event_date'] . '<br>';
endforeach;
Or la ligne "echo $jour_mois;", bah elle echo rien du tout Et je ne comprends pas
C'est justement là que j'essaie ce qui a été dit plus haut
Je précise à tout hasard que je fais mes tests $a = 2011 et $m= 05 (c'est-à-dire : ce mois-ci) et que j'ai deux évènements (enregistrements de la table "events") pour ce mois.
Merci d'avance si vous pouvez m'aider !
Celadon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 22h04   #3
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Enlève les guillemets et utilise bien l'entier 5 et non une chaine '05'
Code :
$event_mois = mysqli_query($lien, "SELECT * FROM events WHERE YEAR(event_date) = $a AND MONTH(event_date) = $m ORDER BY event_date");
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h02.


 
 
 
 
Partenaires

Hébergement Web