Переменная не определена при экспорте в Excel

Я использую функцию экспорта в Excel с сайтом php / mysql. Он отлично работает, когда у меня есть заданный запрос в файле, документ xls загружается в одно мгновение.

У меня проблемы с тем, чтобы заставить его работать с пользовательской переменной php, как только я помещаю пользовательскую переменную в верхнюю часть файла php, чтобы пользователь мог изменить запрос, он запутывается и сообщает неопределенную переменную.

Я передаю переменную через html-форму, используя метод post, поэтому я не вижу, что я делаю неправильно, может ли кто-нибудь указать мне правильное направление?

Первый файл — exportoexcel.php, его селектор запросов, который затем вызывается следующим файлом.

<?php

$VARIABLE="IDNX";

class ExportToExcels
{
private $host;
private $dbUser;
private $dbPassword;
private $database;
private $dbTableName;
private $data;
private $mysqli;
private $displayColumns;
public $excelFileName;

public function __construct() {
$this->host = "****";
$this->dbUser = "****";
$this->dbPassword="****";
$this->database="****";
$this->excelFileName="Report1";
}

public function setServerSetting($host,$dbUser,$dbPassword,$database,$dbTableName)
{
$this->host = $host;
$this->dbUserName =$dbUser;
$this->dbPassword=$dbPassword;
$this->database=$database;
$this->tableName=$dbTableName;
}

public function establishConnection()
{
$mysqli = new mysqli($this->host, $this->dbUserName, $this->dbPassword, $this->database);
if ($mysqli->connect_errno) {
return false;
exit;
}
else
{
return $mysqli;
}
}

public function getAllData($mysqli)
{
$result = $mysqli->query("SELECT * FROM MTYDE WHERE VARIABLE LIKE '$VARIABLE'");
if($result->num_rows > 0){
while ($row = $result->fetch_assoc()){
$data[] = $row;
}
}
$result->close();
return $data;
}

public function closeConnection($mysqli)
{
$mysqli->close();
}

public function setExcelfileName($excelFileName)
{
$this->excelFileName=$excelFileName;
}

public function setContentTypeForExcel()
{
header ("Expires: 0");
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/vnd.ms-excel");
header ("Content-Disposition: attachment; filename=".$this->excelFileName.".xls");
header ("Content-Description: Generated Report" );
}

public function getColumnName($mysqli)
{
$result = $mysqli->query("SHOW COLUMNS FROM $this->tableName");
if($result->num_rows > 0){
while ($row = $result->fetch_object()){
$displayColumns[$row->Field] = ucwords(str_replace('_', ' ', $row->Field));
}
}
$result->close();
return $displayColumns;
}

public function generateExcelFile($mysqli , $options=null)
{
$this->displayColumns=$this->getColumnName($mysqli);
$this->data=$this->getAllData($mysqli , $options);
$this->setContentTypeForExcel();

echo 'Report' ."\n";
echo 'Date:'."\t" . date("F j, Y, g:i a") ."\n";
echo "\n";

$totalRecord=count($this->displayColumns);
$i=1;
foreach($this->displayColumns as $val)
{
echo ($i == $totalRecord) ? $val . "\n" : $val . " \t" ;
$i++;
}

$totalRow= count($this->data);
for($i=0; $i < $totalRow; $i++ ) { $y=1; foreach($this->displayColumns as $key=>$val)
{
echo ($y == $totalRecord) ? $this->data[$i][$key] . " \n" : $this->data[$i][$key] . " \t" ;
$y++;
}
}
}

}

?>

Файл отчета, который скачивает Excel

 <?php

$VARIABLE="IDNX";

include "/exportoexcel.php";
//Lets create object of class
$exportToExcelObj = new ExportToExcels();
//Server Setting
$exportToExcelObj->setServerSetting("localhost","***","***","***","***");
//Establish a connection
$mySQLiConn=$exportToExcelObj->establishConnection();
//Provide your Report Name
$exportToExcelObj->setExcelfileName('MEASDATA');
// Generating report
$exportToExcelObj->generateExcelFile($mySQLiConn);
//Close connection
$exportToExcelObj->closeConnection($mySQLiConn);

?>

0

Решение

У вас есть проблема с объемом здесь.

Что вы могли бы сделать, это отправить ваш var в конструктор:

$exportToExcelObj = new ExportToExcels($VARIABLE);

Тогда в вашем конструкторе:

public function __construct($var) {
$this->host = "****";
$this->dbUser = "****";
$this->dbPassword="****";
$this->database="****";
$this->excelFileName="Report1";
$this->VARIABLE = $var
}

И позже использовать $this->VARIABLE при необходимости.

Некоторые объяснения:

$var = 'something';

class MyClass {

private $classVar = 'something else';

function showVar() {
echo $var;
}

function showClassVar() {
echo $this->classVar;
}

}

$class = new Class;
$class->showVar(); // Won't work, $var is not defined in the scope of your class (and of your function)
$class->showClassVar(); // Works, $classVar is a class property
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]