IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Notice: Undefined index


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Par défaut Notice: Undefined index
    Bonjour à tous.
    j'ai un problème avec le calendrier que j'ai introduit dans mon application.

    chaque fois que je charge la page le message suivant s'affiche au dessus du calendrier:

    Notice: Undefined index: m in C:\Program Files\EasyPHP 2.0b1\www\CRTV\calendrier.php on line 13
    Notice: Undefined index: y in C:\Program Files\EasyPHP 2.0b1\www\CRTV\calendrier.php on line 13

    Le calendrier s'affiche normalement et quand je clique sur le mois suivant le message au dessus disparait. J'ai essayé de resoudre ce problème en utilisant la fonction if (isset...) mais le message persiste. Je ne sais donc pas pourquoi. Soit j'utilise mal la fonction ou alors il ya un autre problème que je ne vois pas. Voici le code du calendrier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    87
    88
    89
    90
    91
    92
    93
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Calendrier</title>
           <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="elements/designCalendrier.css" />
       </head>
       <body>
     
     
    <?php
    	// Si on ne rꤵp鳥 rien dans l'url, on prends la date du jour
    	if(!$_GET['m'] && !$_GET['y'])	$timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
    	// Sinon on rꤵp鳥 la date donnꥍ
    	else $timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);
     
    	// === Si le mois correspond au mois actuel et l'annꥠaussi, on retient le jour actuel pour le griser plus tard (sinon le jour actuel ne se situe pas dans le mois)
    	if(date('m', $timestamp) == date('m') && date('Y', $timestamp) == date('Y')) $coloreNum = date('d');
     
    	$m = array("01" => "Janvier", "02" => "Février", "03" => "Mars", "04" => "Avril", "05" => "Mai", "06" => "Juin", "07" => "Juillet", "08" => "Août", "09" => "Septembre", "10" => "Octobre",  "11" => "Novembre", "12" => "Décembre");
    	$j = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
     
    	$numero_mois = date('m', $timestamp);
    	$annee = date('Y', $timestamp);
     
    	if($numero_mois == 12)
    	{
    		$annee_avant = $annee;
    		$annee_apres = $annee + 1;
    		$mois_avant = $numero_mois - 1;
    		$mois_apres = 01;
    	}
    	elseif($numero_mois == 01) {
    		$annee_avant = $annee - 1;
    		$annee_apres = $annee;
    		$mois_avant = 12;
    		$mois_apres = $numero_mois + 1;
    	}
    	else {
    		$annee_avant = $annee;
    		$annee_apres = $annee;
    		$mois_avant = $numero_mois - 1;
    		$mois_apres = $numero_mois + 1;
    	}
     
    	// 0 => Dimanche, 1 => Lundi, 2 = > Mardi...
    	$numero_jour1er = date('w', $timestamp);
     
    	// Changement du num곯 du jour car l'array commence ࡬'indice 0
    	if ($numero_jour1er == 0) $numero_jour1er = 6; // Si c'est Dimanche, on le place en 6鮥 position (apr鳠samedi)
    	else $numero_jour1er--; // Sinon on mets lundi ࠰, Mardi ࠱, Mercredi ࠲...
    	?>
    	<table id="tableCalendrier">
    		<caption><?php echo '<a href="?m='.$mois_avant.'&amp;y='.$annee_avant.'" title="Mois précedent"><<</a>  '.$m[$numero_mois].' '.$annee.'  <a href="?m='.$mois_apres.'&amp;y='.$annee_apres.'" title="Mois suivant">>></a>'; ?></caption>
    		<tr><th>Lu</th><th>Ma</th><th>Me</th><th>Je</th><th>Ve</th><th>Sa</th><th>Di</th></tr>
    	<?php
    		// Ecriture de la 1鳥 ligne
    		echo '<tr>';
    			// Ecriture de colones vides tant que le mois ne dꮡrre pas
    			for($i = 0 ; $i < $numero_jour1er ; $i++) {		echo '<td></td>';	}
    			for($i = 1 ; $i <= 7 - $numero_jour1er; $i++) {	
    				echo '<td><div class="';
    				if(isset($coloreNum) && $coloreNum == $i) echo 'lienCalendrierJour">';
    				else echo 'lienCalendrier">';
    				echo'<a href="planningeneral.php?jour='.$i.' &amp; mois='.$numero_mois.' &amp; annee='.$annee.'" title="Voir le planning général de ce jour">'.$i.'</a></div></td>';	
    			}
    		echo '</tr>';
     
    		$nbLignes = ceil((date('t', $timestamp) - ($i-1))/ 7); // Calcul du nombre de lignes ࡡfficher en fonction de la 1鳥 (surtout pour les mois a 31 jours)
     
    		for($ligne = 0 ; $ligne < $nbLignes ; $ligne++) {
    			echo '<tr>';
    			for($colone = 0 ; $colone < 7 ; $colone++) {
    				if($i <= date('t', $timestamp))	{
    					echo '<td><div class="';
    					if(isset($coloreNum) && $coloreNum == $i) echo 'lienCalendrierJour">';
    					else echo 'lienCalendrier">';
    					echo'<a href="planningeneral.php?jour='.$i.' &amp; mois='.$numero_mois.' &amp; annee='.$annee.'" title="Voir le planning général de ce jour">'.$i.'</a></div></td>';
    				}
    				else {
    					echo '<td></td>';
    				}
    				$i = $i +1;
    			}
    			echo '</tr>';
    		}
    	?>
     
    	</table>
     
       </body>
    </html>
    J'attend vos propositions.

  2. #2
    Membre éprouvé
    Avatar de flo.87
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut
    Je pense que tu peux regarder du côté de 'array_key_exists' pour savoir si ton tableau '$_GET' contient ou non les index 'm' et 'y'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (array_key_exists('m', $_GET){...
    Voici la doc de la fonction : http://fr3.php.net/function.array_key_exists

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 37
    Par défaut
    si ça existe ou n'existe pas je fais quoi?
    j'ai jeté un coup d'oeil à cette fonction et à premiere vu je n'y comprend pas grand chose.
    je vais le regarder à tête reposer. Merci

  4. #4
    Membre éprouvé
    Avatar de flo.87
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 77
    Par défaut
    En fait je te propose de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!$_GET['m'] && !$_GET['y'])
        $timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
    else
        $timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(array_key_exists('m', $_GET) && array_key_exists('y', $_GET))
        $timestamp = mktime(0, 0, 0, $_GET['m'], 1, $_GET['y']);
    else
        $timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
    Comme ça, tu t'assures que les valeurs 'm' et 'y' sont bien dans le tableau $_GET avant de les utiliser.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    essaye plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!@$_GET['m'] && !@$_GET['y']) $timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
    En effet, a l'ouverture de ta page, les parametres m et y ne sont pas encore envoyés via l'URL.
    l'URL affiche : .../calendrier.php

    Dès que tu cliques sur un autre mois (par exemple), le probleme disparait car l'URL affiche : .../calendrier.php?m=....&y=....

    L' @ permet de "passer au dessus" du probleme (a l'ouverture de la page) en n'affichant pas de message d'erreur.

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/04/2007, 10h01
  2. Notice: Undefined index method post
    Par vanou dans le forum Langage
    Réponses: 8
    Dernier message: 07/03/2007, 09h33
  3. Pb erreur Notice: Undefined index: pseudo
    Par PAINCO dans le forum Langage
    Réponses: 15
    Dernier message: 19/02/2007, 18h20
  4. Notice: Undefined index
    Par abusatif dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2007, 09h03
  5. Réponses: 9
    Dernier message: 01/05/2006, 00h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo