Appelez à une fonction indéfinie même si la fonction est sur une touche

Je travaille sur un file PHP qui exportera des données d'une table vers un file Excel. Un code que je dois utiliser est dans un file que include d dans le file actuel. Lorsque j'essaie d'exécuter le code, je reçois l'erreur suivante: Fatal error: Call to undefined function buscarFaltantesPorProveedor() in /require/exportarFaltantesExcel.php on line 13 .

Je suppose que je reçois cette erreur parce que j'appelle une variable de class, mais je ne suis pas certaine. Pouvez-vous m'aider, s'il vous plaît? Merci!

Code PHP excel:

 <?php error_reporting(E_ALL | E_WARNING | E_NOTICE); ini_set('display_errors', 1); include('../accesodatos/consultas.php'); require_once('../excel/Classes/PHPExcel.php'); require_once('../excel/Classes/PHPExcel/IOFactory.php'); $proveedor = $_GET['proveedor']; echo $proveedor; $objPHPExcel = new PHPExcel(); // $objPHPExcel = new PHPExcel(); $query = buscarFaltantesPorProveedor($proveedor); $row = 1; while($row_data = mysql_fetch_array($query)){ $col = 0; foreach($row_data as $key=>$value) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); $col++; } $row++; } header('Content-Type: application/vnd.openxmlformats- officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="'.$proveedor.date("Ymd").'".xlsx"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('php://output'); ?> 

Pièce de code dans consultas.php:

 function buscarFaltantesPorProveedor($proveedor){ conectar(); if(strcmp($proveedor,"Todos") == 0){ $instruccion = "SELECT * FROM articulos, estatus, ordenes, proveedor WHERE art_id_estatus = est_id AND art_id_orden = ord_id AND art_id_proveedor = pro_id_clave AND art_num_guia IS NULL"; }else{ $instruccion = "SELECT * FROM articulos, estatus, ordenes, proveedor WHERE art_id_estatus = est_id AND art_id_orden = ord_id AND art_id_proveedor = pro_id_clave AND art_num_guia IS NULL and pro_id_clave = '$proveedor'"; } $tabla = mysql_query($instruccion); return $tabla; } 

De plus, j'ai essayé d'utiliser $this pour appeler la méthode, mais j'ai également eu une erreur. Pourquoi donc? Je ne peux pas utiliser $this sur une méthode?

Une raison possible: peut-être buscarFaltantesPorProveedor est une méthode d'une class. Vérifiez si c'est dans la class AlgumaCoisa { ... } dans consultas.php, comme ceci:

 class AlgumaCoisa { /* Instead AlgumaCoisa, any name can be used. */ /* Some other code can go here */ function buscarFaltantesPorProveedor($proveedor){ /* ... */ } /* Some other code can go here */ } 

(il ne sera pas nommé AlgumaCoisa , il aura un autre nom, et d'autres choses peuvent être écrites avant l'ouverture { ).

Veuillez consulter consultas.php. Si c'est effectivement un membre d'une class, alors il faut l'appeler comme $object->buscarFaltantesPorProveedor$object est une instance de class. Vous devez créer une instance de la class, comme ceci:

$object = new AlgumaCoisa(/* some AlgumaCoisa-dependent code here */);

Au lieu d' AlgumaCoisa , écrivez le nom de la class qui est utilisé dans consultas.php.

Notez que les parameters entre parenthèses. Les parameters dans les parenthèses seront déterminés par une autre méthode dans la class, __construct .

Une autre raison possible: peut-être consultas.php est dans un espace de noms différent. Vérifiez s'il existe un namespace AlgumaCoisa; dans le haut de consultas.php. S'il existe, vous devez appeler votre fonction AlgumaCoisa\buscarFaltantesPorProveedor .