Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/07/2015, 10:06
gerrardmagallanes
 
Fecha de Ingreso: julio-2015
Ubicación: Saltillo, Coahuila
Mensajes: 3
Antigüedad: 8 años, 9 meses
Puntos: 0
Pregunta PHPWord llenar plantilla con registros de una tabla mysql

Qué tal, soy nuevo en este foro y también el lo que respecta a la programación en el lenguaje php.

Bueno mi duda es la siguiente:

Estoy realizando un proyecto para crear vales de gasolina, los vales llevan datos como departamento, responsable, fecha, cantidad, artículo, importe, entre otros...

Con la ayuda de la librería PHPWord creo un documento de word que me servira como plantilla, en ella diseño las tablas de los vales y defino las varibles que reemplazaré con php.

Tengo mi documento php con el cual proceso la plantilla y reemplazo las variables.
Para llenar los vales hago uso de un formulario html, este formulario tiene conexión con el documento php y con una base de datos en mysql.

Al momento de llenar los campos del formulario se guardan en la base de datos y a su vez son procesados por el documento php para reemplazarlos en la plantilla de word.

El problema es que sólo puedo crear un vale, es decir que cuando termino de llenar todos los campos del formulario y doy click al botón para enviar los datos solo me crea un solo vale y se descarga el documento de Word con dicho vale.

La aplicación hasta el momento me funciona muy bien, el único problema es ese, que no sé como crear un documento de word con más de un vale, es decir que el formulario me permita llenarlo cuantas veces quiera antes de descargar el documento y que los datos que se tomen para llenar los vales sean tomados de la base de datos. No sé si me explico bien

Anexo los códigos de los archivos que utilizo

Código php:

Código PHP:
<?php
require_once dirname(__FILE__).'/PHPWord-master/src/PhpWord/Autoloader.php';
PhpOfficePhpWordAutoloader::register();

use 
PhpOfficePhpWordTemplateProcessor;


$total $_REQUEST[cantn] * $_REQUEST[precio];


$conexion=mysql_connect("localhost","root","") or
  die(
"Problemas en la conexion");
mysql_select_db("presi",$conexion) or
  die(
"Problemas en la seleccion de la base de datos");
mysql_query("insert into vales(dpto,rsp,cantn,imp,precio,uni,placas,placas2) values ('$_REQUEST[dpto]','$_REQUEST[rsp]','$_REQUEST[cantn]','$_REQUEST[imp]','$total','$_REQUEST[uni]','$_REQUEST[placas]','$_REQUEST[placas2]')"$conexion) or
  die(
"Problemas en el select".mysql_error());
mysql_close($conexion);

$templateWord = new TemplateProcessor('plantilla.docx');
 
//$nombre = $_REQUEST['nombre'];
$folio $_GET['id'];
$departamento $_REQUEST['dpto'];
$responsable $_REQUEST['rsp'];
$dia $_REQUEST['dia'];
$mes $_REQUEST['mes'];
$year $_REQUEST['year'];
$cantn $_REQUEST['cantn'];
$cantl $_REQUEST['cantl'];
//$articulo = $_REQUEST['articulo'];
$importe $_REQUEST['imp'];
$unidad $_REQUEST['uni'];
$placas $_REQUEST['placas'];


// --- Asignamos valores a la plantilla
//$templateWord->setValue('nombre',$nombre);
$templateWord->setValue('folio',$folio);
$templateWord->setValue('departamento',$departamento);
$templateWord->setValue('responsable',$responsable);
$templateWord->setValue('dia',$dia);
$templateWord->setValue('mes',$mes);
$templateWord->setValue('year',$year);
$templateWord->setValue('cantn',$cantn);
$templateWord->setValue('cantl',$cantl);
//$templateWord->setValue('articulo',$articulo);
$templateWord->setValue('importe',$importe);
$templateWord->setValue('unidad',$unidad);
$templateWord->setValue('placas',$placas);


// --- Guardamos el documento
ob_clean();
$templateWord->saveAs('Vales.docx');

header("Content-Disposition: attachment; filename=Vales.docx; charset=iso-8859-1");
echo 
file_get_contents('Vales.docx');
?>
Código html:
Código HTML:
<html>
<head>
<title>Creaci&oacute;n de Vales</title>
<script type="text/javascript" src="dynamicoptionlist.js"></script>
<link rel="icon" type="image/png" href="favicon.png">
<link rel="stylesheet" href="estilos.css">
</head>
<body onLoad="initDynamicOptionLists()">
<header>
<div class="menu">
	<div class="contenedor">
		<div class="logo">
			<a href="index.html">Creaci&oacute;n de vales</a>
		</div>
		<nav>
		<ul>
		<li><a href="index.html">Inicio</a></li>
		<li><a href="altas.html">Creaci&oacute;n de vales</a></li>
		<li><a href="../graph2/index.php">Consulta de gr&aacute;ficas</a></li>
		<li><a href="extras.html">Vales Extras</a></li>
		</ul>
		</nav>
	</div>
