Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
889 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème pour création de fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème pour création de fonction

n°1260105
mc_cut_kil​ler
Posté le 06-12-2005 à 15:04:41  profilanswer
 

Bonjour,
 
cela fait maintenant quelques mois que je programme sous php. Au fil du temps je me suis rendu compte qu'il serait bien plus efficace de travailler avec des fonctions ... seulement même en lisant des aides je n'arrive pas à les mettre en place  :fou:  
 
Voici un bout de code que j'utilise pour vérifier le format de la date. Je l'ai volontairement coupé en trois cases dans le formulaire jj / mm / aa.
 

Code :
  1. if ($_POST["date_dernier_inventaireJJ"] != "jj" )
  2. {
  3.    if( !ereg("^([0-9])*$", $_POST["date_dernier_inventaireJJ"] . $_POST["date_dernier_inventaireMM"] .    $_POST["date_dernier_inventaireAA"]))
  4.     {
  5.          $mess = "le format de la date du dernier inventaire n'est pas valide, utilisez que des chiffres !";
  6.     }
  7.    
  8.     else
  9.     {    
  10.          $result = checkdate($_POST["date_dernier_inventaireMM"], $_POST["date_dernier_inventaireJJ"], $_POST["date_dernier_inventaireAA"]);
  11.          if( $result == true )
  12.  {
  13.  /* la date est ok on envoie à la bd */
  14. }
  15. else
  16. {
  17.   $mess = "le format de la date du dernier inventaire n'est pas valide";
  18. }
  19.     }    
  20. }


 
Par ce petit script je control d'abord que la date est composée que de chiffres si le champ à été rempli, puis si c'est le cas j'utilise la fonction checkdate pour controler une seconde fois cette date.
 
J'aurais aimez savoir comment réaliser une fonction avec comme paramètres $champ par exemple qui remplacerais tout ce qui se trouve avant JJ / MM / AA (ici date_dernier_inventaire). Puis un second paramètre si possible $DESC pour le message d'érreur, qui serait ici : "du dernier inventaire".
 
Il faudrais donc que la fonction retourne deux valeurs si j'ai bien compris, une pour dire si la syntaxe de la date et correcte puis une autre pour dire si la date est valide...
 
Voila, si quelqu'un peut me filer un coup de main ça serait bien cool  :bounce:

mood
Publicité
Posté le 06-12-2005 à 15:04:41  profilanswer
 

n°1260167
leflos5
On est ou on est pas :)
Posté le 06-12-2005 à 15:34:41  profilanswer
 

function()
return()
et un peu de réflexion :D

n°1260191
mc_cut_kil​ler
Posté le 06-12-2005 à 15:52:29  profilanswer
 

C'est ce que j'essaye de faire.
 
Je déclare ma fonction avec ces deux paramètres.
Mais c'est après que je bloque, soit elle retourne tout le temps false soit l'inverse ...
 
Ce que je voudrais c'est un exemple à partir de ce problème, par la suite je pourrais l'adapter au reste de mes scripts ...
 
Bref j'en suis toujours au même stade :(

n°1260197
kalex
Posté le 06-12-2005 à 16:00:39  profilanswer
 

Tu mets tout ce code dans une fonction, à la ligne 14 "return true;" et à la ligne 22 "return false;".

n°1260208
mc_cut_kil​ler
Posté le 06-12-2005 à 16:13:51  profilanswer
 

Ok, alors dans ce cas je dois foiré dans ma déclaration de variables.
 
Je m'explique, j'airais plusieur date à contrôler. Par conséquent je voudrais écrire :

Code :
  1. verif_date("date_dernier_inventaire", "du dernier inventaire" )


 
Par conséquent quand je créé ma fonction je met :

Code :
  1. function verif_date($champ, $info)
  2. {
  3.     if ($_POST["'.$champ.'JJ"] != "jj" )
  4.     {
  5.        if( !ereg("^([0-9])*$", $_POST["'.$champ.'JJ"] . $_POST["'.$champ.'MM"] .    $_POST["'.$champ.'AA"]))
  6.        {
  7.        $mess = "le format de la date '.$info.' n'est pas valide, utilisez que des chiffres !";
  8.        ...
  9. }


 
et la ca bloque, ca marche plus :( Et je me demande aussi si c'est possible d'attende deux réponse d'une fonction. Ici dans un premier temps si c'est pas que des chiffres, puis si la date est valide.
 
Pourtant il me semble que j'intègre bien les paramètres en mettant '.$param.' ...

n°1260218
kalex
Posté le 06-12-2005 à 16:19:29  profilanswer
 

Ha oui, là y a une "petite" erreur. :o  
A la ligne 2 tu ne dois pas écrire :
if ($_POST["'.$champ.'JJ"] != "jj" )
Mais, simplement :
if ($champ['JJ'] != "jj" )
 
$champ et $infos deviennent, dans la fonction, des variables tout ce qu'il y a de plus banales !


Message édité par kalex le 06-12-2005 à 16:20:19
n°1260222
mc_cut_kil​ler
Posté le 06-12-2005 à 16:23:01  profilanswer
 

Ah ... bah voila mon petit problème au niveau des fonctions !
 
Merci beaucoup pour cette rectification, je teste de suite ...


Message édité par mc_cut_killer le 06-12-2005 à 16:24:29
n°1260272
mc_cut_kil​ler
Posté le 06-12-2005 à 17:00:23  profilanswer
 

Bon pour finir ca bloque encore ...  :fou:  
 
Voila le début de ma fonction :

Code :
  1. function verif_date($champJJ, $champMM, $champAA, $info)
  2.     {
  3.     if( !ereg("^([0-9])*$", $champJJ . $champMM . $champAA))
  4.     {
  5.      $mess = "le format de la date $info n'est pas valide, utilisez que des chiffres !";
  6.     }
  7.     }


 
Je l'appel pour cette ligne :

Code :
  1. verif_date($_POST["date_dernier_inventaireJJ"], $_POST["date_dernier_inventaireMM"], $_POST["date_dernier_inventaireAA"], "du dernier inventaire" );


 
Et ca marque rien. Si je met return = false je ne sais pas comment m'en servir. Alors j'ai essayé de remplacer $mess... par $control1 == false. Dans ce cas c'est toujours faut. J'ai mis 4 variables pour l'instant mais j'aimerais avoir juste à mettre le champ du nom du formulaire qui prendrais soit champJJ / champMM / champAA.
 
Bref, pas top ma fonction lol

n°1260309
kalex
Posté le 06-12-2005 à 17:22:10  profilanswer
 

La syntaxe c'est :
return false;
Et pas :
return = false;
!

n°1261819
mc_cut_kil​ler
Posté le 08-12-2005 à 15:26:24  profilanswer
 

Me revoila sur ce problème de fonction !
Bon, maintenant j'arrive à faire fonctionner cette fonction  :D  
 
Celle-ci est mise en include dans ma page de validation pour mon formulaire. Mon problème est maintenant de pouvoir récupérer les variables que j'ai dedans pour les envoyer à la bd (mysql). J'arrive à faire une requette à partir de la fonction, mais je préfèrerais récupérer la variable $date dans ma page de validation, et ce pour pouvoir l'intégrer dans ma requette générale.  :sweat:  
 
Voici ma fonction :
 

Code :
  1. function verif_date($MM, $JJ, $AA, $info)
  2.    {
  3.     /* on vérifie d'abord que la date ne comporte que des chiffres */
  4.     if( !ereg("^([0-9])*$", $MM . $JJ . $AA))
  5.     {
  6.      echo '<font color="red"><u>Erreur</u> : le format de la date ' .$info. ' n\'est pas valide, utilisez que des chiffres !<br><br>';
  7.     }
  8.    
  9.     else
  10.     {    
  11.      /* puis on vérifie la validité de la date */
  12.      $control2 = checkdate($MM, $JJ, $AA);
  13.      /* si la date est valide on la traite, sinon message d'érreur */
  14.      if( $control2 == true )
  15.      {
  16.       /* si le mois ne comporte qu'un chiffre on rajoute un zéro devant */
  17.       if(strlen($MM) < 2)
  18.       {
  19.        $MM = 0 .$MM;       
  20.       }
  21.      
  22.       /* si le jour ne comporte qu'un chiffre on rajoute un zéro devant */
  23.       elseif(strlen($JJ) < 2)
  24.       {
  25.        $JJ = 0 .$JJ;       
  26.       }
  27.      
  28.       /* si l'année ne comporte pas 4 chiffres on envoie un message d'érreur */
  29.       elseif(strlen($AA) < 4)
  30.       {
  31.        echo '<font color="red"><u>Erreur</u> : le format de la date ' .$info. ' n\'est pas valide, l\'année doit comporter 4 chiffres.<br><br>';      
  32.       }
  33.      
  34.       /* si tout est ok on envoie à la bd */
  35.       else
  36.       {
  37.        $date = $JJ . $MM . $AA;       
  38.       }
  39.      }
  40.     
  41.      else
  42.      {
  43.       echo '<font color="red"><u>Erreur</u> : la date ' .$info. ' n\'est pas valide.<br><br>';
  44.      }
  45.     }    
  46.    }


 
Je pense qu'il doit y avoir une certaine syntaxe mais j'ai pas encore trouvé sur google. J'avais aussi un champ sur ma page réservé au érreurs, mais si au lieu de mettre echo 'erreur ...' je met $mess = '...' je n'est aucuns message car la variable $mess ne sort pas de la fonction.
 
Merci d'avance  :ange:

mood
Publicité
Posté le 08-12-2005 à 15:26:24  profilanswer
 

n°1261850
kalex
Posté le 08-12-2005 à 15:50:10  profilanswer
 

return $date; :??:

n°1261885
mc_cut_kil​ler
Posté le 08-12-2005 à 16:12:42  profilanswer
 

Heu ... j'viens d'essayer mais toujours rien :(
 
Bon déja j'ai du remplacer les elseif par des if pour le control des mois + années. Suite à cette modification, si je marque echo $date; en dessous de "$date = $JJ . $MM . $AA;" ca me renvoie bien la date avec les zéros.
 
Pour ce qu'il y est de return $date;, je le met ou? J'ai essayé de le mettre en dessous de $date = ... mais ca marche pas. J'ai testé inepu de partout mais ca marche pas :(

Message cité 1 fois
Message édité par mc_cut_killer le 08-12-2005 à 16:13:14
n°1261914
kalex
Posté le 08-12-2005 à 16:43:05  profilanswer
 

mc_cut_killer a écrit :

Heu ... j'viens d'essayer mais toujours rien :(
 
Bon déja j'ai du remplacer les elseif par des if pour le control des mois + années. Suite à cette modification, si je marque echo $date; en dessous de "$date = $JJ . $MM . $AA;" ca me renvoie bien la date avec les zéros. (...)

Pour poser des questions, essaye de te détacher de ton problème particulier, sinon on fait que du debugage, c pas très interessant. ;)
 
Ce que tu veux savoir c'est comment une fonction peut renvoyer des informations ?
Avec return : http://fr2.php.net/manual/fr/funct [...] values.php

n°1261919
mc_cut_kil​ler
Posté le 08-12-2005 à 16:51:53  profilanswer
 

Ouais, c'est vrai que j'bloque inpeu trop dessus le problème ...  
 
J'viens de commencer à lire ton lien. Mais c'est pas tout à fait mon cas.
 
Enfin j'vais essayer d'adapter cette technique, mais pour l'instant rien de bon ... :( Ca j'avais compris, mais moi ce n'est pas un calcul c'est juste pour récupérer la dernière variable.

n°1261929
kalex
Posté le 08-12-2005 à 17:08:34  profilanswer
 

Si ça peut t'aider à comprendre :

Code :
  1. function test(){
  2. $date = "2005-10-17";
  3. return $date;
  4. echo "salut";
  5. }
  6. echo test();


Affichera : 2005-10-17
echo "salut" ne sera jamais exécuté, car return marque la fin de la fonction.
 
Par contre :

Code :
  1. function test(){
  2. $date = "2005-10-17";
  3. if(0 == 1){
  4.  return $date;
  5. }
  6. echo "salut";
  7. return " !";
  8. }
  9. echo test();


Affichera : salut !
La condition 0 == 1 est fausse, donc return n'est pas appelé.


Message édité par kalex le 08-12-2005 à 17:09:34
n°1262299
mc_cut_kil​ler
Posté le 09-12-2005 à 08:40:27  profilanswer
 

:bounce:  :bounce:  :bounce:  
 
Ca y est j'y arrive ! Désolé de ne pas avoir répondu hier, mais effectivement ca m'a pas mal aidé. Mon problème venait du fait que je mettais :
 

Code :
  1. echo mafonction();


 
Au lieu de mettre :

Code :
  1. echo mafonction(param1, param2 ...);


 
Encore merci pour ton aide  :jap: , et @bientôt  :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème pour création de fonction

 

Sujets relatifs
Probleme de requete.VBScript de création de repertoire
J'ai un problème avec les evenements et les variables javascript ?[PHP][Résolu] Problème de suppression...
Problème avec split et tableau [résolu]Problème de référencement
probleme float et lien inactif sous firefox[html] problème avec background image d'une cellule
probleme commande rmicproblème de création de fonction avec postgresql 7.3.4
Plus de sujets relatifs à : Problème pour création de fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR