Correction de code

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 une "parse error in" a la ligne 138


<?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);
}

/////////////////////////////////////

//Définition des fichiers à utiliser
$General = fopen ("General.html", "w"); 
$Hardware = fopen ("Hardware.html", "w"); 
$Autre = fopen ("Autre.html", "w");

//Ecriture de l'entête
$Header="<html>";
fwrite($General,$Header);
fwrite($Hardware,$Header);
fwrite($Autre,$Header);

//Définition des variables temporaires
$Categorie="";
$Avatar = "";
$Elements[]="a";

//Récupération de la liste des fichiers
$getFile = browse("Tv-flv_videos/", "flv");

//Trie des fichiers
sort($getFile);

//Parcours de la liste des fichiers
for($i=0;$i<count($getFile);$i++)
{
//Récupération des champs du fichier
$Fields=explode("_",$getFile[$i]);

//Changement de catégorie ou d'auteur ?
if($Categorie!=$Fields[0] || $Avatar!=$Fields[1])
{
//On était dans une autre catégorie?
if($Categorie!="")
{
//Ecriture dans le fichier désiré
switch($Categorie)
{
case "General":
WriteInFile($General,$Avatar,$Elements);
break;
case "Hardware":
WriteInFile($Hardware,$Avatar,$Elements);
break;
case "Autre":
WriteInFile($Autre,$Avatar,$Elements);
break;
}
}
//Réinit des variables pour le cycle suivant
unset($Elements);
$Categorie=$Fields[0];

$Avatar=$Fields[1];
//echo $Categorie ."_".$Avatar ."
";	
}
//Ajout du fichier à la liste courante

$Elements[]=$getFile[$i];
//$Elements=$getFile[$i];
//	echo $Elements ."
";
}
//Fin, on écrit les dernières lignes
if($Categorie!="")
{
switch($Categorie)
{
case "General":
WriteInFile($General,$Avatar,$Elements);
break;
case "Hardware":
WriteInFile($Hardware,$Avatar,$Elements);
break;
case "Autre":
WriteInFile($Autre,$Avatar,$Elements);
break;
}
}

//Fin des fichiers HTML
$Footer="</html>";
fwrite($General,$Footer);
fwrite($Hardware,$Footer);
fwrite($Autre,$Footer);
//Fermeture des fichiers
fclose ($Autre); fclose ($General); fclose ($Hardware); 

//Ecriture dans un fichier
//$File, fichier cible
//$Avatar, créateur
//$Elements, liste de fichiers contenus
function WriteInFile($File,$Avatar,$Elements)
{
//Init de quelques variables locales
$Ligne1='%4$s
, , %1$s, , %2$s, , ';
$Ligne2='----
%1$s, %2$s, ';
$LigneFin="
";

//Nombre de lignes dans le tableau
$LineCount=(count($Elements)-(count($Elements)%2))/2;
if((count($Elements)%2)==1) $LineCount++;

//Parcour des lignes du tableau
for($i=0;$i<$LineCount;$i++)
{
//Modèle de la ligne
$Ligne=$Ligne2;
if($i==0)$Ligne=$Ligne1;

//Ecriture dans le fichier
if($i==$LineCount && ((count($Elements)%2)==1))
fwrite($File,sprintf($Ligne,sprintf($Ligne,$Elements($i*2),"",$LineCount,$Avatar)));
{		
else
}
 fwrite($File,sprintf($Ligne,sprintf($Ligne,$Elements($i*2),$Elements($i*2+1),$LineCount,$Avatar)));


//Ecriture de la ligne de fermeture du tableau
fwrite($File,$LigneFin);
}
}
?>


si qq voit ou est l'erreur, merci

8 réponses

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

dsl j'avai pas vu que les ligne n'était pas numérotées,
voila c'est vers la fin

fwrite($File,sprintf($Ligne,sprintf($Ligne,$Elements($i*2),$Elements($i*2+1),$LineCount,$Avatar)));
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

Comme ça plutôt :
if($i==$LineCount && ((count($Elements)%2)==1)) {
  fwrite($File,sprintf($Ligne,sprintf($Ligne,$Elements($i*2),"",$LineCount,$Avatar)));

} else {
    
 fwrite($File,sprintf($Ligne,sprintf($Ligne,$Elements($i*2),$Elements($i*2+1),$LineCount,$Avatar)));
}



Cordialement,

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

j'avais déjà essayer et ça retourne
Fatal error: Function name must be a string
sur la ligne
fwrite($File,sprintf($Ligne,sprintf($Ligne,$Elements($i*2),$Elements($i*2+1),$LineCount,$Avatar)));


faut revoir tout le code ya qq chose qui cloche

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

personne a une idée ?
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Je n'ai pas regardé le reste du code, peut être y a t il d'autres erreurs.
Celle là te dit que le nom d'une fonction doit être une chaîne (Elements($i*2) et non $Elements($i*2))
En l'occurence Elements est un tableau, donc :
$Elements($i*2) => $Elements[$i*2]


Cordialement,



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

merci beaucoup pour l'aide
malheureusement je m'en sort pas, donc si une bonne âme peut revoir tout le code en le corrigeant, car même mes corrections sont aussi bancale que le code, je pensais pourtant y arriver grâce a l'explication de Kohntark -
Bref je vais continué a cogiter de mon coté,
encore merci pour l'explication.
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Si je peux me permettre un conseil :
Tente de corriger le code toi même (comme tu le dis en fin de message) et ne demande pas que les gens le fassent à ta place ("revoir tout le code en le corrigeant") car en le formulant ainsi ça ne donne pas envie de t'aider (c'est mon cas) Par ailleurs tu y gagneras à "plonger les mains dans le cambouis"
... pas de problème à t'aider dans ce cas.

Quelle est l'erreur maintenant ?


Cordialement,


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

dsl mais c'est le ras le bol qui a parlé,
en tout cas merci du conseil et de l'aide

je reviendrai sur le code quand je l'aurai mieux analysé

bonne continuation