Soucis pour accepter des doublons

Signaler
Messages postés
12
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
10 août 2009
-
Messages postés
12
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
10 août 2009
-
Bonjour, j'ai un petit soucis dans $Categorie
je pense que l'erreur se trouve dans cette portion:

<?php
$Categorie= "";
sort($getFile);  				
for($i=0;$i<count($getFile);$i++)  	
{
  $Fields=explode("-",$getFile[$i]);      
  if($Categorie!=$Fields[0])		
{	
  $Categorie=$Fields[0];

  if (preg_match("#^General_#", $Categorie )) 
{
    $Categorie1 = $Categorie;
    echo $Categorie ."
";
    fputs ($Tableau_Array, ","" .$Categorie1 .""");

}		
  if (preg_match("#^Hardware_#", $Categorie )) 
{
    $Categorie2 = $Categorie;
    echo $Categorie2 ."
";
    fputs ($Tableau_Array, ","" .$Categorie2 .""");
}
  if (preg_match("#^Autre_#", $Categorie )) 
{
    $Categorie3 = $Categorie;
    echo $Categorie3 ."
";
    fputs ($Tableau_Array, ","" .$Categorie3 .""");
}
?>


du code ci dessous:
<?php

function browse ($pDirectory, $pExtension)
{
    if($handle = opendir($pDirectory))
    {
         while(false !($file readdir($handle)))
        {
            $getExt = explode(".", $file);
            $countExt = count($getExt);
            $fExt = $countExt - 1;
            $myExt = $getExt[$fExt];
            
            if (($myExt == $pExtension) && ($file != ".") && ($file != ".."))
                {$files[] = $file;}
        }
     }
 return $files;
closedir($handle);
}


// CREATION DE NOTRE HORLOGE  //

$date = date("d/m/Y");
$heure = date("H:i");

echo " Bonjour ! Nous sommes le $date et il est $heure 

"; // Maintenant on peut l'afficher
$nombre  = "_001";

$Videos_rep =  browse("../Tv_videos/", "flv");
foreach ($Videos_rep as $LesFichiers)    
{echo $nombre++ ."_" ." " . $LesFichiers ."
";}

$countFile = count($Videos_rep);
echo " " .$countFile ." fichiers 
";


// CREATION DES FICHIERS RSS-LIST.XML  //	

$ListXML1  = fopen ("Rss1_General-List.xml", "w+"); 
$ListXML2 = fopen ("Rss2_Hardware-List.xml", "w+");
$ListXML3 = fopen ("Rss3_Autre-List.xml", "w+");

$Title1 = "<title>Bienvenue sur General</title> \n "; 
$Title2 = "<title>Bienvenue sur Hardware</title> \n "; 
$Title3 = "<title>Bienvenue sur Autre</title> \n "; 	

$image1 = "url="../theme/general.png";
$image2 = "url="../theme/tools.png";
$image3 = "url="../theme/autre.png";

$texte ="" type="image/png" /> \n <media:thumbnail ";	

$HautPageXml = (
"<rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"> \n <channel> \n <title>Test-Tv</title>"
."\n <link>http://Test-Tv.com</link> \n \n  \n");

fputs ($ListXML1, $HautPageXml .$Title1 ."<media:content " .$image1 .$texte .$image1 ."" /> \n  \n\n");
fputs ($ListXML2, $HautPageXml .$Title2 ."<media:content " .$image2 .$texte .$image2 ."" /> \n  \n\n");
fputs ($ListXML3, $HautPageXml .$Title3 ."<media:content " .$image3 .$texte .$image3 ."" /> \n  \n\n");


// CREATION DES ARRAY  //

$Tableau_Array 	= fopen ("Tableau_Array.php", "w+"); 
fputs ($Tableau_Array, "<?php \n \$TabArray = array (0");

$getFile = browse("../Tv_videos/", "flv");
$Categorie="";
sort($getFile);  				//Trie des fichiers

for($i=0;$i<count($getFile);$i++)  		//Parcours de la liste des fichiers
{
$Fields=explode("-",$getFile[$i]);      //Récupération des champs du fichier
if($Categorie!=$Fields[0])		//Changement de catégorie ou d'auteur ?
{	
$Categorie=$Fields[0];
//echo $Categorie;


if (preg_match("#^General_#", $Categorie )) 
{
$Categorie1 = $Categorie;
echo $Categorie ."
";
fputs ($Tableau_Array, ","" .$Categorie1 .""");

}

if (preg_match("#^Hardware_#", $Categorie )) 
{
$Categorie2 = $Categorie;
echo $Categorie2 ."
";
fputs ($Tableau_Array, ","" .$Categorie2 .""");
}

if (preg_match("#^Autre_#", $Categorie )) 
{
$Categorie3 = $Categorie;
echo $Categorie3 ."
";
fputs ($Tableau_Array, ","" .$Categorie3 .""");
}	
  }		
}

fputs ($Tableau_Array, "); \n?>");  
include 'Tableau_Array.php';

for ($num = 1; $num <= count($TabArray) ; $num++) 

 foreach ($getFile as $myFile)	
 {
 
$text1 = "\n  \n <title>" .$myFile ."</title>" ."\n <media:content url="../Tv_videos/" .$myFile 
."" type="video/x-flv" /> \n <media:thumbnail url="Tv_fichiers/Icons/";	
  
$text2 = ".png" /> \n <description>animated film</description> \n  \n \n";	

if (preg_match("#^General_#", $myFile )) 
{
$toto1 = $text1 .$TabArray[$num++] .$text2;
fputs ($ListXML1, $toto1);
}

if (preg_match("#^Hardware_#", $myFile)) 
{	
$toto2 = $text1 .$TabArray[$num++] .$text2;
fputs ($ListXML2, $toto2);
}

if (preg_match("#^Autre_#", $myFile)) 
{
$toto3 = $text1 .$TabArray[$num++] .$text2;
fputs ($ListXML3, $toto3);
}
}		

$BasPageXml = ("</channel> \n </rss>");

fputs ($ListXML1, $BasPageXml); fclose ($ListXML1);
fputs ($ListXML2, $BasPageXml); fclose ($ListXML2);
fputs ($ListXML3, $BasPageXml); fclose ($ListXML3);
 
fclose ($Tableau_Array); unlink ("Tableau_Array.php");

?>


le code fonctionne uniquement si $Categorie1 à des valeurs de chaine de caractère différente, pareillement pour $Categorie2 et 3.

Dans le cas contraire il retourne une erreur si il y a au minimum un doublon de valeur dans une des variables $Categorie.

Dans la pratique, il écrit dans mon $Tableau_Array et s'arrete quand il trouve la même valeur et pareillement pour "echo" il affiche la valeur Categorie1,2 ou 3 jusqu'à ce qu'il arrive sur une même valeur et sautera les doublons pour afficher les suivantes.

Un peu plus de précision sur la fonction du code php
le bout de code en question a pour but de récupérer la racines d'une chaine de caractère de mes fichiers .flv,
si il trouve dans mon dossier video les fichiers:
[list]"General_microsoft-01_blabla.flv"
"General_apple-02_blabla.flv"
"General_Linux-03_blabla.flv""
/list
il me retournera, ex: pour $Categorie1 les valeurs suivante(General_microsoft, General_apple, General_Linux)

par contre, si j'ai le cas de figure suivant:
[list]"General_microsoft-01_blabla.flv"

"General_apple-03_testestest.flv"
... il me l'affiche

"General_apple-04_blabla.flv"
... me l'affiche pas, car même chaine que la ligne précédente

"General_Linux-05_blabla.flv"
... il me l'affiche
/listRésultat ex: pour $Categorie1 (General_microsoft, General_apple, General_Linux) donc il me manque 1 valeur "General_apple".

Comment faire pour que ces doublons puissent être affichés en "echo" et écrits dans $Tableau_Array

merci pour vos réponses et votre aide.

4 réponses

Messages postés
12
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
10 août 2009

bon j'ai changer un bout de code qui servait a rien, prenez le code du début et remplacez par
<?php
$Categorie="";
sort($getFile);  			
for($i=0;$i<count($getFile);$i++)  	
{
  $Fields=explode("-",$getFile[$i]);      
  if($Categorie!=$Fields[0])		
{	
  $Categorie=$Fields[0];
 fputs ($Tableau_Array, ","" .$Categorie .""");
?>

même effet, mais c'est plus court
Messages postés
12
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
10 août 2009

c'est bon j'ai trouvé la solution donc
post fermé
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Ayant lu ton dernier message je n'ai pas cherché plus loin, mais, afin d'aider les autres pourrais tu exposer ta solution et la valider ?

Cordialement,



Kohntark -
Messages postés
12
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
10 août 2009

salut, juste changer

<?php
{

$Fields=explode("-",$getFile[$i]);      //Récupération des champs du fichier

if($Categorie!=$Fields[0])		//Changement de catégorie ou d'auteur ?

{	

$Categorie=$Fields[0];
?>


par
<?php
{

$Fields=explode("-",$getFile[$i]);      //Récupération des champs du fichier

if($Categorie=$Fields[0])		//Changement de catégorie ou d'auteur ?

{	

$Categorie=$Fields[0];
?>


et oui un simple "!" a fait toute la différence