fonction perso foireuse

fonction perso foireuse - PHP - Programmation

Marsh Posté le 01-09-2004 à 08:41:56    

BOnjour,
 
j'ai ce bout de code:

Code :
  1. function check_date($date0, $checkdateok)
  2. {
  3. $date0 = substr($date0, 6, 4)."-".substr($date0, 3,2)."-".substr($date0, 0,2);
  4. if((ereg("^([0-9]){4}([-])([0-9]){2}([-])([0-9]){2}$", $date0)) AND (substr($date0, 3,2) <= 12 ) AND (substr($date0, 0,2) <= 31))
  5. {
  6. echo "ok"."<br>";
  7. $checkdateok++;
  8. return ($checkdateok);
  9. }
  10. }
  11. $checkdateok = 0;
  12. check_date($_POST['date_debut'], $checkdateok);
  13. /*check_date($_POST['date_fin']);
  14. check_date($_POST['date_ultime_commande']);
  15. check_date($_POST['date_ultime_payement']);
  16. check_date($_POST['date_ultime_validation']);
  17. check_date($_POST['date_envois']) ;
  18. */
  19. echo "checkdateok : ".$checkdateok."<br><br>";


 
Qui m'affiche :

Code :
  1. ok
  2. checkdateok : 0


 
Je ne comprends pas pourquoi il n'incrémente pas $checkdateok.
 
quelqu'un peut m'éclairer ?
 
Merci

Reply

Marsh Posté le 01-09-2004 à 08:41:56   

Reply

Marsh Posté le 01-09-2004 à 08:46:26    

faire un return sans rien mettre pour le recevoir voila qqch de particulièrement utile :gratgrat:


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 01-09-2004 à 08:48:01    

Peux-tu préciser ce qu'il faudrait en plus ?
 
Merci

Reply

Marsh Posté le 01-09-2004 à 08:49:55    

affecte ce que retourne ton check_date :o
ta variable ne se modifie pas par l'opération du saint esprit :o
 
(est ce que PHP est ton premier langage de prog ? [:cupra])


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 01-09-2004 à 08:55:50    

Oui, PHP est mon premier langage de prog.
 
MAIS, l'opérateur d'affectation n'est-il pas "=" ?
 
rien n'y fait pourtant quand à la place de "$checkdateok++;"
 
je mets "$checkdateok = $checkdateok+1;"
 
tu pourrais me dire la ligne précise que je dois ajouter ?
 
Merci


Message édité par momo194 le 01-09-2004 à 08:56:18
Reply

Marsh Posté le 01-09-2004 à 09:10:29    

lis ça : http://www.nexen.net/docs/php/anno [...] values.php
 
pour voir comment bien utiliser une fonction (et sa valeur de retour) si tu piges pas reviens voir ici :)


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 01-09-2004 à 09:13:57    

Merci, all works perfect

Reply

Marsh Posté le 17-09-2004 à 15:25:01    

Pour rappel, c'est parce que ta variable dans ton prgm principal porte le même nom que le paramètre d'une de tes fonctions que c'est la même variable...


Message édité par rufo le 17-09-2004 à 15:26:12
Reply

Marsh Posté le 17-09-2004 à 15:43:18    

rufo a écrit :

Pour rappel, c'est parce que ta variable dans ton prgm principal porte le même nom que le paramètre d'une de tes fonctions que c'est la même variable...


 
 [:burtonsnowboard]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 17-09-2004 à 16:08:40    

C'est pas gégé d'utiliser les mêmes noms de variables partout...

Reply

Marsh Posté le 17-09-2004 à 16:08:40   

Reply

Marsh Posté le 17-09-2004 à 19:20:39    

Soit tu passes ta variable en global, soit tu affectes le retour de fonction.
 
Une variable à l'intérieur d'une fonction est isolée jusqu'à preuve explicite du contraire... donc dans ton prog $toto est différent du $toto qui se trouverait dans function my_func($toto).
 
Donc soit tu fais :

Code :
  1. function check_date($date0)
  2. {
  3. global $checkdateok;
  4. $date0 = substr($date0, 6, 4)."-".substr($date0, 3,2)."-".substr($date0, 0,2);
  5. if((ereg("^([0-9]){4}([-])([0-9]){2}([-])([0-9]){2}$", $date0)) AND (substr($date0, 3,2) <= 12 ) AND (substr($date0, 0,2) <= 31))
  6. {
  7. echo "ok"."<br>";
  8. $checkdateok++;
  9. }
  10. }
  11. $checkdateok = 0;
  12. check_date($_POST['date_debut']);
  13. echo "checkdateok : ".$checkdateok."<br><br>";


si c'est pour utiliser la variable chckdate de façon cumulative tout au long de ton programme.
soit si c'est ponctuel et unique, tu peux faire comme ça ( toto permettant de faire l'incrément au besoin ):
 

Code :
  1. function check_date($date0, $toto)
  2. {
  3. $date0 = substr($date0, 6, 4)."-".substr($date0, 3,2)."-".substr($date0, 0,2);
  4. if((ereg("^([0-9]){4}([-])([0-9]){2}([-])([0-9]){2}$", $date0)) AND (substr($date0, 3,2) <= 12 ) AND (substr($date0, 0,2) <= 31))
  5. {
  6. echo "ok"."<br>";
  7. $toto++;
  8. return ($toto);
  9. }
  10. }
  11. $checkdateok = 0;
  12. $checkdateok = check_date($_POST['date_debut'], $toto);
  13. echo "checkdateok : ".$checkdateok."<br><br>";


 
 
 
EDIT :
Dans la version 2, tu peux aussi faire  
$checkdateok = check_date($_POST['date_debut'], $checkdateok );  
ou  
$checkdateok = check_date($_POST['date_debut'], $ma_variable_a_moi );  
ca deviendra quand même $toto une fois dans la fonction :)


Message édité par Snoopy71 le 17-09-2004 à 19:22:33
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed