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

  FORUM HardWare.fr
  Programmation
  PHP

  garder la Valeur d'une liste de choix

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

garder la Valeur d'une liste de choix

n°1890711
maktu
Posté le 03-06-2009 à 10:24:08  profilanswer
 

Bonjour je souhaiterais savoir comment laisser afficher la valeur que j'ai selectionner dans la première liste, lorsque je selectionne un element de cette liste.
J'utilise des formulaires. Les Onchange me "réinitialise" la liste a chaque fois.... J'ai vu qu'il faut utiliser selected... mais je ne suis pas arriver a obtenir le bon résultat.
 voici mon code  
 

Code :
  1. <?php
  2. session_start();
  3. ?>
  4. <?php
  5. function menu_deroulant_famille($file_name)
  6. // Définition des variables utilisées dans la fonction:
  7. // $row --> numéro de l'enregistrement du fichier
  8. // $famille --> nom de la famille de l'enregistrement précédent
  9. // $sousfamille --> nom de la sous famille de l'enregistrement précédent
  10. {
  11. $famille="";
  12. $sousfamille="";
  13. $row = 1;
  14.     echo "<SELECT name='lst-famille' Size='1' onchange='document.form1.submit();' >"; // Création d'une liste déroulante pour les familles et sous familles.
  15. $handle = fopen($file_name, "r" );
  16. //Lecture de tous les enregistrements du fichier
  17. while (($data_catalogue = fgetcsv($handle, 1000, ";" )) !== FALSE)
  18. {
  19.      $num = count($data_catalogue);
  20.      $row++;
  21.  if ($data_catalogue[0]!=$famille)  // nouvelle famille
  22.  {
  23.   if ($famille!="" ) echo "<OPTION> <br></OPTION>";
  24.    echo "<OPTION style='background:rgb(192,192,192)'>$data_catalogue[0]<br></OPTION>";
  25.  }
  26.  else // famille équivalente à la précédente donc recherche si nouvelle sous famille
  27.  {
  28.   if ($data_catalogue[1]!=$sousfamille)  // nouvelle sousfamille
  29.   {
  30.    echo "<OPTION>$data_catalogue[1]<br></OPTION>";
  31.   }
  32.  }
  33.  $famille=$data_catalogue[0]; // mémorisation de la famille de l'enregistrement courant
  34.  $sousfamille=$data_catalogue[1]; // mémorisation de la famille de l'enregistrement courant
  35.   
  36. }
  37. fclose($handle);
  38. echo "</SELECT>";
  39. }
  40. // Récupération de la Valeur de la Première liste
  41. if(isset($_POST["lst-famille"]))
  42. {
  43.          $Vfamille=$_POST["lst-famille"];
  44. function menu_deroulant_marque($file_name,$famille)
  45. // Définition des variables utilisées dans la fonction:
  46. // $row --> numéro de l'enregistrement du fichier
  47. // $famille --> nom de la famille ou sous famille où il faut rechercher les marques existantes
  48. // $marque --> nom de la marque correspondate
  49. {
  50. $marque="";
  51. $marque[0]="";
  52. $row = 1;
  53.     echo "<SELECT name='lst-marque' Size='1'>"; // Création d'une liste déroulante pour les marques.
  54. $handle = fopen($file_name, "r" );
  55. //Lecture de tous les enregistrements du fichier
  56. while (($data_catalogue = fgetcsv($handle, 1000, ";" )) !== FALSE)
  57. {
  58.  if (($data_catalogue[0]==$famille)  || ($data_catalogue[1]==$famille) || ($famille=="" ) || ($famille==$choix) || ($row==1)) // La famille ou la sous famille correspondent
  59.  {
  60.   //si la marque actuelle est différente de la marque précédente --> mémorisataion.
  61.    if ($marque[$row-1]!=$data_catalogue[2])
  62.   {
  63.    $marque[$row]=$data_catalogue[2]; // mémorisation de la marque pour le tri
  64.    $row++;
  65.   }
  66.  }
  67.           // if ($Vfamille==$famille) //&&(!isset($_SESSION[$marque]) Vérification si la valeur récupéré est égal à la valeur conçernant la marque.
  68.   // {
  69.            // echo "<OPTION> $data_catalogue[2]</OPTION>";
  70.             // $_SESSION[$marque]="aa";
  71.   // }  
  72.  // else if ($Vfamille==$sousfamille)//&&(!isset($_SESSION[$marque])
  73.   // {
  74.            // echo "<OPTION> $data_catalogue[2]</OPTION>";
  75.              // $_SESSION[$marque]="aaa";
  76.   // }  
  77. }
  78. fclose($handle);
  79. }
  80. //echo "<OPTION>$marque[1]<br></OPTION>";
  81. // for ($i=2; $i<$row ; $i++)
  82. // {
  83.  // if ($marque[$i]!="" )
  84.  // {
  85.   // echo "<OPTION>$marque[$i]<br></OPTION>";
  86.  // }
  87. // }
  88. echo "</SELECT>";
  89. }
  90.            
  91. // MAIN
  92. $catalogue="catalogue.csv";
  93. $indexbase="baseindex.csv";
  94. $choix="Choisissez une catégorie";
  95. $choixmarque="Choisissez une marque";
  96. $sel_famille="";
  97. $sel_marque="";
  98. ?>
  99. <html>
  100. <head>
  101. <form  name="form1" method="post" action="">
  102. <fieldset style="width: 1000px">
  103. <legend>Liste liées</legend>
  104. <?php
  105. menu_deroulant_famille($catalogue);
  106. menu_deroulant_marque($indexbase,$sel_famille);
  107. ?>
  108. </form>
  109. <?php
  110. echo $Vfamille;
  111. session_destroy();
  112. ?>
  113. </body>
  114. </html>

