Foros del Web » Programando para Internet » PHP »

Problemita con Formulario en PHP

Estas en el tema de Problemita con Formulario en PHP en el foro de PHP en Foros del Web. Hola a todos, tengo un formulario con el cual estoy efectuando una encuesta online a mis proveedores, dicho formulario funciona perfectamente. Pero lo que quiero ...
  #1 (permalink)  
Antiguo 15/10/2009, 10:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Problemita con Formulario en PHP

Hola a todos, tengo un formulario con el cual estoy efectuando una encuesta online a mis proveedores, dicho formulario funciona perfectamente.

Pero lo que quiero hacer es una plantilla en html para la recepcion de la informacion y no me llegue al correo como "simple texto". si no que quiero que me llegue de una forma tipo reporte.

Este es el codigo actual con el que procesa lo que me enviará al correo:

Código PHP:
$body "<strong>Datos del Proveedor</strong><br><br>
    <strong>1.- ¿Cuenta con un Sistema de Calidad certificado en ISO 9001 o equivalente?</strong><br>"
.$_POST['r01']."<br>
<strong>2.- ¿Cuenta con alguna certificación como proveedor confiable?  </strong><br> "
.$_POST['r02']."<br>
<strong>¿Cuenta con un Sistema de Calidad implantado?  </strong> <br>"
.$_POST['r03']."<br>
<strong>Indique que procedimientos de Gestión de Calidad tiene implantados.</strong> <br>"
.$_POST['r04']."<br>
<strong>¿Cuenta con un Departamento de Calidad?  </strong> <br>"
.$_POST['r05']."<br>
<strong>¿Los productos que comercializa cuentan con certificados de calidad?  </strong><br> "
.$_POST['r06']."<br><br>
<strong>DATOS DE LA EMPRESA</strong> <br><br>
<strong>Nombre:  </strong> "
.$_POST['nombre']."<br>
<strong>Dirección:  </strong> "
.$_POST['direccion']."<br>
<strong>Colonia:  </strong>"
.$_POST['colonia']."<br>
<strong>Municipio:  </strong>"
.$_POST['municipio']."<br>
<strong>Estado:  </strong>"
.$_POST['estado']."<br>
<strong>Telefono 1:  </strong>"
.$_POST['tel1']."<br>
<strong>Telefono 2:  </strong> "
.$_POST['tel2']."<br>
<strong>Fax:  </strong>"
.$_POST['fax']."<br>
<strong>Persona de Contacto:  </strong>"
.$_POST['contacto1']."<br>
<strong>E-Mail:  </strong>"
.$_POST['email1']."<br>
<strong>Responsable de Calidad:  </strong>"
.$_POST['contacto2']."<br>
<strong>Email:  </strong>"
.$_POST['email2']."<br><br>
<strong>DATOS DE FACTURACION:  </strong><br><br>
<strong>Razon Social:  </strong>"
.$_POST['razon']."<br>
<strong>RFC:  </strong>"
.$_POST['rfc']."<br>
<strong>Direccion:  </strong>"
.$_POST['direccion2']."<br>
<strong>Numero de Cuenta:  </strong>"
.$_POST['cuenta']."<br>
<strong>Banco:  </strong>"
.$_POST['banco']."<br><br>"
Entonces, lo que hice fue esta plantilla en html:

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<style type="text/css">
<!--
.P {
	font-size: 24px;
	text-align: center;
}
.CUES {
	text-align: center;
}
.P {
	font-family: Georgia, "Times New Roman", Times, serif;
}
.P {
	font-family: "Courier New", Courier, monospace;
}
.P {
	font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
}
table {
	font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
	font-size: 14px;
}
.CUES .P .P .P {
	font-size: 16px;
}
-->
</style>
</head>

<body>
<table width="926" border="0">
  <tr>
    <td><strong><em><img src="http://icisamex.com/proveedores/logoicisa.jpg" alt="" width="224" height="137" /></em></strong></td>
    <td><p class="P"><span class="P"><span class="P"><span class="P">INGENIERIA CONTROL E INTRUMENTACION S.A. DE C.V.</span></span></span></p>
    <p class="CUES"><span class="P"><span class="P"><span class="P">CUESTIONARIO DE HOMOLOGACIÓN DE PROVEEDORES</span></span></span></p></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>
<table width="926" border="0">
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Fecha:</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Razón Social</td>
    <td>&nbsp;</td>
    <td>RFC:</td>
    <td>&nbsp;</td>
  </tr>
</table>
<table width="926" border="0">
  <tr>
    <td colspan="3">-------------------------------------------------------------------------------------------------------------------</td>
  </tr>
  <tr>
    <td>DATOS DEL PROVEEDOR</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3">-------------------------------------------------------------------------------------------------------------------</td>
  </tr>
</table>
<table width="648" border="0">
  <tr>
    <td width="193">Nombre:</td>
    <td width="445">&nbsp;</td>
  </tr>
  <tr>
    <td>Dirección (Calle y No.):</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Colonia o Fracc.:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Municipio:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Teléfono 1:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Teléfono 2:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Fax:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Persona de Contacto:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Email:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Responsable de Calidad:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Email:</td>
    <td>&nbsp;</td>
  </tr>
</table>
<table width="926" border="0">
  <tr>
    <td colspan="3">-------------------------------------------------------------------------------------------------------------------</td>
  </tr>
  <tr>
    <td>DATOS DE FACTURACIÓN</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3">-------------------------------------------------------------------------------------------------------------------</td>
  </tr>
</table>
<table width="648" border="0">
  <tr>
    <td>Razón Social:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>R.F.C.</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Dirección:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>No. de Cuenta:</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Banco:</td>
    <td>&nbsp;</td>
  </tr>
</table>
<table width="926" border="0">
  <tr>
    <td colspan="3">-------------------------------------------------------------------------------------------------------------------</td>
  </tr>
  <tr>
    <td>RESPUESTAS DE LA EVALUACIÓN</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td colspan="3">-------------------------------------------------------------------------------------------------------------------</td>
  </tr>
</table>
<table width="926" border="0">
  <tr>
    <td>1.- ¿Cuenta con un Sistema de Calidad certificado en ISO 9001 o equivalente?</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>2.- ¿Cuenta con alguna certificación como proveedor confiable?</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>3.- ¿Cuenta con un Sistema de Calidad implantado?</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>3.A.- Indique que procedimientos de Gestión de Calidad tiene implantados.</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>4.- ¿Cuenta con un Departamento de Calidad?</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>5.- ¿Los productos que comercializa cuentan con certificados de calidad?*</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html> 
Lo que quiero saber es como puedo hacer para que el correo que me envia el formulario me llegue con ese formato.

Espero haber sido claro, cualquier duda o cosa que necesiten estoy a sus ordenes.

Muchas gracias.
  #2 (permalink)  
Antiguo 15/10/2009, 10:32
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Problemita con Formulario en PHP

Cita:
Iniciado por joelmg Ver Mensaje
Lo que quiero saber es como puedo hacer para que el correo que me envia el formulario me llegue con ese formato.

Espero haber sido claro, cualquier duda o cosa que necesiten estoy a sus ordenes.

Muchas gracias.
Te sugiero usar phpmailer así podras enviar tus correos en html o como quieras.
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #3 (permalink)  
Antiguo 15/10/2009, 10:45
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problemita con Formulario en PHP

Hola hieloverde, gracias por tu tiempo

Mira, casualmente estoy utilizando phpmailer, pero no se como hacer para crear mis propias plantillas, por favor ayudame.

Gracias.
  #4 (permalink)  
Antiguo 15/10/2009, 11:37
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Problemita con Formulario en PHP

Bueno, para crear la plantilla existen varios metodos, uno de ellos (el más simple) consiste en ubicar claves dentro de tu plantilla para luego sustituirlas con php, algo así:

nombre: {nombre}

Entonces al mandar tu correo, lees la plantilla y sustituyes (mediante str_replace) la clave {nombre} por el nombre de tu usuario digamos ¿me explico?.

Ejmplo de la plantilla (plantilla.html):

Código HTML:
<b>Plantilla de correo en HTML</b><br><br>
Nombre: <b>{nombre}</b> 
Código PHP:
<?php
/* Parte que procesa la plantilla */

$abrir_plantilla fopen("plantilla.html","r"); 
$plantilla01 fread($abrir_plantilla,filesize("plantilla.html")); 
fclose($abrir_plantilla); 

$plantilla01 str_replace("{nombre}",$_REQUEST['nombre'],$plantilla01); 
?>
Finalmente la variable $plantilla01 es la que usas como "Body" en el phpmailer.
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #5 (permalink)  
Antiguo 15/10/2009, 12:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problemita con Formulario en PHP

