Ciao a tutti,
chiedo un aiuto per esportare una tabella in un file di
excell, ho realizzato lo script in PHP, lo eseguo ma invece di aprirsi la
finestra che mi chiede "Salva con il nome ..." mi viene l'output a video,
qui di seguito le due righe dello script che "dovrebbero" reindirizzare
l'output
qualcuno è in grado di aiutarmi ?!?!
grazie
header("Content-type: application/vnd.ms-excel; name=$excelFname");
header("Content-Disposition: inline; filename=$excelFname.xls");
p.s.
meglio ancora se qualcuno ha uno script che esporti un file con i prodotti più venduti per ogni singola categoria
thanks
Esportare una tabella in un file di excell
Moderatore: mod Generali
Re: Esportare una tabella in un file di excell
Excel con una L
cmq qui sotto dopo vnd.ms-excel non capisco cosa c'entra name=...
mettilo separato, prima dell'header (tra l'altro dovrebbe essere diverso del tipo $excelFname = "nomechevogliosiadiexcel" ; )
header("Content-Disposition: attachment; filename=$excelFname");
poi aggiungi sotto
header("Pragma: no-cache");
header("Expires: 0");
cmq qui sotto dopo vnd.ms-excel non capisco cosa c'entra name=...
mettilo separato, prima dell'header (tra l'altro dovrebbe essere diverso del tipo $excelFname = "nomechevogliosiadiexcel" ; )
Poi la riga successiva è errataTato ha scritto: header("Content-type: application/vnd.ms-excel; name=$excelFname");
header("Content-Disposition: inline; filename=$excelFname.xls");
header("Content-Disposition: attachment; filename=$excelFname");
poi aggiungi sotto
header("Pragma: no-cache");
header("Expires: 0");
saluti, Caneblu
[ www.caneblu.com ]
[ www.caneblu.com ]
ok grazie, ho fatto le modifiche che mi hai detto, adesso effettivamente mi si apre la finestra per il download però cerca di scaricarmi lo script php e non il contenuto della tabella
, puoi vedere se trovi l'errore ?
ti allego lo script:
$db="xxxxxxx";
$tbl="yyyyyyy";
$excelFname="best_sellers.xls";
mysql_connect("localhost", "kkkkkkkk", "hhhhhhh")
or die (mysql_error());
mysql_select_db($db)
or die (mysql_error());
$rs=mysql_query("SELECT * FROM $tbl")
or die (mysql_error());
$fields=mysql_num_fields($rs);
// manda il header
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$excelFname.xls");
header("Pragma: no-cache");
header("Expires: 0");
for ($i=0; $i < $fields; $i++) {
if (mysql_field_name($rs,$i) != "ID")
// in una tabella excel il primo entry non puo' essere 'ID'
echo "". mysql_field_name($rs,$i) ."\t";
else
echo "Index\t";
}
echo "\n";
while ($row = mysql_fetch_row($rs)) {
$fl=mysql_num_fields($rs);
for ($i=0; $i<$fl; $i++)
echo "$row[$i]\t";
echo "\n";
}
, puoi vedere se trovi l'errore ?
ti allego lo script:
$db="xxxxxxx";
$tbl="yyyyyyy";
$excelFname="best_sellers.xls";
mysql_connect("localhost", "kkkkkkkk", "hhhhhhh")
or die (mysql_error());
mysql_select_db($db)
or die (mysql_error());
$rs=mysql_query("SELECT * FROM $tbl")
or die (mysql_error());
$fields=mysql_num_fields($rs);
// manda il header
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$excelFname.xls");
header("Pragma: no-cache");
header("Expires: 0");
for ($i=0; $i < $fields; $i++) {
if (mysql_field_name($rs,$i) != "ID")
// in una tabella excel il primo entry non puo' essere 'ID'
echo "". mysql_field_name($rs,$i) ."\t";
else
echo "Index\t";
}
echo "\n";
while ($row = mysql_fetch_row($rs)) {
$fl=mysql_num_fields($rs);
for ($i=0; $i<$fl; $i++)
echo "$row[$i]\t";
echo "\n";
}
Mi sembra che manchi parecchia roba, non vedo un collegamento logico tra la select e l'aggancio per scaricare i dati.
saluti, Caneblu
[ www.caneblu.com ]
[ www.caneblu.com ]
ok, ho smanettato più che potevo ed ho riscritto lo script, adesso in parte funziona, nel senso che l'output viene visualizzato a video ma non si apre la finestra che mi chiede di salvare il file, any idea ?
ecco lo script:
------------------------------------------------------------------------------
require('includes/application_top.php');
$numero_records = 100;
$best_sellers_query = tep_db_query("select p.products_id, pd.products_name, p.products_ordered from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '" . $languages_id . "' order by p.products_ordered DESC, pd.products_name limit " . $numero_records);
$filename="best_sellers.xls";
header ("Content-type: application/vnd.ms-excel");
header ("Content-Dsiposition: attachment; filename=$filename");
$fields=mysql_num_fields($best_sellers_query);
for ($i=0; $i < $fields; $i++)
{
if (mysql_field_name($best_sellers_query,$i) != "ID")
// in una tabella excel il primo entry non puo' essere 'ID'
echo "". mysql_field_name($best_sellers_query,$i) ."\t";
else
echo "Index\t";
}
echo "\n";
while ($row = mysql_fetch_row($best_sellers_query))
{
$fl=mysql_num_fields($best_sellers_query);
for ($i=0; $i<$fl; $i++)
{
echo "$row[$i]\t";
echo "\n";
}
}
-----------------------------------------------------------------------
ecco lo script:
------------------------------------------------------------------------------
require('includes/application_top.php');
$numero_records = 100;
$best_sellers_query = tep_db_query("select p.products_id, pd.products_name, p.products_ordered from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_ordered > 0 and p.products_id = pd.products_id and pd.language_id = '" . $languages_id . "' order by p.products_ordered DESC, pd.products_name limit " . $numero_records);
$filename="best_sellers.xls";
header ("Content-type: application/vnd.ms-excel");
header ("Content-Dsiposition: attachment; filename=$filename");
$fields=mysql_num_fields($best_sellers_query);
for ($i=0; $i < $fields; $i++)
{
if (mysql_field_name($best_sellers_query,$i) != "ID")
// in una tabella excel il primo entry non puo' essere 'ID'
echo "". mysql_field_name($best_sellers_query,$i) ."\t";
else
echo "Index\t";
}
echo "\n";
while ($row = mysql_fetch_row($best_sellers_query))
{
$fl=mysql_num_fields($best_sellers_query);
for ($i=0; $i<$fl; $i++)
{
echo "$row[$i]\t";
echo "\n";
}
}
-----------------------------------------------------------------------
aggiungi sotto header( etc :
header("Pragma: no-cache");
header("Expires: 0");
header("Pragma: no-cache");
header("Expires: 0");
saluti, Caneblu
[ www.caneblu.com ]
[ www.caneblu.com ]