Pagina 1 di 1
Esportare una tabella in un file di excell
Inviato: 29/12/2003, 16:04
da Tato
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
Re: Esportare una tabella in un file di excell
Inviato: 29/12/2003, 16:26
da BluEdoG
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" ; )
Tato ha scritto:
header("Content-type: application/vnd.ms-excel; name=$excelFname");
header("Content-Disposition: inline; filename=$excelFname.xls");
Poi la riga successiva è errata
header("Content-Disposition: attachment; filename=$excelFname");
poi aggiungi sotto
header("Pragma: no-cache");
header("Expires: 0");
Inviato: 29/12/2003, 16:46
da Tato
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";
}
Inviato: 30/12/2003, 3:50
da BluEdoG
Mi sembra che manchi parecchia roba, non vedo un collegamento logico tra la select e l'aggancio per scaricare i dati.
Inviato: 30/12/2003, 10:47
da Tato
mhh, il mio probema è che me ne intendo poco di php, questo script l'ho recuperato da un sito e pensavo che funzionasse con pochi adattamenti, tu hai idea di come fare per farlo funzionare ?
grazie
Inviato: 30/12/2003, 16:12
da Tato
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";
}
}
-----------------------------------------------------------------------
Inviato: 30/12/2003, 21:13
da BluEdoG
aggiungi sotto header( etc :
header("Pragma: no-cache");
header("Expires: 0");