Foros del Web » Programando para Internet » PHP »

Problema Reporte

Estas en el tema de Problema Reporte en el foro de PHP en Foros del Web. Buenas noches, estoy intentando exportar de una base de datos a un EXCELL con este codigo Código PHP: <?php //Exportar datos de php a Excel header ( "Content-Type: application/vnd.ms-excel" ); header ...
  #1 (permalink)  
Antiguo 11/02/2012, 00:49
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Problema Reporte

Buenas noches,

estoy intentando exportar de una base de datos a un EXCELL con este codigo

Código PHP:
<?php
//Exportar datos de php a Excel
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=Reportes.xls");
?>
<HTML LANG="es">
<TITLE>::. Exportacion de Datos .::</TITLE>
</head>
<body>
<?php
$NombreBD 
"Prueba";
$Servidor "localhost";
$Usuario "Prueba";
$Password ="";
$IdConexion mysql_connect($Servidor$Usuario$Password);
mysql_select_db($NombreBD$IdConexion);

$sql "SELECT C001PATEN, C001ADUSEC, C001REFPED, C001NUMPED, C001TIPOPE, D001FECEXT, D001FECREM, C001ADUSE, D001FECCAM, F001VALSEG FROM AT001 Where 2000003";
$result=mysql_query($sql,$IdConexion);

?>

<TABLE BORDER=1 align="center" CELLPADDING=1 CELLSPACING=1>
<TR>
<TD>PATENTE</TD>
<TD>ADUANA</TD>
<TD>REFERENCIA</TD>
<TD>PEDIMENTO</TD>
<TD>TIPO OPERACION</TD>
<TD>FECHA 1</TD>
<TD>FECHA 2</TD>
<TD>ADUSE</TD>
<TD>FECHA 3</TD>
<TD>VALOR</TD>
</TR>
<?php
while($row mysql_fetch_array($result)) {
printf("
"
.$row["C001PATEN"]."
"
.$row["C001ADUSEC"]."
"
.$row["C001REFPED"]."
"
.$row["C001NUMPED"]."
"
.$row["C001TIPOPE"]."
"
.$row["D001FECEXT"]."
"
.$row["D001FECREM"]."
"
.$row["C001ADUSE"]."
"
.$row["D001FECCAM"]."
"
.$row["F001VALSEG"]."
"
);
}
mysql_free_result($result);
mysql_close($IdConexion); //Cierras la Conexión
?>
</table>
</body>
</html>
al ejecutarlo me descarga el EXCELL
y viene estos errores

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/otra.php on line 39
Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/otra.php on line 53

que sera? Gracias.
  #2 (permalink)  
Antiguo 11/02/2012, 03:57
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 3 meses
Puntos: 6
Respuesta: Problema Reporte

$sql = "SELECT C001PATEN, C001ADUSEC, C001REFPED, C001NUMPED, C001TIPOPE, D001FECEXT, D001FECREM, C001ADUSE, D001FECCAM, F001VALSEG FROM AT001 Where 2000003";

Revisa tu cadena SQL, esta incompleta.
La cabecera que pones le dice al explorador que interprete lo que esta recibiendo como un archivo de excel, pero no estas generando el archivo correctamente.

Te sugiero que para exportar a Excel utilices archivos CSV que pueden ser abierto por cualquier version de MS Excel, OpenOffice o Numbers (Mac)
__________________
El que teme preguntar, se averguenza de aprender.
  #3 (permalink)  
Antiguo 11/02/2012, 22:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema Reporte

ok, si creo que estaría mejor en csv, pero bueno el detalle aquí es mi consulta sql, pero no le veo el problema, tu si?

ya busque ayuda en google y muchas de las personas que tienen el mismo problema que yo lo resuelven arreglando su consulta, por lo que creo que tienes razón, sin embargo esa misma consulta la pego en phpmyadmin y me corre de 10, no le encuentro el error,

por otra parte, tendrás algún código para generar CSV que me recomiendes, después de lograr exportar el reporte necesito hacerle unas adecuaciones un tanto mas engorrosas, y como apenas estoy empezando en este mundo del PHP pues ando de piedra en piedra :D

de paso te digo lo que le quiero hacer haber si alguien me podría ir adelantando :D, necesito poner una especie de formulario o input de texto, para que el usuario entre a mipagina.com/reporte.php y en el campo de texto escriba lo que en la consulta vendría siendo el "2000003", entonces el campo de texto debe asignar el valor que se le escriba a una variable, para que el resultado de la consulta arroje los datos correspondientes al numero que se le ponga. si me explico?.

ya estuve buscando un poco pero no lo eh encontrado, estoy seguro que debe venir en algún tutorial por que me parece que es algo básico, sin embargo como tengo este proyecto para corto plazo no tengo mucho tiempo disponible,

Muchísimas gracias al foro y a su gente, que nunca me han gustado esto de los foros pero este es distinto. sigan así.
  #4 (permalink)  
Antiguo 12/02/2012, 09:49
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema Reporte

Tu error es el que comenta @kez0, [B]Where 2000003[/B... where a que?, hay te falta indicar el campo donde se buscará el valor 2000003, la consulta correcta seria where miCampo = 2000003

Edito: por es necesario agregar un or die(mysql_error()) a todas las peticiones a MySQL...

Código PHP:
Ver original
  1. mysql_connect($host,$user,$pass) or die (mysql_error());
  2. mysql_select_db($db,$conexion) or die(mysql_error());
  3. mysql_query($sql,$conexion) or die(mysql_error());
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 13/02/2012, 09:58
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema Reporte

tienes toda la razon, esto me deuestra que me hace falta leerme todo el manual de comandos y detalles SQL. que barbaro,

bueno ya lo resolvi pero ahora tengo otro error,

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/otra.php on line 39

Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in /opt/lampp/htdocs/otra.php on line 53

asi quedo el codigo.

Código PHP:
<?php
//Exportar datos de php a Excel
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=Reportes.xls");
?>
<HTML LANG="es">
<TITLE>::. Exportacion de Datos .::</TITLE>
</head>
<body>
<?php
$NombreBD 
"Prueba";
$Servidor "localhost";
$Usuario "Prueba";
$Password ="";
$IdConexion mysql_connect($Servidor$Usuario$Password);
mysql_select_db($NombreBD$IdConexion);

$sql "SELECT C001PATEN, C001ADUSEC, C001REFPED, C001NUMPED, C001TIPOPE, D001FECEXT, D001FECREM, C001ADUSE, D001FECCAM, F001VALSEG FROM AT001 Where C001NUMPED=2000003";
$result=mysql_query($sql,$IdConexion);

?>

<TABLE BORDER=1 align="center" CELLPADDING=1 CELLSPACING=1>
<TR>
<TD>PATENTE</TD>
<TD>ADUANA</TD>
<TD>REFERENCIA</TD>
<TD>PEDIMENTO</TD>
<TD>TIPO OPERACION</TD>
<TD>FECHA 1</TD>
<TD>FECHA 2</TD>
<TD>ADUSE</TD>
<TD>FECHA 3</TD>
<TD>VALOR</TD>
</TR>
<?php
while($row mysql_fetch_array($result)) {
printf("
"
.$row["C001PATEN"]."
"
.$row["C001ADUSEC"]."
"
.$row["C001REFPED"]."
"
.$row["C001NUMPED"]."
"
.$row["C001TIPOPE"]."
"
.$row["D001FECEXT"]."
"
.$row["D001FECREM"]."
"
.$row["C001ADUSE"]."
"
.$row["D001FECCAM"]."
"
.$row["F001VALSEG"]."
"
);
}
mysql_free_result($result);
mysql_close($IdConexion); //Cierras la Conexión
?>
</table>
</body>
</html>
ahora si ya copie la consulta SQL en PHPMYADMIN y me asegure de copiarla bien y volverla a comparar con la que tengo aquí en el codigo y esta correcta, ahora me dice que el error esta en el array, me podrian ayudar,

Gracias.!
  #6 (permalink)  
Antiguo 13/02/2012, 10:22
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema Reporte

LISTO!..

Buenas, te hize caso, Nemutagk agregue los "or die" y con eso identifique el problema, el problema era que el usuario de mysql que estaba usando no tenia privilegios de usar la base de datos Prueba, jejeje, bastante tonto el problema pero ya salio,

crees que me puedas ayudar con el layout de salida, como le hago para modificar lo que obtengo al final, por que me sale asi,.

Código:
3682 800 JV-1200002 2000003 1 0000-00-00 800 0.00 3682 240 JV-1200017 2000003 1 0000-00-00 240 0.00

PATENTE	ADUANA	REFERENCIA	PEDIMENTO	TIPO OPERACION	FECHA 1	FECHA 2	ADUSE	FECHA 3	VALOR 
tal vez aquí no identifiques nada, pero lo que marque de ROJO son los datos que me arrojo la consulta y lo marcado en azul es el layout del EXCEL, si quito el headder me da el mismo resultado pero lógicamente en el explorador, .. alguien ayúdeme GRACIAS!
  #7 (permalink)  
Antiguo 13/02/2012, 11:05
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema Reporte

Lo del layout no te entendi nada!!!
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 13/02/2012, 11:28
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema Reporte

Cita:
Iniciado por Nemutagk Ver Mensaje
Lo del layout no te entendi nada!!!
si disculpa mi falta de claridad, me refiero a el orden en que me salen las cosas,

la linea que marque en rojo, es el resultado del QUERY pero todos los datos me los esta aventando en la Celda A1 todos en la misma celda solo separados por un espacio.

mientras que lo marcado con AZUL es la Cabecera que le di a las tablas en EXCEL,
por ejemplo yo le dije al código que me escribiera en todos los reportes las celdas

PATENTE | ADUANA | REFERENCIA | ETC | ETC | ETC

y cada valor que me arroje el QUERY me debe caer en su respectiva columna

ahora si me explico?
  #9 (permalink)  
Antiguo 13/02/2012, 11:34
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema Reporte

Obvio que te los imprime en una sola celda, y solo separados con un espacio, pues es el formato que les has dado, para que cada elemento este en su celda es necesario que le des el formato, PHP no entiende de HTML, así que el que le debe de dar el formato de salida debes ser tu, compara el código donde creas las cabeceras (código azul) y el código de los registros (rojo) y ve su diferencia...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #10 (permalink)  
Antiguo 13/02/2012, 14:42
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema Reporte

UFF Al fin, ya me esta generando el Excel Como lo necesito, ahora, necesito agregar a la consulta una Variable, me podridas ayudar a esto?

necesito convertir miCampo = 2000003 en una variable la cual quiero darle el valor por medio de un input text, o formulario o no se, me podrías orientar a esto?

te explico con mas detalle, si en la consulta busco 2000003 me va a arrojar 2 resultados siempre, por que ese valor existe en 2 aduanas 800 y 240, entonces le hice una modificación al query le agregue

Código:
where miCampo = 2000003 AND miotrocampo = 800
entonces ya nada mas me da un resultado, entonces necesito que mi campo sea una variable que se modifique escribiéndola y miotrocampo sea una variable que se modifique con un picklist, o no se como lo conozcas, en el picklist solo van a existir los valores 800 y 240.

hechame la mano con esto, ya con esto termino mi trabajo :DDD GRACIAS!

Última edición por danielmeza; 13/02/2012 a las 14:43 Razón: Mal CODE
  #11 (permalink)  
Antiguo 13/02/2012, 15:31
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema Reporte

no es por ofender ni mucho menos, pero, tienes serios problemas que son muy básicos en el desarrollo de una página web, deberías leer algún tutorial/manual/libro sobre desarrollo web y php para que entiendas las cosas básicas, con respecto a tu ultima pregunta busca en google ejemplos sobre formularios y como recoger variables via POST
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #12 (permalink)  
Antiguo 13/02/2012, 15:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema Reporte

si eso estoy haciendo, no me ofendes pues es solamente la verdad, no acostumbro a solicitar ayuda de esta forma sin antes leer pero es que como comente antes, tengo el tiempo encima, crei que seria mas rapido, ya avanze algo antes de que contestaras, tengo todo resuelto excepto una cosa.


quiero poner la variable $_POST["pedimento"] en el Query pero me da error
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /opt/lampp/htdocs/otra.php on line 21

estoy investigando como si es posible poner esta clase de variables en el query, y si no, de que forma se hace, tu me puedes ayudar?.

te pongo el codigo del query.

Código:
$sql = "SELECT C001PATEN, C001ADUSEC, C001REFPED, C001NUMPED,
C001TIPOPE, D001FECEXT, D001FECREM, C001ADUSE, D001FECCAM,
F001VALSEG, FROM AT001
Where C001NUMPED='$_POST['pedimento']' AND C001ADUSEC='$_POST['aduana']'";
antes de esto tengo un html con un form que me envia al archivo php.


Gracias.
  #13 (permalink)  
Antiguo 13/02/2012, 15:57
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema Reporte

ya quedo amigo Fueron las comillas del $_POST['pedimento'] debía ser $_POST[pedimento]


Creo que ya termine mi trabajo, aun asi creo que seguire dando lata con otros post, claro ya que termine de leerme los cursos basicos de todos estos lenguajes
  #14 (permalink)  
Antiguo 13/02/2012, 15:58
 
Fecha de Ingreso: febrero-2012
Mensajes: 24
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema Reporte

casi lo olvido,

Muchas gracias por la atención amigo,
  #15 (permalink)  
Antiguo 13/02/2012, 16:02
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Problema Reporte

o.O debes de escapar las variables dentro de una cadena para evitar problemas de comillas...

Código PHP:
Ver original
  1. $sql = "SELECT C001PATEN, C001ADUSEC, C001REFPED, C001NUMPED,
  2. C001TIPOPE, D001FECEXT, D001FECREM, C001ADUSE, D001FECCAM,
  3. F001VALSEG, FROM AT001
  4. Where C001NUMPED='".$_POST['pedimento']."' AND C001ADUSEC='".$_POST['aduana']."'";

Ahora, si los campos C001NUMPED y C001ADUSEC son del tipo int no debes agregar las comillas sencillas...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #16 (permalink)  
Antiguo 14/02/2012, 21:15
 
Fecha de Ingreso: enero-2004
Mensajes: 431
Antigüedad: 20 años, 3 meses
Puntos: 6
Respuesta: Problema Reporte

Tip de seguridad: No pases todas las variables asi nada mas a tu consulta SQL, puedes ser victima de una SQL Injection, utiliza algunas funciones como htmlentities() o crea tu propia tu propia funcion que limpie las cadenas completamente.
__________________
El que teme preguntar, se averguenza de aprender.

Etiquetas: mysql
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 07:33.