[PHP] if elseif definition variable [resolu]

if elseif definition variable [resolu] [PHP] - PHP - Programmation

Marsh Posté le 29-08-2013 à 15:46:35    

bonjour,
 
je cherche a transformer une variable post depuis un formulaire avec ce code mais le echo de test a la fin me sort tout le temps "achats" quelque soit le choix dans le formulaire (le formulaire est OK)
 

Code :
  1. if (!strpos($_POST['service'],'service1'))
  2. {
  3. $nomservice = "achats";
  4. }
  5. elseif (!strpos($_POST['service'],'service2'))
  6. {
  7. $nomservice = "ventes";
  8. }
  9. elseif (!strpos($_POST['service'],'service3'))
  10. {
  11. $nomservice = "direction";
  12. }
  13. elseif (!strpos($_POST['service'],'service4'))
  14. {
  15. $nomservice = "atelier";
  16. }
  17. elseif (!strpos($_POST['service'],'service5'))
  18. {
  19. $nomservice = "fabrication";
  20. }
  21. echo $nomservice


 
merci de votre aide


Message édité par duncan mac leod le 30-08-2013 à 13:35:11

---------------
tu te rends compte si on avé pas perdu 1h15 on seré la depuis 1h15 (c) jojo national Paris Dakar 2002...
Reply

Marsh Posté le 29-08-2013 à 15:46:35   

Reply

Marsh Posté le 29-08-2013 à 17:57:29    

strpos renvoit la position de la première occurrence, qui peut donc être 0 !
Ca renvoit -1 si ca trouve que dalle.
Essaye peut-être avec

Code :
  1. if (strpos ($_POST['service'], taChaine) >= 0)


ou

Code :
  1. if (strpos ($_POST['service'], taChaine) !== false)


 
D'ailleurs, je ne testerais pas directement le contenu de $_POST, mais je mettrais ca dans une variable que je "nettoyerais" d'abord, et je ferais mes tests sur celle-ci ;)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 30-08-2013 à 09:33:02    

la valeur de post provient d'un formulaire (liste de choix) donc j'utilise direct
 
et pareil pour la chaine qui ne peut pas etre a 0

Reply

Marsh Posté le 30-08-2013 à 10:05:37    

Aussi tu devrais utiliser un switch c'est plus propre, ensuite, je te conseilles d'afficher ta variable post pour voir sont contenu, ainsi que le résultat de tes tests

Reply

Marsh Posté le 30-08-2013 à 10:17:30    

pour mes tests j'ai mis un echo $_POST['service' pour chaque if et c'est bien différent a chaque fois sauf le echo $nomservice
 
c'est quoi le switch ? un exemple de code peut etre ?

Reply

Marsh Posté le 30-08-2013 à 10:39:38    

exemple switch :

Code :
  1. switch ($val) {
  2.                 case "service1":
  3.                     $nomservice = "achats";
  4.                     break;
  5.                 case 'tp_desc_' . $arrayPost['id_widget']:
  6.                     $sql = "UPDATE topics set ";
  7.                     $where = " where tp_id='" . $arrayPost['id_table'] . "'";
  8.                     break;
  9.                 case 'dt_desc_' . $arrayPost['id_widget']:
  10.                     $sql = "UPDATE debtors set ";
  11.                     $where = " where dt_id='" . $arrayPost['id_table'] . "'";
  12.                     break;
  13.                 default:
  14.                     break;
  15.             }


 
Sinon, c'est quoi les valeurs affichées dans ton post?


Message édité par sltpaulo le 30-08-2013 à 10:40:55
Reply

Marsh Posté le 30-08-2013 à 10:54:20    

duncan mac leod a écrit :

la valeur de post provient d'un formulaire (liste de choix) donc j'utilise direct
 
et pareil pour la chaine qui ne peut pas etre a 0


Oui j'ai bien vu que tu l'utilises direct, mais bon perso je fais jamais confiance à ce qui provient du coté user mais soit ;)
 
Et donc, ya quoi exactement comme valeur dans ton $_POST ?


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 30-08-2013 à 11:24:52    

dans le $_POST il y a une adresse mail différente selon le choix d'un service (script d'envoi de mail de demande sur un intranet)
 
j'ajoute la fonction "logs" des envois a ce script

Reply

Marsh Posté le 30-08-2013 à 11:32:26    

Peux tu nous montrer les valeurs?
 
Si tu veux de l'aide, c'est le meilleur moyen...

Reply

Marsh Posté le 30-08-2013 à 11:38:29    

les valeurs possibles de post:
 
achats@mondomaine.fr
ventes@mondomaine.fr
direction@mondomaine.fr
atelier@mondomaine.fr
fabrication@mondomaine.fr
 
et je veux modifier cette valeur
 
pour avoir dans le meme ordre
 
"service des achats"
"service des ventes"
"direction générale"
"atelier de maintenance"
"unité de frabrication"
 

Reply

Marsh Posté le 30-08-2013 à 11:38:29   

Reply

Marsh Posté le 30-08-2013 à 11:51:24    

Essaye un truc du genre :
 

Code :
  1. switch ($_POST['service']) {
  2.                     case preg_match('/^achats/',$_POST['service']):
  3.                         $nomservice = "achats";
  4.                         break;
  5.                     case preg_match('/^ventes/',$_POST['service']):
  6.                         $nomservice = "ventes";
  7.                         break;
  8.                     case preg_match('/^direction/',$_POST['service']):
  9.                         $nomservice = "direction";
  10.                         break;
  11.                     default:
  12.                         break;
  13.                 }


Message édité par sltpaulo le 30-08-2013 à 11:51:46
Reply

Marsh Posté le 30-08-2013 à 13:34:29    

merci de votre aide c'est résolu

Reply

Sujets relatifs:

Leave a Replay

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