Problème de paramètre dans ma fonction

Problème de paramètre dans ma fonction - PHP - Programmation

Marsh Posté le 10-06-2009 à 16:29:02    

Bonjour,
 
je fais une fonction mais sa marche pas j'ai aucune sortie donc je pence que j'ai une erreur dans mes paramètre comme je suis assez nul avec les paramètres je demande votre aide et une petite explication du pourquoi si c'est posible je vous remerci d'avence.
 
voici ma création de la fonction

Code :
  1. function relance_id($row_ct)
  2. {
  3. if( $row_ct_emv['relances_id']== '1' ) {
  4. return $ct_emv .= 'france';
  5. }
  6. else if( $row_ct_emv['relances_id']== '2' ) {
  7. return $ct_emv .= 'amerique';
  8. }
  9. else if( $row_ct_emv['relances_id']== '3' ) {
  10. return $ct_emv .= 'suede';
  11. }
  12. else if( $row_ct_emv['relances_id']== '4' ) {
  13. return $ct_emv .= 'portugal';
  14. }
  15. else if( $row_ct_emv['relances_id']== '5' ) {
  16. return $ct_emv .= 'espagne';
  17. }
  18. else if( $row_ct_emv['relances_id']== '6' ) {
  19. return $ct_emv .= 'suisse';
  20. }
  21. else if( $row_ct_emv['relances_id']== '7' ) {
  22. return $ct_emv .= 'russie';
  23. }
  24. else {
  25. return $ct_emv .= 'norvege';
  26. }
  27. }


 
et là l'appel de ma fonction
 
while ($row_ct_emv = mysql_fetch_assoc($result_ct_emv)) {
     $row_ct  = $row_ct_emv['relances_id'];
     relance_id($row_ct);
    echo "<tr><td with=\"20px\"></td><td width=\"100px\">".$ct_emv."</td><td width=\"120px\"><b>".$row_ct_emv['planning_date']."</b></td></tr>";
   }
 
 
 
je vous remerci de bien vouloir m'éclairé

Reply

Marsh Posté le 10-06-2009 à 16:29:02   

Reply

Marsh Posté le 10-06-2009 à 16:48:53    

c'est un peu normal que tu n'est rien
tu fait un return dans ta fonction
mais lorsque tu appele ta fonction tu met pas le retour dans une variable
 il faut que tu fasse $mavariable=relance_id($row_ct); et dans $mavariable tu auras le retour de ta fonction

Reply

Marsh Posté le 10-06-2009 à 16:58:44    

Fichtre, pas mal de choses à corriger (qui a dit tout ?)

 

Dans ta fonction "relance_id", tu as comme paramètre $row_ct, mais tu fais tes "if" sur $row_ct_env (que la fonction ne connaît pas, à moins que tu n'utilises des variables globales partout).

 

Tu n'affectes pas la valeur de retour de la fonction relance_id  à une variable (donc elle ne sert à rien dans ta configuration).

 

Donc, pour rester proche de ce que tu fais

Code :
  1. while ($row_ct_emv = mysql_fetch_assoc($result_ct_emv)) {
  2.     $country= relance_id($row_ct_emv['relances_id']);
  3.     echo "<tr><td with=\"20px\"></td><td width=\"100px\">".$country."</td><td width=\"120px\"><b>".$row_ct_emv['planning_date']."</b></td></tr>";
  4.    }
 

et ta fonction gagnerait en clarté avec l'utilisation d'un switch

Code :
  1. function relance_id($relance) {
  2. switch ($relance) {
  3. case 1:
  4. return 'france';
  5. break;//bon, le break doit être inutile, vu qu'on a un return...
  6. case 2:
  7. return 'amerique';
  8. break;//idem
  9. //etc.
  10. default:
  11. return 'norvège';
  12. break//idem
  13. }
  14. }
 

Cela dit, du moment que tu travailles avec une BDD, il pourrait être intéressant d'avoir une table pays_relance, ou un truc du genre, non ?


Message édité par deliriumtremens le 10-06-2009 à 17:03:12
Reply

Marsh Posté le 10-06-2009 à 17:01:35    

ok merci c'étais sa
 
très bonne journée

Reply

Marsh Posté le 11-06-2009 à 13:09:48    

C'est normal que le paramètre de ta fonction $row_ct alors que dans test tes, la variable s'appelle $row_ct_emv :??:
Et je te suggère de remplacer ton gros if/else if par un switch

Code :
  1. function relance_id($row_ct)
  2. {
  3.     switch($row_ct['relances_id'])
  4.     {
  5.         case '1':
  6.             $ValRetour = 'france';
  7.             break;
  8.        case '2':
  9.              ....
  10.        default:
  11.            $ValRetour = 'norvege';
  12.            break;
  13.     }
  14.     return $ValRetour;
  15. }


 
Et encore mieux, utiliser un tableau associatif pour éviter le switch :

Code :
  1. function relance_id($row_ct)
  2. {
  3.     $aCodesPays = array('1' => 'france', '2' => 'amerique', ....);
  4.     if (isset($aCodesPays[$row_ct['relances_id']]))
  5.     {
  6.         $ValRetour = $aCodesPays[$row_ct['relances_id']];
  7.     }
  8.     else
  9.     {
  10.         $ValRetour = 'norvege';
  11.     }
  12.     return $ValRetour;
  13. }


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

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