mood
Publicité
Posté le 03-06-2009 à 10:24:08  profilanswer
 

n°1890813
olivthill
Posté le 03-06-2009 à 13:00:25  profilanswer
 

Tout d'abord, il faudrait mettre le choix dans une variable

if(isset($_POST["lst-famille"]))
  $choix-famille = $_POST["lst-famille"];

Puis, il faudrait tester cette variable lors de la création de la listbox en remplaçant

 echo "<OPTION style='background:rgb(192,192,192)'>$data_catalogue[0]<br></OPTION>";

par

if ($data_catalogue[0] == $choix-famille)
  echo "<OPTION style='background:rgb(192,192,192)' selected>$data_catalogue[0]</OPTION>";
else  
  echo "<OPTION style='background:rgb(192,192,192)'>$data_catalogue[0]</OPTION>";

N.B. J'ai enlevé le <br> parce que je crois qu'il ne sert à rien.

n°1890849
maktu
Posté le 03-06-2009 à 14:05:26  profilanswer
 

Merci de ta réponse. Mais j'ai un petit problème pour placer le  
if(isset($_POST["lst-famille"])){
  $choix-famille = $_POST["lst-famille"];
}
 avant la fonction ? et je le ferme où ?

n°1890855
olivthill
Posté le 03-06-2009 à 14:09:44  profilanswer
 

Le if (isset ... existe déjà ligne à la ligne 48. Il n'y a pas besoin d'en prendre un nouveau. D'ailleurs, je n'avais pas vu que la valeur était déjà récupérée à la ligne 52 dans $Vfamille, et donc mon $choix-famille serait redondant. Désolé, je n'avais pas fait attention.


Message édité par olivthill le 03-06-2009 à 14:10:56
n°1890887
maktu
Posté le 03-06-2009 à 14:32:47  profilanswer
 

Oui, j'ai donc remplacer le $choix-famille par $Vfamille... mais pas de résultat concluant

n°1890888
maktu
Posté le 03-06-2009 à 14:33:09  profilanswer
 

je devrai pas placer le isset plus haut ?

n°1890925
Profil sup​primé
Posté le 03-06-2009 à 14:53:01  answer
 

$choix-famille est incorrect, cela revient à soustraire la valeur de la constante famille à $choix. Le nom correct est $choix_famille.

n°1890938
maktu
Posté le 03-06-2009 à 15:04:36  profilanswer
 

le problème ne vient plus de la car je l'ai remplacer par $Vfamille

n°1890941
Profil sup​primé
Posté le 03-06-2009 à 15:05:51  answer
 

oui mais c'est tout de même utile de le dire, c'est une erreur que olivthill avait surement faite par inattention, mais tu n'as rien remarqué, tu risques de la commettre.

n°1890942
maktu
Posté le 03-06-2009 à 15:07:35  profilanswer
 

Oui Merci de l'info :D


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

  garder la Valeur d'une liste de choix

 

Sujets relatifs
Rangement d'une listestruts validator : valeur d'un champ dans le message d'erreur
zone de liste Faire un cumul meme si 1 valeur est absente.
liste déroulante et sous formulaireInverser une liste
Choix CMS pour un site de vente particulier a particulier.[C]renverser une liste chainée
Fixer la valeur d'un élément de type complexe dans un schéma XMLListe déroulante récalcitrante (classique ?)
Plus de sujets relatifs à : garder la Valeur d'une liste de choix


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