Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2013-05-26 20:20:11

gfdesign
Member
From: Argentina
Registered: 2009-04-20
Posts: 401

[es-es] Problemas con código PHP en TXP

Estimados

Tengo un script PHP para un formulario de contacto con la opción de adjuntar archivos que funciona perfectamente en TXP 4.4.1 (dado que no es posible hacerlo con zem_contact_reborn). El problema es que al actualizar mi sitio a TXP 4.5.2 no me reconoce el código PHP. Es decir, este formulario me funciona perfecto en TXP 4.4.1 pero en 4.5.2 ya no funciona, ni siquiera utilizando etiquetas <txp:php>

Dejo aquí el código por si alguien le sirve y pueda ayudarme a que funcione en TXP 4.5.2.
(Nota: Este formulario requiere los archivos class.phpmailer.php y jquery.MultiFile.pack.js)

Desde ya, agradezco y espero por alguna respuesta que pueda orientarme.
Saludos

<?php
/*
NOTA: 
este archivo debe estar acompañado de una carpeta
con el nombre "archivos" en donde se copiaran los
archivos. Esta carpeta debe tener chmod 777. 
*/
//CONFIGURACION 

$direccion_envio='name@domain.com'; //la direccion a la que se enviara el formulario.

$url= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
//la URL donde esta publicado el formulario. SIN la barra al final

$cantidad_archivos=1;								
//la cantidad máxima de archivos que se permitirá enviar.

//FIN CONFIGURACION
?>


<?php
//proceso del formulario
// si existe "enviar"...
if (isset ($_POST['enviar'])) {

// vamos a hacer uso de la clase phpmailer, 
require("class.phpmailer.php");

$mail = new PHPMailer();

//recogemos las variables y configuramos PHPMailer
$mail->From     = $_POST['email'];
$mail->FromName = $_POST['nombre'];
$mail->AddAddress($direccion_envio); 
$mail->Subject = "Solicitud de presupuesto";
$mail->AddReplyTo($_POST['email'],$_POST['nombre']);
$mail->IsHTML(true);                              
$comentario=$_POST['comentario'];


//comprobamos si se adjuntaron archivos, los cargamos en el servidor y los pasamos como adjuntos del email
if (isset($_FILES['archivo']['tmp_name'])) {
	$achivos_adjuntos='';					
	$i=0;
	do  {
		if($_FILES['archivo']['tmp_name'][$i] !="") 
			{ 
			$aleatorio = rand(); 
			$nuevonombre = $aleatorio.'-'.$_FILES['archivo']['name'][$i];
			copy($_FILES['archivo']['tmp_name'][$i],'archivos/'.$nuevonombre);
			$achivos_adjuntos .= '<br /><a href="'.$url.'/archivos/'.$nuevonombre.'">'.$nuevonombre.'</a></strong>';
			$mail->AddAttachment($_FILES['archivo']['tmp_name'][$i], $nuevonombre);
			}	
			$i++;
		} while ($i < $cantidad_archivos);

}

//comprobamos si todos los campos fueron completados
if ($_POST['email']!='') {

		$email=$_POST['email'];
		$nombre=$_POST['nombre'];
		$apellido=$_POST['apellido'];

		$comentario=$_POST['comentario'];
		$user_ip = $_SERVER['REMOTE_ADDR']; 

		//armamos el html
		$contenido = '<html><body>';
		$contenido .= '<p>Enviado el '.  date("d M Y").'</p>';
		$contenido .= '<hr />';
		$contenido .= '<p>Nombre: <strong>'.$nombre.'</strong></p>';
		$contenido .= '<p>Apellido: <strong>'.$apellido.'</strong></p>';		
		$contenido .= '<p>Email: <strong>'.$email.'</strong></p>';
		$contenido .= '<p>Comentario: <strong>'.$comentario.'</strong></p>';
		$contenido .= '<hr />';
		$contenido .= '<p>Archivos Adjuntos: '.$achivos_adjuntos.'</p>';
		$contenido .= '<hr />';		
		$contenido .= '</body></html>';

		$mail->Body    = $contenido;
		// si todos los campos fueron completados enviamos el mail

		$mail->Send();

		$flag='ok';
		$mensaje='<div id="ok">SU MENSJAE FUE ENVIADO CORRECTAMENTE</div>';
	} else {

		//si no todos los campos fueron completados se frena el envio y avisamos al usuario	
		$flag='err';
		$mensaje='<div id="error">- Los Campos Marcados Con * Son Requeridos. '.$error_archivo.'</div>';

		}
	}
