Foros del Web » Programando para Internet » PHP »

Hice un formulario para recoger datos en bd y exportar (descargar) un excel al enviar

Estas en el tema de Hice un formulario para recoger datos en bd y exportar (descargar) un excel al enviar en el foro de PHP en Foros del Web. Hola, comunidad: Hice un formulario para recoger datos en bd y exportar (descargar) un excel al enviar, pero no se como hacer para que el ...
  #1 (permalink)  
Antiguo 31/03/2014, 07:09
Usuario no validado
 
Fecha de Ingreso: diciembre-2009
Ubicación: Bogotá
Mensajes: 462
Antigüedad: 14 años, 5 meses
Puntos: 18
Hice un formulario para recoger datos en bd y exportar (descargar) un excel al enviar

Hola, comunidad:

Hice un formulario para recoger datos en bd y exportar (descargar) un excel al enviar, pero no se como hacer para que el archivo no se descargue al entrar en la pagina sino al enviar el formulario. El fragmento de código, lo pongo:

CODIGO COMPLETO:

Código PHP:
<?php require_once('Connections/myr2014.php');?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO ingresonuevo (fecha, apellidos, nombres, cc, fechanac, fechaexp, ciudadnacced, rh, eps, afp, tallabotas, tallacamisa, email, telfijo, telmovil, proyectociudad) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['fecha'], "date"),
                       
GetSQLValueString($_POST['apellidos'], "text"),
                       
GetSQLValueString($_POST['nombres'], "text"),
                       
GetSQLValueString($_POST['cc'], "text"),
                       
GetSQLValueString($_POST['fechanac'], "text"),
                       
GetSQLValueString($_POST['fechaexp'], "text"),
                       
GetSQLValueString($_POST['ciudadnacced'], "text"),
                       
GetSQLValueString($_POST['rh'], "text"),
                       
GetSQLValueString($_POST['eps'], "text"),
                       
GetSQLValueString($_POST['afp'], "text"),
                       
GetSQLValueString($_POST['tallabotas'], "text"),
                       
GetSQLValueString($_POST['tallacamisa'], "text"),
                       
GetSQLValueString($_POST['email'], "text"),
                       
GetSQLValueString($_POST['telfijo'], "text"),
                       
GetSQLValueString($_POST['telmovil'], "text"),
                       
GetSQLValueString($_POST['proyectociudad'], "text"));

  
mysql_select_db($database_myr2014$myr2014);
  
$Result1 mysql_query($insertSQL$myr2014) or die(mysql_error());

  
$insertGoTo "ANUNCIOS/ACTUALIZADO/";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));
}
------------------------------------------------------
include(
"excelwriter.inc.php");

$excel=new ExcelWriter("reescribe_primernombre_primerapellido.xls");

if(
$excel==false) {
echo 
$excel->error;
}

//Escribimos la primera fila con las cabeceras
$myArr=array("Fecha","Apellidos","Nombres","Cedula","Fecha de Nacimiento","Fecha Exp Cedula","Ciudad de Nacimiento -Cedula-","Tipo de Sangre -RH-","EPS","AFP","Talla de Botas","Talla de Camisa","E-mail","Tel. Fijo","Tel. Movil","Ciudad del Proyecto");
$excel->writeLine($myArr);

//REALIZAMOS LA CONSULTA
$dbhost "localhost";
$dbuser "root";
$dbpassword "clave";
$dbname "besededatos";

$db2 mysql_connect($dbhost$dbuser$dbpassword) or die("Connection Error: " mysql_error());
mysql_select_db($dbname) or die("Error al conectar a la base de datos.");
$sql2 "SELECT * FROM ingresonuevo";
$sql2 .= " ORDER BY fecha ASC ";
$result2 mysql_query$sql2) or die("No se puede ejecutar la consulta: ".mysql_error());

//Escribimos todos los registros de la base de datos
//en el fichero EXCEL
while($Rs2 mysql_fetch_array($result2)) {
$myArr=array(
$Rs2['fecha'],
$Rs2['apellidos'],
$Rs2['nombres'],
$Rs2['cc'],
$Rs2['fechanac'],
$Rs2['fechaexp'],
$Rs2['ciudadnacced'],
$Rs2['rh'],
$Rs2['eps'],
$Rs2['afp'],
$Rs2['tallabotas'],
$Rs2['tallacamisa'],
$Rs2['email'],
$Rs2['telfijo'],
$Rs2['telmovil'],
$Rs2['proyectociudad'],

);
$excel->writeLine($myArr);
//Otra forma es
//$excel->writeLine($Rs2);
//De este modo volcariamos todos los registros seleccionados
//Sin necesidad de colocarlos/filtrar previamente en $myArr
}
$excel->close();

//Abrimos el fichero excel que acabamos de crear
header("location:reescribe_primernombre_primerapellido.xls");
?>
<!doctype html>
Donde puse las lineas ---------------- punteadas, es donde inserté el código que bajé de internet que me genera el excel.

Agradezco su orientación.
  #2 (permalink)  
Antiguo 31/03/2014, 08:43
 
Fecha de Ingreso: enero-2007
Mensajes: 285
Antigüedad: 17 años, 3 meses
Puntos: 21
Respuesta: Hice un formulario para recoger datos en bd y exportar (descargar) un exce

tenes que mover todo el bloque de creacion del xls.. dentro del if que revisa si fue enviado el formulario.. en tu caso..

Código:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 


}
yo lo pondria.. por aca..

Código:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) { 
  $insertSQL = sprintf("INSERT INTO ingresonuevo (fecha, apellidos, nombres, cc, fechanac, fechaexp, ciudadnacced, rh, eps, afp, tallabotas, tallacamisa, email, telfijo, telmovil, proyectociudad) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", 
                       GetSQLValueString($_POST['fecha'], "date"), 
                       GetSQLValueString($_POST['apellidos'], "text"), 
                       GetSQLValueString($_POST['nombres'], "text"), 
                       GetSQLValueString($_POST['cc'], "text"), 
                       GetSQLValueString($_POST['fechanac'], "text"), 
                       GetSQLValueString($_POST['fechaexp'], "text"), 
                       GetSQLValueString($_POST['ciudadnacced'], "text"), 
                       GetSQLValueString($_POST['rh'], "text"), 
                       GetSQLValueString($_POST['eps'], "text"), 
                       GetSQLValueString($_POST['afp'], "text"), 
                       GetSQLValueString($_POST['tallabotas'], "text"), 
                       GetSQLValueString($_POST['tallacamisa'], "text"), 
                       GetSQLValueString($_POST['email'], "text"), 
                       GetSQLValueString($_POST['telfijo'], "text"), 
                       GetSQLValueString($_POST['telmovil'], "text"), 
                       GetSQLValueString($_POST['proyectociudad'], "text")); 

  mysql_select_db($database_myr2014, $myr2014); 
  $Result1 = mysql_query($insertSQL, $myr2014) or die(mysql_error()); 




------------------------------------------------------ 
include("excelwriter.inc.php"); 

$excel=new ExcelWriter("reescribe_primernombre_primerapellido.xls"); 

if($excel==false) { 
echo $excel->error; 
} 

//Escribimos la primera fila con las cabeceras 
$myArr=array("Fecha","Apellidos","Nombres","Cedula","Fecha de Nacimiento","Fecha Exp Cedula","Ciudad de Nacimiento -Cedula-","Tipo de Sangre -RH-","EPS","AFP","Talla de Botas","Talla de Camisa","E-mail","Tel. Fijo","Tel. Movil","Ciudad del Proyecto"); 
$excel->writeLine($myArr); 

//REALIZAMOS LA CONSULTA 
$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpassword = "clave"; 
$dbname = "besededatos"; 

$db2 = mysql_connect($dbhost, $dbuser, $dbpassword) or die("Connection Error: " . mysql_error()); 
mysql_select_db($dbname) or die("Error al conectar a la base de datos."); 
$sql2 = "SELECT * FROM ingresonuevo"; 
$sql2 .= " ORDER BY fecha ASC "; 
$result2 = mysql_query( $sql2) or die("No se puede ejecutar la consulta: ".mysql_error()); 

//Escribimos todos los registros de la base de datos 
//en el fichero EXCEL 
while($Rs2 = mysql_fetch_array($result2)) { 
$myArr=array( 
$Rs2['fecha'], 
$Rs2['apellidos'], 
$Rs2['nombres'], 
$Rs2['cc'], 
$Rs2['fechanac'], 
$Rs2['fechaexp'], 
$Rs2['ciudadnacced'], 
$Rs2['rh'], 
$Rs2['eps'], 
$Rs2['afp'], 
$Rs2['tallabotas'], 
$Rs2['tallacamisa'], 
$Rs2['email'], 
$Rs2['telfijo'], 
$Rs2['telmovil'], 
$Rs2['proyectociudad'], 

); 
$excel->writeLine($myArr); 
//Otra forma es 
//$excel->writeLine($Rs2); 
//De este modo volcariamos todos los registros seleccionados 
//Sin necesidad de colocarlos/filtrar previamente en $myArr 
} 
$excel->close(); 

//Abrimos el fichero excel que acabamos de crear 
header("location:reescribe_primernombre_primerapellido.xls"); 



  $insertGoTo = "ANUNCIOS/ACTUALIZADO/"; 
  if (isset($_SERVER['QUERY_STRING'])) { 
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; 
    $insertGoTo .= $_SERVER['QUERY_STRING']; 
  } 
  header(sprintf("Location: %s", $insertGoTo)); 
}

lo que vas a tener que resolver es el tema de los dos header("location

espero haber ayudado..
  #3 (permalink)  
Antiguo 31/03/2014, 08:48
Usuario no validado
 
Fecha de Ingreso: diciembre-2009
Ubicación: Bogotá
Mensajes: 462
Antigüedad: 14 años, 5 meses
Puntos: 18
Respuesta: Hice un formulario para recoger datos en bd y exportar (descargar) un exce

Ok, gracias. Pero interpreté un poco mal el código. Porque puedo poner el codigo del formulario normal (sin el fragmento de código excel), me guarda los datos a la bd y luego, en otro .php, pongo el codigo de excel y me descarga los datos de la tabla en excel y me muestra los datos, que es lo que finalmnte necesito.

Ese codigo excel está diseñado para trabajarlo así, pero yo estaba pensando en ponerlo a funcionar como yo quería.
  #4 (permalink)  
Antiguo 31/03/2014, 08:56
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Hice un formulario para recoger datos en bd y exportar (descargar) un exce

Código PHP:
Ver original
  1. $request_method = $_SERVER['REQUEST_METHOD'];
  2.  if('POST' == $request_method){
  3.      //generas código con PHPExcel
  4.  }

Básicamente la idea es que verifiques si se hizo una petición de tipo post y que recibes los datos que esperas y entonces crear tu excel y lo envías.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 31/03/2014, 09:43
Usuario no validado
 
Fecha de Ingreso: diciembre-2009
Ubicación: Bogotá
Mensajes: 462
Antigüedad: 14 años, 5 meses
Puntos: 18
Respuesta: Hice un formulario para recoger datos en bd y exportar (descargar) un exce

Muchas Gracias, lo probaré de todos modos.

Etiquetas: bd, excel, fecha, formulario, html, mysql, recoger, registro, select, sql
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 08:17.