Optimiser un code de verif php

Fermé
Nath - Modifié par Nath le 20/04/2011 à 19:37
 Nath - 21 avril 2011 à 18:49
Bonjour,

bon voila j'ai un code qui marche mais qui n'est pas très joli et j'aimerai l'optimiser car je serais amener a répéter ce genre de code dans le futur.
j'ai un formulaire avec 4 menus déroulants et je veux qu'a vérifier à chaque fois qu'il n'y ai pas de doublons, et aussi si le menu déroulant précédent est vide le menu deroulant qui suit s'exécute dans le variable du menu précédent. c'est peut être pas très clair je vais vous laisser mon code et un exemple.
(je detaille la 4e condition)
if (isset($_POST['s1'])){  
if($_POST['s1']!="Aucune") {  
 $s1 = $_POST['s1'];}  
}  
       
if (isset($_POST['s2'])){  
 if($_POST['s2']!="Aucune") {  
  if ($s1!="") {  
   if($s1 != $_POST['s2']) {  
    $s2 = $_POST['s2'];}  
  } else {$s1 =  $_POST['s2'];}  
}  
}  
       
if (isset($_POST['s3'])){  
 if($_POST['s3']!="Aucune") {  
  if ($s1=="") {  
   $s1 = $_POST['s3'];}  
  elseif ($s2=="") {  
   if($s1 != $_POST['s3']) {  
    $s2 =  $_POST['s3'];}  
  }   
  else {   
   if($s1!= $_POST['s3'] && $s2 != $_POST['s3']){  
    $s3 = $_POST['s3'];}  
  }  
 }  
}  
       
if (isset($_POST['s4'])){   
 if($_POST['s4']!="Aucune") { //si diferent de aucune  
  if ($s1=="") { //s'il s'agit du premier menu selectionner (dans ce cas le menu 1-2 et 3 sont resté sur aucune)  
   $s1 = $_POST['s4'];} //alors c'est la 1ere variable qui se rempli (et ainsi de suite pour les elseif)  
  elseif ($s2=="") {  
   if ($s1 != $_POST['s4']) {  
    $s2 =  $_POST['s4'];}  
  }   
  elseif ($s3=="") {   
   if($s1!= $_POST['s4'] && $s2 != $_POST['s4']) { //si la valeur n'a pas déja été selectionné  
    $s3 = $_POST['s4'];}  
   }  
   else {   
    if($s1!= $_POST['s4'] && $s2 != $_POST['s4'] && $s3 != $_POST['s4']) {//si la valeur n'a pas déja été selectionné  
    $s4 = $_POST['s4'];}  
  }  
 }  
}  

s1 à s4 sont les 4 menus déroulants, si l'utilisateur sélectionne par exemple le menu deroulant 2 et 3, seul les variables s1 et s2 se remplissent.
Mais je crains m'être compliquer la vie dans cette histoire. Comment optimiser au mieux mon code sans passer par toutes ces conditions. j'imagine que developpeur professionnel ne code pas de cette façon?
j'espère que je suis pas trop brouillon et que vous m'avez compris sinon n'hésitez pas demandez ;)

je demande ca car je serais amener à répéter ce genre de code dans le futur et avec plus de 4 menus.. alors imaginez..

Merci beaucoup :)
Nath
A voir également:

3 réponses

up
0
Bonjour

Si j'ai bien compris ce que tu cherches à faire, voici un code qui boucle sur les variables $_POST['s1'], $_POST['s2']..
$tb=array();

for ($k=1; isset($_POST['s'.$k]); $k++){
  $x=$_POST['s'.$k];
  if ($x=='Aucune') $x='';
  for ($kk=1;isset($tb[$kk]); $kk++) { // recherche si valeur déjà vue
    if ($tb[$kk]==$x) break; // valeur déjà vue
  } // for $kk
  if (! isset($tb[$kk])) $tb[$kk]=$x; // c'est une nouvelle valeur, on l'ajoute 
} // for $k
Le résultat est dans le tableau $tb, qui a juste de nombre utile d'éléments (à partir de l'indice 1 mais c'est facile à changer)
0
Merci beaucoup j'ai pas le temps de tester aujourd'hui je te tiens au courant demain. mais ca ressemble à ce que je voulais.
Merci pour la réponse :)
0