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

Langage PHP Discussion :

Fonction aussi basique que récalcitrante !


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut Fonction aussi basique que récalcitrante !
    Bonjour

    Cette fonction est aussi simple que son dysfonctionnement est imprévu.

    Voici donc le message d'erreur (merci Mathieu) correspondant sans initialisation :
    Notice: Undefined variable: nom_jour in .../... on line 43

    Sachant qu'avec la variable $nom_jour initialisée, je n'ai plus aucun message d'erreur, et cela donne :
    Indice du nom du premier jour du mois de janvier 2021 : 5
    Ma fonction traitant le chiffre 5 retourne par conséquent le jour correspondant à :


    En ligne juste au dessus, vous pouvez observer que la fonction ne retourne rien du tout

    Voici mon code :


    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
    <?php
    	ini_set("display_errors", TRUE);
    	error_reporting(E_ALL);
     
    	//=============================================================================//
    	// Retourne l'indice du nom du premier jour du mois
    	function start_month($date_month, $date_year) 
    	{
    		//return date("d/m/Y",mktime(0,0,0,$date_month,01,$date_year)); 
    		return date("N",mktime(0,0,0,$date_month,01,$date_year)); 
    	}
    	/*
    		$decalage = date("w"); // Pour savoir quel jour de la semaine on est de 1 à 7
    		echo 'decalage : ' .$decalage;
    		on stocke le jour de la semaine dans la variable $decalage
    		w, Correspond au jour de la semaine au format numérique. 0 (dimanche) à 6 (samedi)
    		$decalage = date("w");
    	*/
     
     
    	echo 'Indice du nom du premier jour du mois de janvier 2021 : <strong> ' .start_month(01, 2021). '</strong>';
    	//=============================================================================//	
     
    	$nom_jour = start_month(01, 2021); 
     
    	/*
    		Cela retourne un entier compris entre 1 et 7  
    		representant un jour de la semaine :
    		1 pour lundi
    		2 pour mardi
    		3 pour mercredi
    		4 pour jeudi
    		5 pour vendredi
    		6 pour samedi
    		7 pour dimanche 
    	 */	
     
    	function get_nom_jour()
    	{
    		// Initialisation afin de ne plus avoir de message d'erreur
    		$nom_jour = 0;
     
    		if ($nom_jour == 1)
    		{
    			return 'lundi';
    		}
    		elseif ($nom_jour == 2)
    		{
    			return 'mardi';
    		}	
    		elseif ($nom_jour == 3)
    		{
    			return 'mercredi';
    		}	
    		elseif ($nom_jour == 4)
    		{
    			return 'jeudi';
    		}	
    		elseif ($nom_jour == 5)
    		{
    			return 'vendredi';
    		}	
    		elseif ($nom_jour == 6)
    		{
    			return 'samedi';
    		}	
    		elseif ($nom_jour == 7)
    		{
    			return 'dimanche';
    		}		
    	}
     
    	echo '<br /> Ma fonction traitant le chiffre <strong>' .$nom_jour. '</strong> retourne par conséquent le jour correspondant à : <strong> ' .get_nom_jour(). '</strong>'; 
    ?>
    Merci de toute idée.

    DS7

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 724
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 724
    Par défaut
    le message indique une variable non initialisé parce que la variable que vous voulez lire n'existe pas dans la fonction. (peut-être que vous avez l'habitude de cela en JavaScript ?)

    en PHP vous devez faire quelque chose de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    function get_nom_jour($la_valeur_dans_la_fonction) {
     
        echo $la_valeur_dans_la_fonction; // affiche "45"
     
    }
     
     
    $une_autre_variable = 45;
    get_nom_jour($une_autre_variable);

  3. #3
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    Mathieu,

    Ça je le subodorais mais en me disant que PHP est très souple et pas de variable à initialiser systématiquement ni de typage à se préoccuper par rapport à Delphi famille Pascal

    Je vais regarder ça tranquillement tout à l'heure merci !

    DS7

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 020
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 020
    Par défaut
    Je ne sais pas trop ce que tu cherches à faire, mais à ta place je jetterais un œil sur ce que les fonctions de manipulations de dates permettent de faire. (pour un même timestamp, strftime peut indifféremment donner le nom d'un jour de la semaine en toutes lettres ou son numéro correspondant à sa position dans la semaine).

    Aussi d'une manière générale, lorsque tu te retrouves à faire des if elseif à la queue-leu-leu en testant des valeurs consécutives, c'est le signe que c'est plus vite fait avec un tableau et ces indices:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function get_nom_jour($num) {
        static $jours = ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'];
        return $jours[$num%7];
    }
    ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function get_nom_jour($num) {
        static $jours = ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'];
        return $jours[$num];
    }

  5. #5
    Membre Expert
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 288
    Par défaut
    CosmoKnacki



    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
    	function get_nom_jour($num) 
    	{
    		static $jours = ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'];
    		return $jours[$num%7];
    	}
     
     
    	/*
    	function get_nom_jour($num) 
    	{
    		static $jours = ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche'];
    		return $jours[$num];
    	}
    	*/
     
    	echo 'Sur 4, la fonction donne : ' . get_nom_jour(7); // Dimanche = ok !
    C'est pas juste : ma fonction à côté ne vaut pas un pet de lapin et ira droit aux orties

    Ça marche trop bien, merci, affaire résolue !

    Merci à Tous.

    DS7

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 31
    Dernier message: 22/04/2014, 14h55
  2. Passage d'une fonction en tant que paramètre
    Par bagnolm dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2006, 15h58
  3. Réponses: 2
    Dernier message: 19/05/2006, 18h42
  4. Rave 6.5 BE...aussi puissant que les états Access ?
    Par Mustard007 dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/02/2006, 21h36

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