?>

<!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>
<script src="<txp:site_url/>js/jquery.MultiFile.pack.js" type="text/javascript" language="javascript"></script>
</head>


<body>

<div class="formulario">

<?php echo $mensaje; /*mostramos el estado de envio del form */ ?>
<?php if ($cantidad_archivos > 1) {$plural='s';} else {$plural='';} ?>
<?php if ($flag!='ok') { ?>
<form id="formInscripcion" action="<?php echo $PHP_SELF;?>" method="post" enctype="multipart/form-data">


<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="nombre_campo" >Nombre:*</td>
    <td><label>nombre</label>
      <input name="nombre" type="text" id="nombre" size="50" /></td>
  </tr>
  <tr>
    <td class="nombre_campo">Apellido:*</td>
    <td><input name="apellido" type="text" id="apellido" size="50" /></td>
  </tr>

  <tr>
    <td class="nombre_campo">E-mail:*</td>
    <td><input name="email" type="text" id="email" size="50" /></td>
  </tr>


  <tr>
    <td class="nombre_campo">Adjunte aquí su archivo:<br><span style="font-size:8px">Max. 2 Mb</span></td>
    <td>Puede adjuntar hasta <?=$cantidad_archivos?> archivo<?=$plural?>
<input type="file" class="multi max-<?=$cantidad_archivos?>"  name="archivo[]" value="<?=$_FILES['archivos']?>">
</td>
  </tr>  

  <tr>

    <td valign="top" class="nombre_campo" style="vertical-align:top; padding-top:15px" >Su Consulta:</td>
    <td><textarea cols="45"  rows="10" name="comentario"></textarea></td>
  </tr>
  <tr>
	<td style="text-align:center;" colspan="2" > 
	<button type="reset" class="form_btenviar">BORRAR</button>
	<button type="submit" class="form_btenviar" name="enviar">ENVIAR</button>
    </td>	
  </tr>
</table>

</form>
<?php } ?>

</div><!-- fin "formulario" -->

</body>
</html>

Offline

#2 2013-05-27 17:40:14

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,473

Re: [es-es] Problemas con código PHP en TXP

Hola Fernando

¿Cómo integras a este script en tus códigos? ¿Podría ser que en las preferencias avanzadas (al final de la lista) algo impide la ejecución?

Offline

#3 2013-05-28 19:16:23

gfdesign
Member
From: Argentina
Registered: 2009-04-20
Posts: 401

Re: [es-es] Problemas con código PHP en TXP

Hola, gracias por responder.
Te cuento que en TXP 4.4.1 selecciono en las preferencias ¿Permitir PHP en las páginas? en SI y luego pego el código tal cual está (sin usar etiquetas <txp:php>)

Este script me funciona bien en TXP 4.4.1, pero en TXP 4.5.2 parece que no está permitido código PHP crudo a no ser que se usen dentro de etiquetas <txp:php>. El problema es que no logro hacer funcionar este código usando dichas etiquetas TXP.
¿Alguna sugerencia?
Saludos

Offline

#4 2013-05-28 20:21:11

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,473

Re: [es-es] Problemas con código PHP en TXP

Quizás puedas publicar el código dentro de las etiquetas <txp:php>, para que podemos ver cómo lo haces.

Last edited by GugUser (2013-05-28 20:21:29)

Offline

#5 2013-05-30 03:24:06

gfdesign
Member
From: Argentina
Registered: 2009-04-20
Posts: 401

Re: [es-es] Problemas con código PHP en TXP

Si, acá va:

<txp:php>
/*
NOTA: 
este archivo debe estar acompañado de una carpeta
con el nombre "archivos" en donde se copiaran los
archivos. Esta carpeta debe tener chmod 777. 
*/
//CONFIGURACION 

$direccion_envio='name@domain.com'; //la direccion a la que se enviara el formulario.

$url= 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
//la URL donde esta publicado el formulario. SIN la barra al final

$cantidad_archivos=1;								
//la cantidad máxima de archivos que se permitirá enviar.

//FIN CONFIGURACION
</txp:php>

<txp:php>
//proceso del formulario
// si existe "enviar"...
if (isset ($_POST['enviar'])) {

// vamos a hacer uso de la clase phpmailer, 
require("class.phpmailer.php");

$mail = new PHPMailer();

//recogemos las variables y configuramos PHPMailer
$mail->From     = $_POST['email'];
$mail->FromName = $_POST['nombre'];
$mail->AddAddress($direccion_envio); 
$mail->Subject = "Solicitud de presupuesto";
$mail->AddReplyTo($_POST['email'],$_POST['nombre']);
$mail->IsHTML(true);                              
$comentario=$_POST['comentario'];

//comprobamos si se adjuntaron archivos, los cargamos en el servidor y los pasamos como adjuntos del email
if (isset($_FILES['archivo']['tmp_name'])) {
	$achivos_adjuntos='';					
	$i=0;
	do  {
		if($_FILES['archivo']['tmp_name'][$i] !="") 
			{ 
			$aleatorio = rand(); 
			$nuevonombre = $aleatorio.'-'.$_FILES['archivo']['name'][$i];
			copy($_FILES['archivo']['tmp_name'][$i],'archivos/'.$nuevonombre);
			$achivos_adjuntos .= '<br /><a href="'.$url.'/archivos/'.$nuevonombre.'">'.$nuevonombre.'</a></strong>';
			$mail->AddAttachment($_FILES['archivo']['tmp_name'][$i], $nuevonombre);
			}	
			$i++;
		} while ($i < $cantidad_archivos);

}

//comprobamos si todos los campos fueron completados
if ($_POST['email']!='') {

		$email=$_POST['email'];
		$nombre=$_POST['nombre'];
		$apellido=$_POST['apellido'];

		$comentario=$_POST['comentario'];
		$user_ip = $_SERVER['REMOTE_ADDR']; 

		//armamos el html
		$contenido = '<html><body>';
		$contenido .= '<p>Enviado el '.  date("d M Y").'</p>';
		$contenido .= '<hr />';
		$contenido .= '<p>Nombre: <strong>'.$nombre.'</strong></p>';
		$contenido .= '<p>Apellido: <strong>'.$apellido.'</strong></p>';		
		$contenido .= '<p>Email: <strong>'.$email.'</strong></p>';
		$contenido .= '<p>Comentario: <strong>'.$comentario.'</strong></p>';
		$contenido .= '<hr />';
		$contenido .= '<p>Archivos Adjuntos: '.$achivos_adjuntos.'</p>';
		$contenido .= '<hr />';		
		$contenido .= '</body></html>';

		$mail->Body    = $contenido;
		// si todos los campos fueron completados enviamos el mail

		$mail->Send();

		$flag='ok';
		$mensaje='<div id="ok">SU MENSJAE FUE ENVIADO CORRECTAMENTE</div>';
	} else {

		//si no todos los campos fueron completados se frena el envio y avisamos al usuario	
		$flag='err';
		$mensaje='<div id="error">- Los Campos Marcados Con * Son Requeridos. '.$error_archivo.'</div>';

		}
	}
</txp:php>

<!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>
<script src="<txp:site_url/>js/jquery.MultiFile.pack.js" type="text/javascript" language="javascript"></script>
</head>

<body>

<div class="formulario">

<txp:php> echo $mensaje; /*mostramos el estado de envio del form */ </txp:php>
<txp:php> if ($cantidad_archivos > 1) {$plural='s';} else {$plural='';} </txp:php>
<txp:php> if ($flag!='ok') { </txp:php>
<form id="formInscripcion" action="<txp:php> echo $PHP_SELF;</txp:php>" method="post" enctype="multipart/form-data">

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="nombre_campo" >Nombre:*</td>
    <td><label>nombre</label>
      <input name="nombre" type="text" id="nombre" size="50" /></td>
  </tr>
  <tr>
    <td class="nombre_campo">Apellido:*</td>
    <td><input name="apellido" type="text" id="apellido" size="50" /></td>
  </tr>

  <tr>
    <td class="nombre_campo">E-mail:*</td>
    <td><input name="email" type="text" id="email" size="50" /></td>
  </tr>

  <tr>
    <td class="nombre_campo">Adjunte aquí su archivo:<br><span style="font-size:8px">Max. 2 Mb</span></td>
    <td>Puede adjuntar hasta <txp:php>=$cantidad_archivos</txp:php> archivo<txp:php>=$plural</txp:php>
<input type="file" class="multi max-<txp:php>=$cantidad_archivos</txp:php>"  name="archivo[]" value="<txp:php>=$_FILES['archivos']</txp:php>">
</td>
  </tr>  

  <tr>

    <td valign="top" class="nombre_campo" style="vertical-align:top; padding-top:15px" >Su Consulta:</td>
    <td><textarea cols="45"  rows="10" name="comentario"></textarea></td>
  </tr>
  <tr>
	<td style="text-align:center;" colspan="2" > 
	<button type="reset" class="form_btenviar">BORRAR</button>
	<button type="submit" class="form_btenviar" name="enviar">ENVIAR</button>
    </td>	
  </tr>
</table>

</form>
<txp:php> } </txp:php>

</div><!-- fin "formulario" -->

</body>
</html>

Offline

#6 2013-05-30 15:15:03

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,473

Re: [es-es] Problemas con código PHP en TXP

Me cuesta creer que esto antes sí funcionó. :-(

Te recomiendo crear un bloque con el nombre de, por ejemplo, “formulario” y colocar el código:

<txp:php>

$direccion_envio = "name@domain.com"; // la dirección a la que se enviara el formulario

$url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]; // la URL donde esta publicado el formulario. SIN la barra al final

$cantidad_archivos = 1; // la cantidad máxima de archivos que se permitirá enviar.

if (isset($_POST["enviar"])) { // si existe "enviar"

require("class.phpmailer.php"); // usamos la clase phpmailer

$mail = new PHPMailer();

//recogemos las variables y configuramos PHPMailer
$mail->From     = $_POST["email"];
$mail->FromName = $_POST["nombre"];
$mail->AddAddress($direccion_envio); 
$mail->Subject = "Solicitud de presupuesto";
$mail->AddReplyTo($_POST["email"],$_POST["nombre"]);
$mail->IsHTML(true);                              
$comentario=$_POST["comentario"];

//comprobamos si se adjuntaron archivos, los cargamos en el servidor y los pasamos como adjuntos del email
if (isset($_FILES["archivo"]["tmp_name"])) {
	$achivos_adjuntos="";					
	$i=0;
	do  {
		if($_FILES["archivo"]["tmp_name"][$i] !="") 
			{ 
			$aleatorio = rand(); 
			$nuevonombre = $aleatorio."-".$_FILES["archivo"]["name"][$i];
			copy($_FILES["archivo"]["tmp_name"][$i],"archivos/".$nuevonombre);
			$achivos_adjuntos .= "<br /><a href=\"".$url."/archivos/".$nuevonombre."\">".$nuevonombre."</a></strong>";
			$mail->AddAttachment($_FILES["archivo"]["tmp_name"][$i], $nuevonombre);
			}	
			$i++;
		} while ($i < $cantidad_archivos);

}

//comprobamos si todos los campos fueron completados
if ($_POST["email"]!="") {

		$email=$_POST["email"];
		$nombre=$_POST["nombre"];
		$apellido=$_POST["apellido"];

		$comentario=$_POST["comentario"];
		$user_ip = $_SERVER["REMOTE_ADDR"]; 

		//armamos el html
		$contenido  = "<p>Enviado el ".date("d M Y")."</p>";
		$contenido .= "<hr />";
		$contenido .= "<p>Nombre: <strong>".$nombre."</strong></p>";
		$contenido .= "<p>Apellido: <strong>".$apellido."</strong></p>";		
		$contenido .= "<p>Email: <strong>".$email."</strong></p>";
		$contenido .= "<p>Comentario: <strong>".$comentario."</strong></p>";
		$contenido .= "<hr />";
		$contenido .= "<p>Archivos Adjuntos: ".$achivos_adjuntos."</p>";
		$contenido .= "<hr />";		

		$mail->Body    = $contenido;
		// si todos los campos fueron completados enviamos el mail

		$mail->Send();

		$flag = "ok";
		$mensaje = "<div id=\"ok\">SU MENSJAE FUE ENVIADO CORRECTAMENTE</div>";
	} else {

		// si no todos los campos fueron completados se frena el envío y avisamos al usuario	
		$flag = "err";
		$mensaje = "<div id=\"error\">- Los Campos Marcados con * son Requeridos.".$error_archivo."</div>";

		}
	}

echo "<div class=\"formulario\">\r\n";

echo $mensaje; // mostramos el estado de envío del formulario

$formulario  = "<form id=\"formInscripcion\" action=\"".$PHP_SELF."\" method=\"post\" enctype=\"multipart/form-data\">\r\n";
$formulario .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">Nombre:*</td>\r\n";
$formulario .= "    <td><input name=\"nombre\" type=\"text\" id=\"nombre\" size=\"50\" /></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">Apellido:*</td>\r\n";
$formulario .= "    <td><input name=\"apellido\" type=\"text\" id=\"apellido\" size=\"50\" /></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">E-mail:*</td>\r\n";
$formulario .= "    <td><input name=\"email\" type=\"text\" id=\"email\" size=\"50\" /></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">Adjunte aquí su archivo:<br><span style=\"font-size:8px;\">Max. 2 Mb</span></td>\r\n";
$formulario .= "    <td>Puede adjuntar hasta ".$cantidad_archivos." archivo".$plural." ";
$formulario .= "<input type=\"file\" class=\"multi max-".$cantidad_archivos."\" name=\"archivo[]\" value=\"".$_FILES["archivos"]."\"></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td valign=\"top\" class=\"nombre_campo\" style=\"vertical-align:top; padding-top:15px;\">Su Consulta:</td>\r\n";
$formulario .= "    <td><textarea cols=\"45\" rows=\"10\" name=\"comentario\"></textarea></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "	<td style=\"text-align:center;\" colspan=\"2\">\r\n";
$formulario .= "	<button type=\"reset\" class=\"form_btenviar\">BORRAR</button>\r\n";
$formulario .= "	<button type=\"submit\" class=\"form_btenviar\" name=\"enviar\">ENVIAR</button>\r\n";
$formulario .= "    </td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "</table>\r\n";
$formulario .= "</form>\r\n";

if ($cantidad_archivos > 1) {
	$plural = "s";
} else {
	$plural = "";
}

if ($flag!= "ok") {
	echo $formulario;
}

echo "</div><!-- fin \"formulario\" -->"\r\n";

</txp:php>

¡Falta incluir correctamente class.phpmailer.php!

Este bloque llamas desde una página a través de <txp:output_form form="formulario" /> o creas una propia página con el contenido básico (lo extraje de tu código):

<!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>
<script src="<txp:site_url/>js/jquery.MultiFile.pack.js" type="text/javascript" language="javascript"></script>
</head>
<body>
<txp:output_form form="formulario" />
</body>
</html>

Offline

#7 2013-05-30 16:21:00

gfdesign
Member
From: Argentina
Registered: 2009-04-20
Posts: 401

Re: [es-es] Problemas con código PHP en TXP

GugUser, sos un genio. Ahora sí funciona!
Lo único que corregí porque me tiraba error era el comentario del div que cerraba el formulario.
Acá dejo el código completo por si le sirve a alguien.
Muchas gracias!
Fernando

<txp:php>

$direccion_envio = "name@domain.com"; // la dirección a la que se enviara el formulario

$url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]; // la URL donde esta publicado el formulario. SIN la barra al final

$cantidad_archivos = 1; // la cantidad máxima de archivos que se permitirá enviar.

if (isset($_POST["enviar"])) { // si existe "enviar"

require("class.phpmailer.php"); // usamos la clase phpmailer

$mail = new PHPMailer();

//recogemos las variables y configuramos PHPMailer
$mail->From     = $_POST["email"];
$mail->FromName = $_POST["nombre"];
$mail->AddAddress($direccion_envio); 
$mail->Subject = "Solicitud de presupuesto";
$mail->AddReplyTo($_POST["email"],$_POST["nombre"]);
$mail->IsHTML(true);                              
$comentario=$_POST["comentario"];

//comprobamos si se adjuntaron archivos, los cargamos en el servidor y los pasamos como adjuntos del email
if (isset($_FILES["archivo"]["tmp_name"])) {
	$achivos_adjuntos="";					
	$i=0;
	do  {
		if($_FILES["archivo"]["tmp_name"][$i] !="") 
			{ 
			$aleatorio = rand(); 
			$nuevonombre = $aleatorio."-".$_FILES["archivo"]["name"][$i];
			copy($_FILES["archivo"]["tmp_name"][$i],"archivos/".$nuevonombre);
			$achivos_adjuntos .= "<br /><a href=\"".$url."/archivos/".$nuevonombre."\">".$nuevonombre."</a></strong>";
			$mail->AddAttachment($_FILES["archivo"]["tmp_name"][$i], $nuevonombre);
			}	
			$i++;
		} while ($i < $cantidad_archivos);

}

//comprobamos si todos los campos fueron completados
if ($_POST["email"]!="") {

		$email=$_POST["email"];
		$nombre=$_POST["nombre"];
		$apellido=$_POST["apellido"];

		$comentario=$_POST["comentario"];
		$user_ip = $_SERVER["REMOTE_ADDR"]; 

		//armamos el html
		$contenido  = "<p>Enviado el ".date("d M Y")."</p>";
		$contenido .= "<hr />";
		$contenido .= "<p>Nombre: <strong>".$nombre."</strong></p>";
		$contenido .= "<p>Apellido: <strong>".$apellido."</strong></p>";		
		$contenido .= "<p>Email: <strong>".$email."</strong></p>";
		$contenido .= "<p>Comentario: <strong>".$comentario."</strong></p>";
		$contenido .= "<hr />";
		$contenido .= "<p>Archivos Adjuntos: ".$achivos_adjuntos."</p>";
		$contenido .= "<hr />";		

		$mail->Body    = $contenido;
		// si todos los campos fueron completados enviamos el mail

		$mail->Send();

		$flag = "ok";
		$mensaje = "<div id=\"ok\">SU MENSJAE FUE ENVIADO CORRECTAMENTE</div>";
	} else {

		// si no todos los campos fueron completados se frena el envío y avisamos al usuario	
		$flag = "err";
		$mensaje = "<div id=\"error\">- Los Campos Marcados con * son Requeridos.".$error_archivo."</div>";

		}
	}

echo "<div class=\"formulario\">\r\n";

echo $mensaje; // mostramos el estado de envío del formulario

$formulario  = "<form id=\"formInscripcion\" action=\"".$PHP_SELF."\" method=\"post\" enctype=\"multipart/form-data\">\r\n";
$formulario .= "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">Nombre:*</td>\r\n";
$formulario .= "    <td><input name=\"nombre\" type=\"text\" id=\"nombre\" size=\"50\" /></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">Apellido:*</td>\r\n";
$formulario .= "    <td><input name=\"apellido\" type=\"text\" id=\"apellido\" size=\"50\" /></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">E-mail:*</td>\r\n";
$formulario .= "    <td><input name=\"email\" type=\"text\" id=\"email\" size=\"50\" /></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">Adjunte aquí su archivo:<br><span style=\"font-size:8px;\">Max. 2 Mb</span></td>\r\n";
$formulario .= "    <td>Puede adjuntar hasta ".$cantidad_archivos." archivo".$plural." ";
$formulario .= "<input type=\"file\" class=\"multi max-".$cantidad_archivos."\" name=\"archivo[]\" value=\"".$_FILES["archivos"]."\"></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "    <td valign=\"top\" class=\"nombre_campo\" style=\"vertical-align:top; padding-top:15px;\">Su Consulta:</td>\r\n";
$formulario .= "    <td><textarea cols=\"45\" rows=\"10\" name=\"comentario\"></textarea></td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "  <tr>\r\n";
$formulario .= "	<td style=\"text-align:center;\" colspan=\"2\">\r\n";
$formulario .= "	<button type=\"reset\" class=\"form_btenviar\">BORRAR</button>\r\n";
$formulario .= "	<button type=\"submit\" class=\"form_btenviar\" name=\"enviar\">ENVIAR</button>\r\n";
$formulario .= "    </td>\r\n";
$formulario .= "  </tr>\r\n";
$formulario .= "</table>\r\n";
$formulario .= "</form>\r\n";

