Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passer une variable dans une fonction

Sujet résolu
    18 janvier 2018 à 16:33:43

    Bonjour ou rebonjour^^

    je me trouve confronter à un problème pour importer une variable dans ma fonction. 

    j'ai un fichier fonction.php qui contient la fonction suivante 

    <?php
    
    
    /**
    	* Cette fonction retourne un tableau de timestamp correspondant
    	* aux jours fériés en France pour une année donnée.
    	*/
    		$dateag='2018-12-25';
    		
    	function isNotWorkable($date)
    	{
     
    	  	if ($date === null)
    	  	{
    	    	$date = time();
    	  	}
    		
    		global $dateag;
    	
    	 	$date = strtotime($dateag);
     
    	 	$year = date('Y',$date);
     
    		$easterDate  = easter_date($year);
    		$easterDay   = date('j', $easterDate);
    		$easterMonth = date('n', $easterDate);
    		$easterYear   = date('Y', $easterDate);
     
    		$holidays = array(
    	    // Dates fixes
    	    mktime(0, 0, 0, 1,  1,  $year),  // 1er janvier
    	    mktime(0, 0, 0, 5,  1,  $year),  // Fête du travail
    	    mktime(0, 0, 0, 5,  8,  $year),  // Victoire des alliés
    	    mktime(0, 0, 0, 7,  14, $year),  // Fête nationale
    	    mktime(0, 0, 0, 8,  15, $year),  // Assomption
    	    mktime(0, 0, 0, 11, 1,  $year),  // Toussaint
    	    mktime(0, 0, 0, 11, 11, $year),  // Armistice
    	    mktime(0, 0, 0, 12, 25, $year),  // Noel
     
    	    // Dates variables
    	    mktime(0, 0, 0, $easterMonth, $easterDay + 1,  $easterYear),
    	    mktime(0, 0, 0, $easterMonth, $easterDay + 39, $easterYear),
    	    mktime(0, 0, 0, $easterMonth, $easterDay + 50, $easterYear),
    		);
     
      	return in_array($date, $holidays);
    	
    	}
    ?>
    	
    
    
    <?php
        if(isNotWorkable(time())){
    	$ferie=1; //Si férié
        }else{
    	$ferie=0; //Si jour travaillé
        }
    	
    ?>

    Si je le lance j'ai mon echo qui m'affiche 1 car le 25-12-2018 est férié et 0 si je mets une date d'un jour non férié. La fonction comme elle est là fonctionne très bien.

    J'ai ensuite créé un fichier test.php et je voudrais importer ma variable $dateag depuis ce fichier php (j'ai supprimé $dateag='2018-12-25'; du fichier fonction.php)

    include 'fonction.php';
    
    $dateag='2018-12-25';
    
    isNotWorkable($date,$dateag); //Fonction de verification jour ferié
    
    echo $ferie;
    

    J'ai testé en mettant dans mon fichier test.php:

    isNotWorkable($date,$dateag)
    isNotWorkable($dateag)
    isNotWorkable($date)
    ...

    ça ne fonctionne pas soit j'ai résultat pour mon echo 0 ou message d'erreur :Warning: Missing argument 2 for isNotWorkable(), called in...


    Quelqu un sait il se que je dois mettre pour passer ma variable $dateag dans ma fonction?

    Merci

    Klorane

    -
    Edité par klorane50 18 janvier 2018 à 16:41:14

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2018 à 16:42:10

      Bonjour,

      Pourquoi passes-tu une date puis deux dans ta fonction ?

      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2018 à 16:49:40

        Car j'ai le bon résultat ^^

        Tu présenterais ça comment? 

        j'ai tellement retourner le truc que je sais meme plus ou taper pour tester

        j'ai testé ça dans le fichier de la fonction. j'ai résultat :0 alors que je devrais avoir 1

        	function isNotWorkable($dateag)
        	{
         
        	  	if ($dateag === null)
        	  	{
        	    	$dateag = time();
        	  	}
        		
        		$date = strtotime($dateag);
         
        	 	$year = date('Y',$date);
         
        		$easterDate  = easter_date($year);
        		$easterDay   = date('j', $easterDate);
        		$easterMonth = date('n', $easterDate);
        		$easterYear   = date('Y', $easterDate);
         
        		$holidays = array(
        	    // Dates fixes
        	    mktime(0, 0, 0, 1,  1,  $year),  // 1er janvier
        	    mktime(0, 0, 0, 5,  1,  $year),  // Fête du travail
        	    mktime(0, 0, 0, 5,  8,  $year),  // Victoire des alliés
        	    mktime(0, 0, 0, 7,  14, $year),  // Fête nationale
        	    mktime(0, 0, 0, 8,  15, $year),  // Assomption
        	    mktime(0, 0, 0, 11, 1,  $year),  // Toussaint
        	    mktime(0, 0, 0, 11, 11, $year),  // Armistice
        	    mktime(0, 0, 0, 12, 25, $year),  // Noel
         
        	    // Dates variables
        	    mktime(0, 0, 0, $easterMonth, $easterDay + 1,  $easterYear),
        	    mktime(0, 0, 0, $easterMonth, $easterDay + 39, $easterYear),
        	    mktime(0, 0, 0, $easterMonth, $easterDay + 50, $easterYear),
        		);
         
          	return in_array($date, $holidays);
        	
        	}



        -
        Edité par klorane50 18 janvier 2018 à 16:52:13

        • Partager sur Facebook
        • Partager sur Twitter
          18 janvier 2018 à 17:10:15

          Non, mais tu déclares une fonction avec une variable en paramètre, tu ne peux pas en passer deux...

          Et ceci retourne bien 1 :

          <?php function isNotWorkable($dateag)
          {
           
              if ($dateag === null)
              {
                  $dateag = time();
              }
               
              $date = strtotime($dateag);
           
              $year = date('Y',$date);
           
              $easterDate  = easter_date($year);
              $easterDay   = date('j', $easterDate);
              $easterMonth = date('n', $easterDate);
              $easterYear   = date('Y', $easterDate);
           
              $holidays = array(
              // Dates fixes
              mktime(0, 0, 0, 1,  1,  $year),  // 1er janvier
              mktime(0, 0, 0, 5,  1,  $year),  // Fête du travail
              mktime(0, 0, 0, 5,  8,  $year),  // Victoire des alliés
              mktime(0, 0, 0, 7,  14, $year),  // Fête nationale
              mktime(0, 0, 0, 8,  15, $year),  // Assomption
              mktime(0, 0, 0, 11, 1,  $year),  // Toussaint
              mktime(0, 0, 0, 11, 11, $year),  // Armistice
              mktime(0, 0, 0, 12, 25, $year),  // Noel
           
              // Dates variables
              mktime(0, 0, 0, $easterMonth, $easterDay + 1,  $easterYear),
              mktime(0, 0, 0, $easterMonth, $easterDay + 39, $easterYear),
              mktime(0, 0, 0, $easterMonth, $easterDay + 50, $easterYear),
              );
           
          return in_array($date, $holidays);
           
          }
          echo isNotWorkable('2018-12-25');



          -
          Edité par philodick 18 janvier 2018 à 17:12:39

          • Partager sur Facebook
          • Partager sur Twitter
            18 janvier 2018 à 17:30:53

            effectivement ça fonctionne cette affaire.

            include 'fonction.php';
            
            $datetest='2018-01-01';
            
            $ferie=isNotWorkable($datetest); //Fonction de verification jour ferié
            
            echo $ferie;

            j'ai bien maintenant 1 si c'est férié

            -
            Edité par klorane50 18 janvier 2018 à 17:49:12

            • Partager sur Facebook
            • Partager sur Twitter
              18 janvier 2018 à 17:50:59

              Écho c'est juste pou afficher le résultat. La tu restes si aujourd'hui est un jour férié. Normal que ca retourne 0
              • Partager sur Facebook
              • Partager sur Twitter
                18 janvier 2018 à 18:00:03

                Merci pour le coup de main ^^

                j'en ai fini avec cette fonction...OUF ^^

                encore merci

                • Partager sur Facebook
                • Partager sur Twitter

                Passer une variable dans une fonction

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown