Foros del Web » Programando para Internet » PHP »

Volcar a Excel con "cambios"

Estas en el tema de Volcar a Excel con "cambios" en el foro de PHP en Foros del Web. Hola quería preguntarles lo siguiente: Estoy preparando un script para tomar los valores de una BD y volcarlos a un excel (.xls). Previamente se indica ...
  #1 (permalink)  
Antiguo 26/10/2005, 03:29
 
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 1
Exclamación Volcar a Excel con "cambios"

Hola quería preguntarles lo siguiente:
Estoy preparando un script para tomar los valores de una BD y volcarlos a un excel (.xls).
Previamente se indica en un formulario los datos que se quieren exportar.
Asi tengo, ID - nombre - DNI - telefono - email
ahora bien, en la BD, los nombres de las respectivas columnas son distintos. id - Uname - Jpn...
Lo que buscaba era recibir las variables del formulario y armar las columnas del .XLS pero cambiando el nombre de las columnas de la BD.
Para una idea grafica:
Para la columna id, mostrar en Excel: Registro numero.
Al lado de ésta y para la columna Uname, muestra en Excel: Apellido y Nombre.
Y asi respectivamente... imagino que debe ser facil.
Por ahora lo que estube intentando, funcionaba perfectamente! :) Pero tengo el gran problema de que si no se seleccionaba, Por ej. nombre, salía en el Excel la columna Apellido y nombre, pero Vacía.
Supongo que tendré que crear un array que, segun que variables se reciban desde el formulario, le diga a un bucle que datos Mostrar en Excel y con que Nombre de columna.

Gracias. Espero haber sido claro.
Saludos!
  #2 (permalink)  
Antiguo 28/10/2005, 05:12
 
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 1
:(

Buhé... imaginaba que era fácil.
  #3 (permalink)  
Antiguo 28/10/2005, 07:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A ver .. si dices que estás probando algo .. y que tienes cierto problema concreto . .No crees que será mejor -aportar- el código de lo que ya has hecho y ahí centrar el problema .. tal vez sea poca cosa y te podramos orientar concretamente sobre -tu código- ...

Si no obtienes respuesta .. la mayoría de veces es por eso que acabo de decirte .. hablas de algo que has hecho y no nos lo indicas, así que es dificil decirte "mira por aquí o por allá" haciendo tentativas .. mejor aclara el tema, aporta más datos de tu problema y veras seguramente mejores respuestas y más atinadas.

Un saludo,
  #4 (permalink)  
Antiguo 28/10/2005, 09:22
 
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 1
De acuerdo

Hola, viejo!
Si, la verdad es que no me explique bien... pido disculpas.
Busco crear un .XLS con los registros que devuelve una consulta a la BD, Pero! los cambiando los Nombres de las Columnas de la BD a algo mas legible...
Empeze probando con el siguiente codigo:

Código PHP:
include('conf.php');
#El corte para cada campo (\t=xls - ;=CSV)
$corte "\t"
$excel "";
 
# Campos de la tabla para hacer el query 
$campos "id,username,passwd,email"
# Array campo, columna en .XLS
 
$arCampos = array( 
'id','Id'
'username','Nombre'
'passwd','Clave de acceso'
'email','Mail' 
); 
$query "SELECT $campos FROM users"
$result mysql_query($query$conexion) or die ('error en query'); 
if(
mysql_num_rows($result)){ 
# Agrego los nombres de columna y los corto 
for($i=1;$i<count($arCampos);$i=$i+2){ 
$excel .= $arCampos[$i].$corte

$excel .= "\n"
# Por cada fila 
while($list mysql_fetch_array($result)){ 
# muestro cada columna y la separo 
for($i=0;$i<count($list);$i=$i+2){ 
$name=$arCampos[$i]; 
$value=$list[$name]; 
$excel .= $value.$corte

$excel .= "\n"

# genero el archivo XLS 
$nomfile="archivo-"date("d-m-Y") . ".xls"
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

Bueno, éste funciona correctamente pero lo que buscaba era que mediante un formulario como:

Código HTML:
<form method="post" action="expxls.php">
Nombre? <input type="checkbox" name="form_option[0]" id="corte" value="username"><br>
Clave? <input type="checkbox" name="form_option[1]" id="pelo" value="passwd"><br>
DNI? <input type="checkbox" name="form_option[2]" id="pelo" value="dni"><br>
Email? <input type="checkbox" name="form_option[3]" id="pelo" value="email"><br>
<INPUT type="submit" value="enviar" name="submit"></form> 
se seleccionen los campos a buscar y que solo se muestren ésos en el .XLS
Probando me enrredé y no puedo salir...
Mis dudas concretas con: En caso de que use un formario (para dinamizar el script), como aplicar las variables del formulario en el codigo, de forma que SOLO muestre y cambie los nombres de las columanas del XLS.

Duenuevo, pido disculpas por no haberme expresado bien... aveces se me hace una laguna... y ni te cuento cuando se me cuelga la PC y pierdo la memoria!!!
Bueno, saludos!
  #5 (permalink)  
Antiguo 28/10/2005, 12:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tus checkbox .. los "form_option[]" que generas .. pasaran a tu script PHP como un array ..

Por ende .. en $_POST['form_option'] tendrás tu array con los checkbox seleccionados y los valores que indicastes en sus "value".

Este array .. según el uso que le vas a dar no está bien asignado sus valores:
$arCampos = array(
'id','Id',
'username','Nombre',
'passwd','Clave de acceso',
'email','Mail'
);

debería ser algo tipo:
Código PHP:
$arCampos = array( 
'id'=>'Id'
'username'=>'Nombre'
'passwd'=>'Clave de acceso'
'email'=>'Mail' 
); 
Fijate haciendo una simple prueba como te queda el array:
Código PHP:
echo "<pre>";
print_r($arCampos);
echo 
"</pre>"
Con esta "nueva" definición de tu array .. NO debes hacer un bucle for() dando saltos "de 2 en 2" para obtener la correspondencia "nombre origen -> nombre final" (menudo lio haces ahí)

Tu $campos .. lo puedes generar desde tu array $form_option usando:
Código PHP:
$campos=implode(",",$form_option); 
Con eso ya tienes el "dinamismo" (acuerdate de eliminar esa definición fija de: $campos = "id,username,passwd,email";)

Ese mismo array $form_options lo debes usar para encontrar las equivalencias de un array contra el otro ($arCampos).

Un saludo,
  #6 (permalink)  
Antiguo 29/10/2005, 10:24
 
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 1
De acuerdo Funciona! ...a medias.

Funciona a medias, pero ya esta.

Gracias!, saludos.

Última edición por pincho; 03/11/2005 a las 19:06
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:21.