Mira, la verdad no enterndi lo que me explicaste, pero mira te pongo este otro ejemplo sencillo:

Código HTML:
<?php
require("class.phpmailer.php");
$msg = "";
if ($_POST['action'] == "send") {
	$varname = $_FILES['archivo']['name'];
    $vartemp = $_FILES['archivo']['tmp_name'];
	
	$mail = new PHPMailer();
	$mail->Host = "localhost";
	$mail->From = "nombre";
	$mail->FromName = $_POST['name'];
	$mail->Subject = "Usuarios de prueba";
	$mail->AddAddress('[email protected]');
	if ($varname != "") {
		$mail->AddAttachment($vartemp, $varname);
	}
	
		$body = "<strong>Datos del formulario</strong><br><br>
	
<strong>Usuario:**</strong>".$_POST['usuario']."<br>
<strong>Contraseña:**</strong>".$_POST['pass']."<br><br>";

$body.= "<i>ALERTA: Contestar al email proporcionado por el cliente, no dar al boton Responder.</i>";	
	$mail->Body = $body;
	$mail->IsHTML(true);
	$mail->Send();
	$msg = "Tus datos han sido enviados correctamente, gracias por tu tiempo, ya puedes cerrar la ventana.";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <table width="200" border="0">
    <tr>
      <td>nombre</td>
      <td><label>
        <input type="text" name="usuario" id="usuario" />
      </label></td>
    </tr>
    <tr>
      <td>contraseña</td>
      <td><label>
        <input type="text" name="pass" id="pass" />
      </label></td>
    </tr>
  </table>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Enviar" />
    </label>
  </p>
</form>
</body>
</html> 
Como puedes ver en el codigo, el contenido del formulario me llega en texto plano, solo con algunas negritas, entonces yo quiero darle formato por medio de tablas y agregar encabezados a ese correo, pero no se como hacerlo,

Espero haber sido un poco mas claro.

POSD. Te agrege al msn, aceptame.
  #6 (permalink)  
Antiguo 15/10/2009, 12:14
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problemita con Formulario en PHP

En la variable $body esta el contenido del mensaje, pero yo lo que quisiera es poder meter html (tipo de letra, tablas, logos, etc..) y que el correo me llegue en ese formato.

De hecho ya tengo la plantilla que quiero usar para que el contenido del formulario me llegue mas "bonito" pero no se como mezclar esa plantilla con el phpmailer.
  #7 (permalink)  
Antiguo 15/10/2009, 12:34
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Problemita con Formulario en PHP

Claro, mira usando tu código he añadido la parte que lee la plantilla externa:

Código HTML:
<?php
require("class.phpmailer.php");
$msg = "";
if ($_POST['action'] == "send") {
    $varname = $_FILES['archivo']['name'];
    $vartemp = $_FILES['archivo']['tmp_name'];
    
    $mail = new PHPMailer();
    $mail->Host = "localhost";
    $mail->From = "nombre";
    $mail->FromName = $_POST['name'];
    $mail->Subject = "Usuarios de prueba";
    $mail->AddAddress('[email protected]');
    if ($varname != "") {
        $mail->AddAttachment($vartemp, $varname);
    }

    /* Parte que procesa la plantilla */
    $abrir_plantilla = fopen("plantilla.html","r"); 
    $plantilla01 = fread($abrir_plantilla,filesize("plantilla.html")); 
    fclose($abrir_plantilla); 

    $plantilla01 = str_replace("{usuario}",$_POST['usuario'],$plantilla01);
    $plantilla01 = str_replace("{pass}",$_POST['pass'],$plantilla01);

    $mail->Body = $plantilla01;
    $mail->IsHTML(true);
    $mail->Send();
    $msg = "Tus datos han sido enviados correctamente, gracias por tu tiempo, ya puedes cerrar la ventana.";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <table width="200" border="0">
    <tr>
      <td>nombre</td>
      <td><label>
        <input type="text" name="usuario" id="usuario" />
      </label></td>
    </tr>
    <tr>
      <td>contraseña</td>
      <td><label>
        <input type="text" name="pass" id="pass" />
      </label></td>
    </tr>
  </table>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Enviar" />
    </label>
  </p>
</form>
</body>
</html> 
plantilla.html

Código HTML:
<table border="0" style="color:black;">
    <tr><td colspan="2"><span style="color:red;">Esta es la plantilla en HTML</span></td></tr>
    <tr><td>Usuario: <b>{usuario}</b></td></tr>
    <tr><td>Password: <b>{pass}</b></td></tr>
    <tr><td colspan="2"><i>ALERTA: Contestar al email proporcionado por el cliente, no dar al boton Responder.</i></td></tr>
</table> 
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #8 (permalink)  
Antiguo 15/10/2009, 12:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problemita con Formulario en PHP

Perfecto, ya quedo.... si me funciono :)

Muchas gracias.

Ya me llego el correo con formato HTML de acuerdo a mi plantilla, ahora quiero hacer una cosita mas, me gustaria agregar dentro de este html un boton que diga "imprimi" y que solo me imprima el contenido del msj, sin los encabezados.

Por ejemplo:

El contenido del formulario llega a una cuenta de Outlook, y cuando imprimo ese correo, me sale con todo el encabezado del Outlook, (de, para, cc) y yo no deseo que salga eso, solo quiero que salga el contendio del formulario en este caso la plantilla.html
  #9 (permalink)  
Antiguo 15/10/2009, 12:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problemita con Formulario en PHP

O si se puede de preferencia que el contenido del formulario osea la plantilla.html, me lo envie al correo en formato PDF como adjunto.
  #10 (permalink)  
Antiguo 15/10/2009, 13:08
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Problemita con Formulario en PHP

Cita:
Iniciado por joelmg Ver Mensaje
O si se puede de preferencia que el contenido del formulario osea la plantilla.html, me lo envie al correo en formato PDF como adjunto.
En PDF como adjunto?, ciertamente es posible, aunque algo complicado. Otra opción sería proporcionar un enlace que vaya hacia una "versión para imprimir" eso puede serte más factible.
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #11 (permalink)  
Antiguo 15/10/2009, 13:36
 
Fecha de Ingreso: octubre-2009
Mensajes: 40
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Problemita con Formulario en PHP

intentaste hacelo con una tabla html dentro de un echo y le das estilos con css?

yo lo hago asi y me llegan tipo documento a mi mail con la letra que quiero tamaño colores bordes
etc

llegar e imprimir

suerte
intentalo de esa forma

y si eso no es
bueno
XD
  #12 (permalink)  
Antiguo 15/10/2009, 13:40
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problemita con Formulario en PHP

Gracias hieloverde por tus respuestas.

Scrotopher, en el archivo plantilla.html tengo todo hecho con tablas y CSS, y el correo q me llega me llega en HTML con un formato "bonito".

Esa es una manera mas facil, sin necesidad de estar metiendo las tablas dentro del echo.

Checa mas arriba la forma que propuso hieloverde, esa me funciono muy bien.

Saludos.
  #13 (permalink)  
Antiguo 15/10/2009, 13:44
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problemita con Formulario en PHP

Hola de nuevo, me gustaria saber como puedo poner la fecha en automatico en mi html?

Yo tengo en mi plantilla.html una tablita y en una celda tengo:

Fecha: ________ <-----quiero que me imprima la fecha en automatico.

Nombre: {nombre}

Apellidos: {apellido}

etc....

de acuerdo a lo que explico hieloverde, lo que esta entre {} lo sustituire por la variable con la funcion str_replace.

Espero haber sido claro.
  #14 (permalink)  
Antiguo 15/10/2009, 16:36
Avatar de hieloverde  
Fecha de Ingreso: julio-2005
Ubicación: México, D.F
Mensajes: 467
Antigüedad: 18 años, 9 meses
Puntos: 5
Respuesta: Problemita con Formulario en PHP

Cita:
Iniciado por joelmg Ver Mensaje
Hola de nuevo, me gustaria saber como puedo poner la fecha en automatico en mi html?
Añade un espacio {fecha} en tu plantilla y en tu php sustituyelo (al enviar el correo) por la combinación que más te guste de date() eso te pondra la fecha u hora según necesites, solo podría ocurrir que la fecha del servidor sea diferente y en ese caso solo tendrias que ajustarla sumando o quitando horas.
__________________
<? echo("1 <script> dice + que 1000 palabras"); ?> EspacioMéxico
  #15 (permalink)  
Antiguo 16/10/2009, 07:34
 
Fecha de Ingreso: febrero-2008
Mensajes: 80
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Problemita con Formulario en PHP

Gracias por tu ayuda una vez mas, he logrado poner la fecha en mi documento.

Salu2.
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:23.