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

  FORUM HardWare.fr
  Programmation
  PHP

  fonctions et variables....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonctions et variables....

n°718225
freed102
Arayashiki
Posté le 07-05-2004 à 10:15:14  profilanswer
 

Bonjour à tous.. j'ai une question.. un truc qui m'a pris la tete toute la journée hier...
 
voila j'explique, j'ai créé une fonction de canonisation de données, cette fonction permet donc de tester et normaliser les informations inserées dans un formulaire... mais j'ai un probleme lorsque je veux afficher un message d'erreur.. en fait je declare une variable dans ma fonction dans lequel se trouve le message d'erreur.
 
à savoir : ma fonction est dans un include.
 
voici donc ma page variables.inc.php :

Code :
  1. // Messages d'erreur
  2. function AfficheErreur ($numeroerreur,$nomduchamp, $min, $max)
  3. {
  4. switch ($numeroerreur)
  5. {
  6. //bug pour l'affichage des erreurs => n'affiche pas la variable "$erreur" dans la page ajout.php
  7. case 1 : $erreur.="Ne pas depasser ".$max." caractères dans le champ <b>".$nomduchamp."</b><br/>";break;
  8. case 2 : $erreur.="Veuillez saisir ".$min." caractères minimum dans le champ <b>".$nomduchamp."</b><br/>";break;
  9. case 3 : $erreur.="Le champ <b>".$nomduchamp."</b> est vide <br/>";break;
  10. case 4 : $erreur.="Le champ <b>".$nomduchamp."</b> doit être une valeur numérique <br/>";break;
  11. default : $erreur.="Erreur inconnue"; break;
  12. }
  13. }
  14. // canonisation d'une chaine de caracteres
  15. function CanonisationChaine($chaine,$nomduchamp,$min,$max)
  16. {
  17.  if (!empty($chaine))
  18.  {
  19.   //verifie le nombre de caracteres
  20.   if(strlen($chaine) > $max)
  21.   {
  22.   AfficheErreur(1,$nomduchamp,$min,$max);
  23.   return $chaine;
  24.   }
  25.   elseif(strlen($chaine) < $min)
  26.   {
  27.   AfficheErreur(2,$nomduchamp,$min,$max);
  28.   return $chaine;
  29.   }
  30.   else
  31.   {
  32.   //canonise la chaine de caractères
  33.   return $chaine=htmlentities(ucwords(trim(strtolower($chaine))),ENT_QUOTES);
  34.   exit();
  35.   }
  36.  }
  37.  else
  38.  {
  39.  AfficheErreur(3,$nomduchamp,$min,$max);
  40.  return $chaine;
  41.  exit();
  42.  }
  43. }

 
 
Et voici ma page qui contient mon formulaire (en resumé) :
 

Code :
  1. <?php session_start();
  2. include('includes/variables.inc.php'); //inclus le fichier de variables
  3. if($ajouter)
  4. {
  5. $nom_produit=$_POST['nom_produit'];
  6. $nom_produit=CanonisationChaine($nom_produit,"nom du produit",2,20);
  7. }
  8. ?>
  9. <form name="form1" method="post" ENCTYPE="multipart/form-data" action="<?php echo $PHP_SELF; ?>">
  10. <?php echo $erreur; ?>
  11. <b>Nom du produit</b>
  12. <input type="text" name="nom_produit" value="<?php echo $nom_produit; ?>">
  13. <input type="submit" name="ajouter" value="ajouter un produit">
  14. </form>


Donc ma fonction de canonisation fonctionne tres bien mais les messages d'erreur ne s'affichent que quand je mets "echo" devant mes erreurs dans les fonctions... simplement ça s'affiche en haut de ma page et pas dans mon <?php echo $erreur; ?>
 
Merci d'avance
 
Freed


Message édité par freed102 le 07-05-2004 à 10:16:24

---------------
Freed102
mood
Publicité
Posté le 07-05-2004 à 10:15:14  profilanswer
 

n°718313
Freekill
Electron libre…
Posté le 07-05-2004 à 11:01:36  profilanswer
 

faudrait peut-être faire "return $erreur;" non ?

n°718318
freed102
Arayashiki
Posté le 07-05-2004 à 11:04:15  profilanswer
 

Freekill a écrit :

faudrait peut-être faire "return $erreur;" non ?


 
J'avais essayé ça :
 

Code :
  1. function AfficheErreur ($numeroerreur,$nomduchamp, $min, $max)
  2.   {
  3.      
  4.      switch ($numeroerreur)
  5.      {
  6.        //bug pour l'affichage des erreurs => n'affiche pas la variable "$erreur" dans la page ajout.php  
  7.        case 1 : return $erreur.="Ne pas depasser ".$max." caractères dans le champ <b>".$nomduchamp."</b><br/>";break;
  8.        case 2 : return $erreur.="Veuillez saisir ".$min." caractères minimum dans le champ <b>".$nomduchamp."</b><br/>";break;
  9.        case 3 : return $erreur.="Le champ <b>".$nomduchamp."</b> est vide <br/>";break;
  10.        case 4 : return $erreur.="Le champ <b>".$nomduchamp."</b> doit être une valeur numérique <br/>";break;
  11.        default : return $erreur.="Erreur inconnue"; break;
  12.      }
  13.      
  14.   }


 
...Mais ça n'a pas marché ! :(


---------------
Freed102
n°718341
Freekill
Electron libre…
Posté le 07-05-2004 à 11:16:15  profilanswer
 

Ouais ben ça suffit pas de juste retourner ton erreur dans la fonction CanonisationChaine(), il faut la retourner jusqu'à la source.

n°718410
freed102
Arayashiki
Posté le 07-05-2004 à 11:38:04  profilanswer
 

Freekill a écrit :

Ouais ben ça suffit pas de juste retourner ton erreur dans la fonction CanonisationChaine(), il faut la retourner jusqu'à la source.


 
Je rame là ! j'arrive pas a comprendre pourquoi... par exemple
 
function test()
{
$erreur="erreur1";
}
test();
 
echo $erreur;
 
... n'affiche rien !


---------------
Freed102
n°718413
Freekill
Electron libre…
Posté le 07-05-2004 à 11:39:30  profilanswer
 

freed102 a écrit :

Je rame là ! j'arrive pas a comprendre pourquoi... par exemple
 
function test()
{
$erreur="erreur1";
}
test();
 
echo $erreur;
 
... n'affiche rien !


 

Code :
  1. function test()
  2. {
  3.   $erreur="erreur1";
  4.   return $erreur;
  5. }
  6. $result = test();
  7. echo $result;


 
ok ?

n°718422
freed102
Arayashiki
Posté le 07-05-2004 à 11:42:29  profilanswer
 

j'ai trouvé encore mieux je crois par rapport à mon probleme !!!
 
function test()
{
global $erreur;
$erreur="err";
}
test();
 
echo $erreur;
 
 
et là ça marche grave !
 
MERCI ! :)


---------------
Freed102
n°718428
Freekill
Electron libre…
Posté le 07-05-2004 à 11:45:09  profilanswer
 

C'est une autre solution, mais l'abus de globales est mauvais pour la santé.

n°718437
freed102
Arayashiki
Posté le 07-05-2004 à 11:49:02  profilanswer
 

oui certes ! mais dans mon cas ça me simplifie la vie... J'etudierai plus profondement le Return... Thanx a lot


---------------
Freed102
n°718517
AlphaZone
Posté le 07-05-2004 à 12:44:34  profilanswer
 

Mouai, freed102, si je peux te donner un conseil, évite ce style de programmation.
 
Il faut éviter d'utiliser les variables globals, dans certains CAS on ne peut pas faire autrement. Mais dans ton cas, tu as la possiblité d'utilisé le return, alors t'en prive pas.
 
Exemple si ta une fonction Toto() avec un "return" dedans, tu l'appelleras comme cela:
$Resultat = Toto();
Puis tu affiche ton résultat:
echo $Resultat;
 
On enregistre la donnée RETOURNEE par Toto() dans la variable $Resultat.


Message édité par AlphaZone le 07-05-2004 à 12:47:51

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

  fonctions et variables....

 

Sujets relatifs
[Fixed!][HTML] (Form) 'action' avec variables en GET ? (Pb)Probleme d'utilisation des variables je crois (PHP + SVG)
[PHP]Problème avec les variables de session[JAVA/TOMCAT] Variables d'environnement
acces à certaines variables définies dans une IDL ...[php] pb de variables dans une boucle avec un formulaire
[PHP] Mettre à jour les variables de session [resolu]récupération de variables avec checkbox
persistance des variables et fonctions en javascript ...nb d'argument variables dans un fonctions php
Plus de sujets relatifs à : fonctions et variables....


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)