Effacer des doublons

Effacer des doublons - PHP - Programmation

Marsh Posté le 29-05-2009 à 14:43:52    

Bonjour,  
 
Voila dans mon script je souhaiterais effacer les doublons. J'ai essayer avec un array_unique mais ce la ne fonctionne pas.
Quelqu'un a une idée ?
 

Code :
  1. <?php
  2. if(isset($_POST["Famille"])){
  3.          $Vfamille=$_POST["Famille"]
  4. ?>
  5.        
  6.            <label>Marque</label>
  7.            <select name='Marque'>
  8.            <option>--Choix--</option>
  9.          <?php
  10.        
  11.          $fichier="Produits.csv";
  12.          $var=fopen("$fichier","r+" );
  13.          while( !feof($var))
  14.          {
  15.           $ligne=fgets($var);
  16.           $partie=explode(";",$ligne);
  17.           $famille=$partie[0];//nom de la famille
  18.           $sousfamille=$partie[1];//nom de la sousfamille
  19.           $marque=$partie[2];//marque
  20.           $marque=str_replace('"','',$marque);
  21.           $sousfamille=str_replace('"','',$sousfamille);
  22.           $famille=str_replace('"','',$famille);
  23.          
  24.  $truc = $marque;
  25.  $machin = array_unique($truc);
  26. for($i=0;$i < count($machin) ; $i++){
  27.          
  28.           if ($Vfamille==$famille)
  29.        
  30.        
  31.      
  32.        
  33.          
  34.           echo "<OPTION VALUE=' $marque'>". $machin."</OPTION>";

Reply

Marsh Posté le 29-05-2009 à 14:43:52   

Reply

Marsh Posté le 29-05-2009 à 15:15:35    

où est le array_unique ? (apdmc :D)
mets un exemple de ce que tu obtiens/souhaites obtenir ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 29-05-2009 à 15:22:05    

Voila un résultat qui est le plus proche de ce que je souhaite obtenir.
http://img7.imageshack.us/img7/7848/sanstitre2ccw.png
J'aimerais tt simplement la mm chose sans que les valeurs du menu de droite arrparaisse plusieur fois....

Reply

Marsh Posté le 29-05-2009 à 16:23:29    

personne ?

Reply

Marsh Posté le 29-05-2009 à 17:44:24    

Soit tu n'as rien compris au code que tu écris, soit il manque pas mal d'informations pour pouvoir te répondre. Quoiqu'il en soit, si tu as un array quelque part duquel tu souhaites virer les doublons, array_unique est là pour ça.  
 
En ligne 45 de ton code dans le premier post, pourquoi tu utilises encore $marque et $machin dans ta boucle, alors que $machin est un array (et donc tu devrais plutôt avoir $machin[$i] que $machin tout court) ?

Reply

Marsh Posté le 29-05-2009 à 17:53:29    

Oui je n'ai pas mit le début qui pourrai plus être inutile qu'autre chose ^^
j'ai essayer avec ce que tu m'a dit mais j'ai tjrs des doublons

Reply

Marsh Posté le 29-05-2009 à 17:58:26    

Code :
  1. <?php
  2. session_start();
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7. </head>
  8. <body>
  9. <form  name="form1" method="post" action="">
  10. <fieldset style="width: 1000px">
  11.   <legend>Liste liées</legend>
  12.  
  13. <label>Famille</label>
  14. <select name='Famille' id='idFamille' onchange="document.form1.submit();" >
  15.   <option>--Choix --</option>
  16.  
  17. <?php
  18.   $fichier="Produits.csv";
  19.   $var=fopen("$fichier","r+" );
  20.   while( !feof($var))
  21.   {
  22.             $ligne=fgets($var);
  23.             $partie=explode(";",$ligne);
  24.             $famille=$partie[0];
  25.             $sousfamille=$partie[1];
  26.             $famille=str_replace('"','',$famille);
  27.             $sousfamille=str_replace('"','',$sousfamille);
  28.            
  29.             if (($famille!="" )&&(!isset($_SESSION[$famille]))) // par contre la c'est intelligent de pas mettre de valeur nul
  30.             {
  31.            
  32.                         
  33.             echo "<OPTION VALUE='$famille' ";
  34.              if($famille==$famille) echo " selected ";
  35.               echo " style='background:rgb(192,192,192)' >".$famille."</OPTION>";
  36.                 $_SESSION[$famille]="aa";
  37.         }
  38.            
  39.            
  40.             if (($sousfamille!="" )&&(!isset($_SESSION[$sousfamille]))) // par contre la c'est intelligent de pas mettre de valeur nul
  41.             {
  42.          
  43.                echo "<OPTION VALUE='$sousfamille' ";
  44.              if($sousfamille==$sousfamille) echo " selected ";
  45.               echo " >".$sousfamille."</OPTION>";
  46.               $_SESSION[$sousfamille]="aaa";
  47.         
  48.             }
  49.            
  50. }
  51. ?>
  52. </SELECT>
  53. <?php
  54. if(isset($_POST["Famille"])){
  55.          $Vfamille=$_POST["Famille"]
  56. ?>
  57.        
  58.            <label>Marque</label>
  59.            <select name='Marque'>
  60.            <option>--Choix--</option>
  61.          <?php
  62.        
  63.          $fichier="Produits.csv";
  64.          $var=fopen("$fichier","r+" );
  65.          while( !feof($var))
  66.          {
  67.           $ligne=fgets($var);
  68.           $partie=(explode(";",$ligne));
  69.           $famille=$partie[0]; //nom de la famille
  70.           $sousfamille=$partie[1]; //nom de la sousfamille
  71.           $marque=$partie[2]; //marque
  72.           $marque=str_replace('"','',$marque);
  73.           $sousfamille=str_replace('"','',$sousfamille);
  74.           $famille=str_replace('"','',$famille);
  75.          
  76. $truc = array($marque);
  77. $machin = array_unique($truc);
  78. for($i=0;$i < count($machin) ; $i++){
  79.           if ($Vfamille==$famille)
  80.         echo "<OPTION VALUE=' $machin'>". $machin[$i]."</OPTION>";
  81.          
  82.          
  83.          
  84.                           //echo "<OPTION VALUE=' $marque'>". $Vfamille."--".$famille."</OPTION>";
  85.                              //else echo "<OPTION VALUE=' $marque'>". ""."</OPTION>";
  86.                               //$_SESSION[$marque]="aaa";
  87.  }
  88. }
  89. }
  90. ?>
  91. </SELECT>
  92. </form>
  93. <?php
  94. echo "$Vfamille";
  95. session_destroy();
  96. ?>
  97. </body>
  98. </html>

Reply

Marsh Posté le 29-05-2009 à 17:58:34    

voila tt le code ^^

Reply

Marsh Posté le 29-05-2009 à 18:20:45    

L90, tu transformes $marque, qui n'est pas un array, en un array $truc. As-tu essayé de voir ce que contenait $truc ? Je pense que ce n'est pas ce à quoi tu penses.  
 
Par ailleurs, je pense que le traitement des doublons ne devrait pas se faire à cet endroit, car tu n'as pas une vue d'ensemble de "toutes les données" (à moins que $marque ne soit destiné à contenir une liste de marques).

Reply

Marsh Posté le 01-06-2009 à 20:38:32    

Je ne sais pas trop comment utiliser les array, ce qui explique la faute au niveau de la ligne 90.  
 
$marque contient toute les marque du fichier .csv
Il me faudrait juste qu'elle n'aparaisse qu'une seule fois.
Avec une condition du genre , si il est déja présent alors l'afficher qu'une fois....
Je ne sais pas qu'elle fonction php utiliser pour supprimer ces doublons.

Reply

Sujets relatifs:

Leave a Replay

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