Je construis un script qui prend chaque fichier xls du dossier/uploads et le convertit au format CSV.Erreur PHP Appel à une fonction indéfinie, comment donner une donnée de méthode à utiliser
Mais, j'ai cette erreur:
Fatal error:
Uncaught Error: Call to undefined function convertXLStoCSV() in C:\xampp\htdocs\Technocripa-php\scandir.php:46 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Technocripa-php\scandir.php on line 46
Voici le code:
$dir = "uploads/*";
foreach(glob($dir) as $file)
{
if(!is_dir($file)) { echo basename($file)."\n";}
//--------------------------
$nameAsString = (string)$file;
require_once('Classes/PHPExcel.php');
$inputfilename = $nameAsString;
$outputfilename = 'convert.csv';
//Usage:
convertXLStoCSV($inputfilename, $outputfilename);
function convertXLStoCSV($infile, $outfile)
{
$fileType = PHPExcel_IOFactory::identify($infile);
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($infile);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save($outfile);
}
}
Je pense que l'erreur provient de mauvaise utilisation des variables, mais je ne peux pas trouver un moyen réparer ça. Tout ce que je veux c'est stocker le nom du fichier te dans le dossier uploads/dans une variable et l'utiliser tout au long de mon script.
Voici le programme sans la boucle, il fonctionne sans aucune erreur. Peut-être que ça aide à mieux comprendre.
require_once('Classes/PHPExcel.php');
$inputfilename = 'test2.xls';
$outputfilename = 'convert.csv';
//Usage:
convertXLStoCSV($inputfilename, $outputfilename);
function convertXLStoCSV($infile, $outfile)
{
$fileType = PHPExcel_IOFactory::identify($infile);
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($infile);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'CSV');
$objWriter->save($outfile);
}
vous appelez la fonction avant qu'il ne soit en cours de création. – ThisGuyHasTwoThumbs
Vous n'avez pas besoin de redéfinir la fonction à chaque itération de la boucle, définissez-la une seule fois pour l'ensemble du script. –