spreadsheet excel writer: проблемы с выводом информации

ayrat9

Новичок
spreadsheet excel writer: проблемы с выводом информации

при открытии генерируемого xls файла вместо данных выводится сообщение об ошибке:

Warning: realpath() [function.realpath]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/home/u151063/) in /home/u151063/php/lib/php/System.php on line 474

Warning: tempnam() [function.tempnam]: open_basedir restriction in effect. File() is not within the allowed path(s): (/home/u151063/) in /home/u151063/php/lib/php/OLE/PPS/File.php on line 88

что это означает?

-~{}~ 11.12.09 23:13:

некоторые подробности
php-код в исполняемом файле обрабатывается php-интерпретатором в виде модуля cgi.
pear подключен, инсталлированные пакеты вынесены за корень сайта

-~{}~ 11.12.09 23:50:

какого вида должна быть строка в php.ini, отвечающая за подключение pear пакетов?

-~{}~ 12.12.09 03:06:

помогло ручное переназначение папки для временных php файлов
в листинге файла system.php - строка return realpath('/tmp')

-~{}~ 12.12.09 05:03:

как переключаться между листами ?

-~{}~ 12.12.09 07:20:

Код:
sql_connect();

require_once "Spreadsheet/Excel/Writer.php"; 

$xls =& new Spreadsheet_Excel_Writer(); 

$xls->send('price_'.date('m-d-Y').'.xls'); 

$x=0;
$y=3;
$sheet=array();

$sql_query="SELECT id, name, url FROM ".$sql_pref."_cat_rubs WHERE level='1' ORDER BY code";
$sql_res=mysql_query($sql_query, $conn_id);
while (list($mainrub_id, $mainrub_name, $mainrub_url)=mysql_fetch_row($sql_res))
{
	$sheet[$x]=& $xls->addWorksheet($mainrub_url); 
	$MainHeadingFormat =& $xls->addFormat(); 
	$MainHeadingFormat->setFontFamily('Arial'); 
	$MainHeadingFormat->setBold(); 
	$MainHeadingFormat->setSize('16'); 
	
	$sheet[$x]->write(0,0,$mainrub_name,$MainHeadingFormat);
	$colHeadingFormat =& $xls->addFormat();
	$colHeadingFormat->setBold(); 
	$colHeadingFormat->setFontFamily('Helvetica'); 
	$colHeadingFormat->setSize('11');
	
	$colNames = array('www','vvv','yyy','uuu'); 
	
	$sheet[$x]->writeRow(1,0,$colNames,$colHeadingFormat);
	
	rubsub($mainrub_id);
	$x++;
}

function rubsub($rub_parent_id)
{
	global $sql_pref, $conn_id;
	global $y, $sheet, $xls, $x;
	$sheet[$x]->select();
	$RubHeadingFormat =& $xls->addFormat();
	$RubHeadingFormat->setBold();
	$sql_query1="SELECT id, name, level FROM ".$sql_pref."_cat_rubs WHERE parent_id='".$rub_parent_id."' ORDER BY code";
	$sql_res1=mysql_query($sql_query1, $conn_id);
	while (list($id1, $name1, $level1)=mysql_fetch_row($sql_res1))
	{
		$name1=str_replace(""", "\"", StripSlashes($name1));
		$sheet[$x]->write($y,0,$name1,$RubHeadingFormat);
		$y++;
		arts($id1, $level1);
		rubsub($id1);
	}
}

function arts($rub_id, $level2)
{
	global $sql_pref, $conn_id;
	global $usd_kurs, $eur_kurs;
	global $y, $sheet, $xls, $x;
	$sheet[$x]->select();
	$colTextFormat = & $xls->addFormat(); 
	$colArtikulFormat = & $xls->addFormat(); 
	$sheet[$x]->setColumn(0,0,10);
	$sheet[$x]->setColumn(1,1,12);
	$sheet[$x]->setColumn(2,2,80);
	$colTextFormat->setTextWrap();
	$colArtikulFormat->setAlign('center');
	$sql_query_1="SELECT ca.id, ca.artikul, ca.name, cp.id, cp.name, cp.name_eng FROM ".$sql_pref."_cat_arts AS ca, ".$sql_pref."_producers AS cp  WHERE ca.parent_id='".$rub_id."' AND cp.id=ca.producer_id AND ca.enable='Yes' AND ca.mirror_id='0' ORDER BY ca.code";
	$sql_res_1=mysql_query($sql_query_1, $conn_id);
		while (list($artid, $artartikul, $artname, $artproducer_id, $artproducer, $artproducer_eng)=mysql_fetch_row($sql_res_1))
	{
		$artname=str_replace(""", "\"", StripSlashes($artname));
		$artproducer=StripSlashes($artproducer);
		$artproducer_eng=StripSlashes($artproducer_eng);
		if (empty($artproducer_eng)) $artproducer_eng=$artproducer;
		
			$sql_query_2="SELECT price, valut FROM ".$sql_pref."_cat_price WHERE artikul='".$artartikul."' AND producer_id='".$artproducer_id."'";
			$sql_res_2=mysql_query($sql_query_2, $conn_id);
			list($artprice, $artvalut)=mysql_fetch_row($sql_res_2);
			$sheet[$x]->write($y,0,str_replace(",", ".", $artartikul),$colArtikulFormat);
			$sheet[$x]->write($y,1,$artproducer_eng,$colArtikulFormat);
			$sheet[$x]->write($y,2,$artname,$colTextFormat);
			$sheet[$x]->write($y,3,$artprice." р.",$colArtikulFormat);
			$y++;

	}
}

sql_close();

$xls->close();
Косяк №1
заполняется полностью только первый лист, в остальных листах прописывается только название главной рубрики

Косяк №2
если артикул имеет ведущий или последней цифрой ноль - то он почему-то обрезается
 

ayrat9

Новичок
за парту так за парту


переходим к PHPExcel

а если нет у меня php_zip.dll и соответственно класс ziparchive отсутствует
как быть с этой ошибкой
00:22:45 Create new PHPExcel object 00:22:45 Set properties 00:22:51 Write to Excel2007 format
Fatal error: Class 'ZipArchive' not found in /home/u151063/xxxxs.ru/www/PHPExcel/classes/PHPExcel/Writer/Excel2007.php on line 287

-~{}~ 13.12.09 00:28:

как подключить php_zip.dll к уже собранному php интерпретатору?
 
Сверху