Foros del Web » Programando para Internet » PHP »

Escribir texto despues de presionar Submit

Estas en el tema de Escribir texto despues de presionar Submit en el foro de PHP en Foros del Web. Buenas a todos. Resulta que en mi web tengo un formulario de contacto y me gustaria que cuando el usuario haya dado al boton submit ...
  #1 (permalink)  
Antiguo 18/11/2012, 08:33
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Escribir texto despues de presionar Submit

Buenas a todos.

Resulta que en mi web tengo un formulario de contacto y me gustaria que cuando el usuario haya dado al boton submit me diga un mensaje abajo del formulario o arriba que se ha mandado el correo.

Desde el plugin donde me he bajado el formulario este lo envia a pagina php pero mi idea es que no tenga que redirigir a otra pagina php (asi evitaria hacer header( location: url))

En el archivo original cuando se presiona submit se ejecuta esto:

Código PHP:
        if($formproc->ProcessForm())
        {
            
$formproc->RedirectToURL("thank-you.php");
        } 
Yo lo tengo asi:

Código PHP:
        if($formproc->ProcessForm())
        {
             
header("Refresh: 0; URL='http://dominio.com/acerca.php'");
        } 
Con eso consigo que me recargue la pagina, pero tambien me gustaria poner un texto al usuario para avisarle que se ha enviado.

He probado con lo mas basico.

Código PHP:
        if($formproc->ProcessForm())
        {
             echo 
"El mensaje se ha enviado correctamente";
        } 
Este mensaje me lo escribe arriba del todo, ya que esta funcion esta antes de <html>

Tambien he probado con un alert.

Código PHP:
        if($formproc->ProcessForm())
        {
             echo 
"<script language='javascript'>alert('Mensaje enviado');</script>";
        } 
Pero no me sale.

Mi pregunta es, como puedo hacer desde ahi mandar un texto debajo del formulario (por ejemplo)??.

He probado con redireccionar texto a traves de una funcion.

Código PHP:
        if($formproc->ProcessForm())
        {
            function 
correcto() {echo "Mensaje....";}
        } 
Pero al llamarla no me salian los banners de la web.

En definitiva que tengo un buen lio en la cabeza.

Espero que me puedan ayudar, muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 18/11/2012, 09:24
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Escribir texto despues de presionar Submit

@Hekaly
vamos a revisar tu estructura
Por un lado tenes un form, que tiene definido un action, simplificando, algo asi

<form action="enviar.php" method="post">
.....
</form>

luego tu enviar.php recibirá las variables del form para finalmente hacer mail();

aquie se abren distintas posibilidades
1. que tu form y el php que lo procesa estén en la misma página(supongamos contacto.php)
2. que estén en diferentes páginas, contacto.html y enviar.php

Según tu esquema si se completa el envío va a una tercera página (gracias.php)
Ahora pregunto? si el mensaje se envía, para que mostrar el form de vuelta?

No es más sencillo incluir en gracias.php un link que diga

<a href="contacto.html">Enviar otro mensaje</a>

A lo sumo si el envío NO se realiza, ahi si mostrar un mensaje de error y el form.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 18/11/2012, 10:44
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Escribir texto despues de presionar Submit

Buenas.

EN realidad el form no enia a ningun archivo php sino que se hace el envia desde la misma pagina, segun el script original, cuando se presiona el boton submit se genera la funcion que puse antes, y esta redirecciona al otro archivo php donde se muestra el mensaje al usuario.

Os muestro como tengo el script completo ya adaptado a mi web:

Código:
<?php include($_SERVER['DOCUMENT_ROOT'].'/configuracion.php'); ?>
<?php
require_once("contacto/include/fgcontactform.php");
require_once("contacto/include/formvalidator.php");
$formproc = new FGContactForm();
//Initialize the contact form
$formproc->AddRecipient('[email protected]'); //<<---Put your email address here
$formproc->SetFormRandomKey('xxxxxxxxxxxxx');
$validation_errors='';
if(isset($_POST['submitted']))
{// We need to validate only after the form is submitted
    //Setup Server side Validations
    //Please note that the element name is case sensitive 
    $validator = new FormValidator();
    $validator->addValidation("name","req","Please fill in Name");
    $validator->addValidation("email","email","The input for Email should be a valid email value");
    $validator->addValidation("email","req","Please fill in Email");   
    //Then validate the form
    if($validator->ValidateForm())
    {
        //If the validations succeeded, proceed with form processing
        if($formproc->ProcessForm())
        {
             $formproc->RedirectToURL("gracias.php");
        }
    }
    else
    {
        //Validations failed. Display Errors.
        $error_hash = $validator->GetErrors();
        foreach($error_hash as $inpname => $inp_err)
        {
           $validation_errors .= "<p>$inpname : $inp_err</p>\n";
        }        
    }
}//if
$disp_name  = isset($_POST['name'])?$_POST['name']:'';
$disp_email = isset($_POST['email'])?$_POST['email']:'';
$disp_message = isset($_POST['message'])?$_POST['message']:'';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-GB">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<link href="css/estilo.css" type="text/css" rel="stylesheet" media="screen, print" />
<link href="css/menu.css" type="text/css" rel="stylesheet" media="screen, print" />
<link rel="shortcut icon" type="image/x-icon" href="favico.ico" />


<script type="text/javascript" src="scripts/js.js"></script>
<script language="javascript" src="scripts/jquery-1.7.2.min.js"></script>
<script language="javascript" src="scripts/amenu.js"></script>
<script language="javascript" src="scripts/idebar.js"></script>
<link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />

<link href="contacto/contact.css" type="text/css" rel="stylesheet" media="screen, print" />
<script type='text/javascript' src='contacto/scripts/gen_validatorv31.js'></script>



</head>
<body>

<div id="contenedor">
<div id="header" style="background-image:url(imagenes/iconos/fondo_menu.png);background-repeat:repeat-x;">
    <p align="center"><img src='http://infojuegos.org/imagenes/header.png' /></p>
	<hr />
	<div><? include("includes/menu.php"); ?></div>
</div>
<div class="colmask threecol">
	<div class="colmid">
		<div class="colleft">
			<div class="col1" style="max-width:800px;">
				<!-- Column 1 start -->				
				<div class="outer-container">
					<br /><div style="width:790px;">
					
					
					

					
<div align="center">					
<!-- Form Code Start -->
<form id='contactus' action='<?php echo $formproc->GetSelfScript(); ?>' method='post' accept-charset='UTF-8'>
<fieldset >
<legend>Formulario de contacto</legend>

<input type='hidden' name='submitted' id='submitted' value='1'/>
<input type='hidden' name='<?php echo $formproc->GetFormIDInputName(); ?>' value='<?php echo $formproc->GetFormIDInputValue(); ?>'/>
<input type='text'  class='spmhidip' name='<?php echo $formproc->GetSpamTrapInputName(); ?>' />

<div class='short_explanation'>* Campos Obligatorios</div>

<div>
<span class='error'><?php echo $formproc->GetErrorMessage(); ?></span>
<span class='error'><?php echo $validation_errors; ?></span>
</div>
<div class='container'>
    <label for='name' >Nombre Completo*: </label><br/>
    <input type='text' name='name' id='name' value='<?php echo htmlentities($disp_name) ?>' maxlength="50" /><br/>
    <span id='contactus_name_errorloc' class='error'></span>
</div>
<div class='container'>
    <label for='email' >Direcci&oacute;n Email*:</label><br/>
    <input type='text' name='email' id='email' value='<?php echo htmlentities($disp_email) ?>' maxlength="50" /><br/>
    <span id='contactus_email_errorloc' class='error'></span>
</div>

<div class='container'>
    <label for='message' >Mensaje:</label><br/>
    <span id='contactus_message_errorloc' class='error'></span>
    <textarea rows="10" cols="50" name='message' id='message'><?php echo htmlentities($disp_message) ?></textarea>
</div>

<table>
 <tr>
  <td>
   <div class='container'>
    <input type='submit' name='Submit' value='Submit' />
   </div>
  </td>
  <td>
   <div class='container'>
    <input type='reset' name='Reset' value='Reset' />
   </div>
  </td>
 </tr>
</table>
</fieldset>
</form>	
</div>				
<? $var="";
 if ($formproc = $var) {echo "Ejecutado";} ?>
					
					
					
					
					
					
					
					
					
					
					
					</br></div>
				</div>
				<div class="box left-menu" style="width:790px;">
					<p style="margin-left:30px;"><img src="http://infojuegos.org/imagenes/banners/banner2.gif"/></p>
				</div>
				<!-- Column 1 end -->
			</div>
			<div class="col2" style="margin-left:20px;">
				<!-- Column 2 start -->
				<? include("includes/sidebar_izquierda.php"); ?>
				<!-- Column 2 end -->
			</div>
			<div class="col3" style="margin-left:820px;">
				<!-- Column 3 start -->
				
				<!-- Column 3 end -->
			</div>
			<div style="margin-left:2070px;margin-top:20px;"><?php include("includes/sidebar_derecha.php"); ?></div>
		</div>
	</div>
