Soucis pour accepter des doublons

szizman Messages postés 12 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 10 août 2009 - 6 août 2009 à 19:35
szizman Messages postés 12 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 10 août 2009 - 10 août 2009 à 12:25
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

szizman Messages postés 12 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 10 août 2009
6 août 2009 à 20:20
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
0
szizman Messages postés 12 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 10 août 2009
6 août 2009 à 20:46
c'est bon j'ai trouvé la solution donc
post fermé
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 août 2009 à 22:53
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 -
0
szizman Messages postés 12 Date d'inscription lundi 2 mai 2005 Statut Membre Dernière intervention 10 août 2009
10 août 2009 à 12:25
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
0
Rejoignez-nous