if ($cantidad_archivos > 1) {
	$plural = "s";
} else {
	$plural = "";
}

if ($flag!= "ok") {
	echo $formulario;
}

echo "</div>";

</txp:php>

Offline

#8 2013-05-30 16:28:13

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,473

Re: [es-es] Problemas con código PHP en TXP

Corregido:

echo "</div><!-- fin \"formulario\" -->\r\n";

No tiene nada que ver con “genio”. Es básico y no muy avanzado.

¡Saludos y suerte!

Last edited by GugUser (2013-05-30 16:31:40)

Offline

#9 2013-05-30 16:42:53

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,473

Re: [es-es] Problemas con código PHP en TXP

Además, no haría un formulario como tabla. Cada parte como, por ejemplo …

$formulario .= "  <tr>\r\n";
$formulario .= "    <td class=\"nombre_campo\">Nombre:*</td>\r\n";
$formulario .= "    <td><input name=\"nombre\" type=\"text\" id=\"nombre\" size=\"50\" /></td>\r\n";
$formulario .= "  </tr>\r\n";

… se podría simplificar y hacerla más accesible:

$formulario .= "    <label for=\"nombre\">Nombre:*</label>\r\n";
$formulario .= "    <input id=\"nombre\" name=\"nombre\" type=\"text\" size=\"50\" />\r\n";

Y todo lo demás que tiene que ver con la apariencia a través del CSS externo.

Offline

#10 2013-05-30 17:02:20

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,473

Re: [es-es] Problemas con código PHP en TXP

En total:

$formulario  = "<form id=\"formInscripcion\" action=\"".$PHP_SELF."\" method=\"post\" enctype=\"multipart/form-data\">\r\n";
$formulario .= "	<fieldset>\r\n";
$formulario .= "		<label for=\"nombre\">Nombre:*</label>\r\n";
$formulario .= "		<input id=\"nombre\" name=\"nombre\" type=\"text\" size=\"50\" />\r\n";
$formulario .= "		<label for=\"apellido\">Apellido:*</label>\r\n";
$formulario .= "		<input id=\"apellido\" name=\"apellido\" type=\"text\" size=\"50\" />\r\n";
$formulario .= "		<label for=\"email\">E-mail:*</label>\r\n";
$formulario .= "		<input id=\"email\" name=\"email\" type=\"text\" size=\"50\" />\r\n";
$formulario .= "	</fieldset>\r\n";
$formulario .= "	<fieldset>\r\n";
$formulario .= "		<label for=\"archivo\">Adjunte aquí su archivo:</label>\r\n";
$formulario .= "		<p>Puede adjuntar hasta ".$cantidad_archivos." archivo".$plural." de max. 2 MB.</p>\r\n";
$formulario .= "		<input id=\"archivo\" class=\"multi max-".$cantidad_archivos."\" name=\"archivo\" type=\"file\" value=\"".$_FILES["archivos"]."\" />\r\n";
$formulario .= "	</fieldset>\r\n";
$formulario .= "	<fieldset>\r\n";
$formulario .= "		<label for=\"comentario\">Su Consulta:</label>\r\n";
$formulario .= "		<textarea id=\"comentario\" name=\"comentario\" cols=\"45\" rows=\"10\"></textarea>\r\n";
$formulario .= "		<button type=\"submit\" class=\"form_btenviar\" name=\"enviar\">Enviar</button>\r\n";
$formulario .= "	</fieldset>\r\n";
$formulario .= "</form>\r\n";

Offline

#11 2013-05-31 16:50:07

gfdesign
Member
From: Argentina
Registered: 2009-04-20
Posts: 401

Re: [es-es] Problemas con código PHP en TXP

Había usado una tabla porque el diseño que pasó el cliente originalmente era muy rebuscado y además era mucho más rápido postearlo. De todas maneras, gracias por el markup mucho más claro que dejaste.
Un cordial saludo

Offline

Board footer

Powered by FluxBB