Hola...aca hay uno que me arme recien para mostrarte como funciona
Código PHP:
<?php
$user = "root"; #cambiar el propio
$pass = ""; #cambiar el propio
$host = "localhost"; #cambiar el propio
$db = "base"; #cambiar el propio
$excel = ""; #NO TOCAR
$separador = ";"; #El separador para cada campo
##########################################
# Campos de la tabla para hacer el query #
##########################################
$campos = "id,nombre,apellido,mail";
############################################################
# Array que contiene como clave impar el campo de la tabla #
# como par el titulo de la columna a mostrar #
############################################################
$arCampos = array(
'id','Id',
'nombre','Nombre',
'apellido','Apellido',
'mail','Mail'
);
mysql_connect($host,$user,$pass) or die ('error en conexion');;
mysql_select_db($db);
$query = "SELECT $campos FROM Tabla";
$result = mysql_query($query) or die ('error en query');
if(mysql_num_rows($result)){
###################################
# Agrego los titulos y los separo #
###################################
for($i=1;$i<count($arCampos);$i=$i+2){
$excel .= $arCampos[$i].$separador;
}
$excel .= "\n";
# Por cada fila
while($row = mysql_fetch_array($result)){
#muestro cada columna y la separo
for($i=0;$i<count($fields);$i=$i+2){
$name=$arCampos[$i];
$value=$list[$name];
$excel .= $value.$separador;
}
$excel .= "\n";
}
#genero el archivo CSV
$nomfile="archivo-". date("d-m-Y") . ".csv";
header("Expires: Mon, 26 Nov 1962 00:00:00 GMT");
header("Last-Modified: " . gmdate("D,d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: Application/x-vnd.msexcel");
header("Content-disposition: attachment; filename=$nomfile");
echo $excel;
}
?>