我正在处理一个将数据从表导出到Excel文件的PHP文件。我需要使用的一段代码是在当前文件中include
d的文件中。但是,当我尝试运行代码时,出现以下错误:Fatal error: Call to undefined function buscarFaltantesPorProveedor() in /require/exportarFaltantesExcel.php on line 13
。
我猜我得到这个错误,因为我正在调用一个类变量,但我不确定。你能帮我么?谢谢!
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("Y-m-d").'".xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
?>
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;
}
另外,我尝试使用$this
来调用方法,但我也遇到了错误。这是为什么?我不能在方法上使用$this
吗?
答案 0 :(得分:1)
可能的原因:也许buscarFaltantesPorProveedor
是一个类的方法。检查它是否在consultas.php中的class AlgumaCoisa { ... }
内,如下所示:
class AlgumaCoisa {
/* Instead AlgumaCoisa, any name can be used. */
/* Some other code can go here */
function buscarFaltantesPorProveedor($proveedor){
/* ... */
}
/* Some other code can go here */
}
(它不会被命名为AlgumaCoisa
,它会有一些其他名称;另外,可以在开始{
之前编写其他内容。)
请查看consultas.php。如果这确实是一个类的成员,那么你必须像$object->buscarFaltantesPorProveedor
那样调用它,其中$object
是类的实例。您需要创建类的实例,如下所示:
$object = new AlgumaCoisa(/* some AlgumaCoisa-dependent code here */);
而不是AlgumaCoisa
,写下在consultas.php中使用的类的名称。
注意括号内的参数。括号中的参数将由类__construct
中的另一个方法确定。
另一个可能的原因:也许consultas.php在不同的命名空间中。检查consultas.php顶部是否有namespace AlgumaCoisa;
。如果有,您需要调用您的函数AlgumaCoisa\buscarFaltantesPorProveedor
。
答案 1 :(得分:0)
前天,我遇到了同样的错误。
index.php
<?php
echo 'This works';
require 'functions.php';
echo butThis();
?>
functions.php
<?
function butThis() {return "not works";}
?>
花了我一段时间...但是今天我看到问题出在short_open_tag:-)