</div>
<div id="footer">
	<? include("includes/footer.php"); ?>
</div>
<script type='text/javascript'>
// <![CDATA[

    var frmvalidator  = new Validator("contactus");
    frmvalidator.EnableOnPageErrorDisplay();
    frmvalidator.EnableMsgsTogether();
    frmvalidator.addValidation("name","req","Por favor, introduzaca su nombre.");

    frmvalidator.addValidation("email","req","Por favor, introduzca su direcci&oacute;n email.");

    frmvalidator.addValidation("email","email","Por favor, introduzca una direcci&oacute;n email v&aacute;lida. Ej: [email protected]");

    frmvalidator.addValidation("message","maxlen=2048","El mensaje a enviar es demasiado largo(m&aacute;s de 2KB)");
// ]]>
</script>
</body>
</html>
La parte del formulario es la que esta entre muchos espacios (para no liar).

Una forma que se me ha ocurrido es poner en la raiz el archivo gracias.php (por ejemplo) donde se muestre el texto para luego redirigir a la pagina acerca.php refrescada de nuevo.

gracias.php
Código PHP:
<?php echo "Mensaje enviado";
          
header("Location: 0; URL='http://dominio.org/acerca.php'");?>
Pero claro, tiene que pasar de una ruta (acerca ) a gracias.php para ir de nuevo a acerca.php.

Por eso lo que me gustaria es que al darle al submit la parte

Código PHP:
$formproc->RedirectToURL("gracias.php"); 
Fuera una funcion o algo parecido que me muestre "mensaje enviado" debajo o encima del formulario sin tener que redirigir a otras paginas.

Tambien pense en si se podria poner en el formulario un tipo "if submit no activado {} else {echo "mensajito"};"
Pero no se como puedo hacer para saber si submit ha sido pulsado, es de suponer que comparando ciertas variables...

Un saludo.
  #4 (permalink)  
Antiguo 18/11/2012, 10:55
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Escribir texto despues de presionar Submit

Y la otra opcion es usar un flag de estado usando un mismo documento para todo:

Código:
<?php
define("OK", 0);
define("WAIT", 1);
define("ERROR", 2);

$stat = WAIT;

if(isset($_POST['submit'])) {//p.ej. el boton submit tendría el atributo name=submit
    if($formproc->ProcessForm()) {
        $stat = OK;
    }
    else {
        $stat = ERROR;
        $errmsg = "Tal cosa";
    }
}

switch($stat) {
    case OK: { echo "Se envio correctamente, gracias por usar el servicio y tal y cual"; } break;
    case ERROR: { echo "Se produjo un error: ".$errmsg; } break;
    /*case WAIT: */default: { muestra_formulario(); }
}
Saludos
vosk
  #5 (permalink)  
Antiguo 18/11/2012, 11:00
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Escribir texto despues de presionar Submit

"...Pero no se como puedo hacer para saber si submit ha sido pulsado..."

Código:
<form...>
<input type='submit' name='aquiestamos'>
</form>

<?php
if(isset($_POST['aquiestamos'])) {/*el usuario solicita enviar datos*/}
He exagerado el nombre para no confundir el tipo de input con el atributo name, lo normal sería name=submit

Saludos
vosk
  #6 (permalink)  
Antiguo 18/11/2012, 11:46
 
Fecha de Ingreso: enero-2010
Mensajes: 30
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Escribir texto despues de presionar Submit

muchas gracias vosk por la ayuda.

Al final ha sido mucho mas facil de lo que yo creia.

Debajo del formulario he puesto.

Código:
<div>			
<p align="center"><?php if(isset($_POST['Submit'])) {echo "El mensaje se ha enviado correctamente";} ?></p>				
</div>
Funciona perfectamente cuando le doy al submit.

Ahora me falta darle estilos para que quede mejor, pero lo que es la base ya esta hecha.

Gracias.

Etiquetas: formulario, html, presionar, submit, usuarios
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 13:37.