</div>
</header>
<center>
	<div class="Shield">
		<img src="shield.png" width="150px" height="150px">
	</div>
<div class="CV">
	<h1>Creaci&oacute;n de Vales</h1>
</div>
<div class="formu">
<form action="template.php" method="post">
<b>Nombre:&nbsp;Presidencia Municipal</b><br><br>
<b>Departamento:</b>
<select name="dpto">
<option value="Seguridad">Seguridad</option>
<option value="Servicios Primarios">Servicios Primarios</option>
<option value="Ecologia">Ecolog&iacute;a</option>
<option value="Desarrollo Rural">Desarrollo Rural</option>
<option value="Desarrollo Social">Desarrollo Social</option>
<option value="Presidencia">Presidencia</option>
<option value="Fomento Civico">Fomento Civico</option>
<option value="Regidores">Regidores</option>
<option value="Recursos Humanos">Recursos Humanos</option>
<option value="Tesoreria">Tesorer&iacute;a</option>
<option value="Gestoria">Gestor&iacute;a</option>
<option value="Parques y Jardines">Parques y Jard&iacute;nes</option>
<option value="Contraloria">Contralor&iacute;a</option>
<option value="Alumbrado Publico">Alumbrado P&uacute;blico</option>
<option value="Juridico">Jur&iacute;dico</option>
<option value="Obras Publicas">Obras P&uacute;blicas</option>
<option value="Comunicacion Social">Comuniaci&oacute;n Social</option>
<option value="DIF">DIF</option>
<option value="Biblioteca">Biblioteca</option>
<option value="Secretaria del Ayuntamiento">Secretar&iacute;a del Ayuntamiento</option>
<option value="Proteccion Civil">Protecci&oacute;n Civil</option>
<option value="Bomberos">Bomberos</option>
<option value="Turismo Municipal">Turismo Municipal</option>
<option value="Union de Pensionados">Uni&oacute;n de Pensionados</option>
<option value="SEDENA Ejercito Mexicano">SEDENA Ejercito Mexicano</option>
<option value="Instituto de la Juventud">Instituto de la Juventud</option>
<option value="Centro de Salud">Centro de Salud</option>
<option value="Apoyo Cam 10">Apoyo Cam 10</option>
<option value="Apoyo estudiantes Ejido La Cecilia CBTA">Apoyo estudiantes Ejido La Cecilia CBTA</option>
<option value="Apoyo Atencion Medica Oficial de Seguridad">Apoyo Atenci&oacute;n M&eacute;dica Oficial de Seguridad</option>
<option value="Apoyo EMSAD 28 de Agosto">Apoyo EMSAD 28 de Agosto</option>
<option value="Apoyo estudiantes ejido el Durazno">Apoyo estudiantes ejido el Durazno</option>
<option value="Apoyo estudiantes ejido Ganivete">Apoyo estudiantes ejido Ganivete</option>
<option value="Apoyo estudiantes ejido Estacion Madero">Apoyo estudiantes ejido Estaci&oacute;n Madero</option>
</select><br><br>
<b>Responsable:</b>
<select name="rsp">
</select><br><br>
<b>Fecha:</b><br><br>
D&iacute;a:
<input type="text" size="5" placeholder="15" name="dia">&nbsp;&nbsp;
Mes:
<input type="text" size="5" placeholder="9" name="mes">&nbsp;&nbsp;
A&ntilde;o
<input type="text" size="5" placeholder="2015" name="year"><br><br>&nbsp;&nbsp;
<b>Cantidad:</b>
<input type="text" size="5" placeholder="40" name="cantn">&nbsp;&nbsp;&nbsp;&nbsp;
<b>Cantidad Letra:</b>
<input type="text" size="12" placeholder="Cuarenta" name="cantl"><br><br>
<b>Art&iacute;culo:</b>&nbsp;&nbsp;<i>Litros</i>&nbsp;&nbsp;
<b>Importe:</b>
<select name="imp">
	<option>Magna
	<option>Premium
	<option>Diesel
</select>&nbsp;&nbsp;
<b>Precio:<b>
<select name="precio">
</select><br><br>
<b>Seleccione o ingrese Unidad:</b><br><br>
<select name="uni">
</select><br><br>
<input type="text" size="25" placeholder="Camion de pasajeros" name="uni2"><br><br>
<b>Seleccione o ingrese placas:</b><br><br>
<select name="placas">
</select><br><br>
<input type="text" size="12" placeholder="EXO9843" name="placas2"><br><br>
<input type="submit" value="Registrar">
</div>
</form>
</center>
</body>
</html> 
Sí, mi código es un desastre pero como lo dije, soy nuevo en esto de la programación.
Espero y alguien me pueda ayudar ya que es lo único que me falta para terminar la aplicación