Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Conteo regresivo, accion submit

Estas en el tema de Conteo regresivo, accion submit en el foro de PHP en Foros del Web. Buenas gente!! A ver, tengo un problemilla en un codigo y soy algo inutil para resolverlo. Os cuento un poco. Estoy haciendo una pagina con ...
  #1 (permalink)  
Antiguo 19/05/2013, 18:05
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Conteo regresivo, accion submit

Buenas gente!!
A ver, tengo un problemilla en un codigo y soy algo inutil para resolverlo.
Os cuento un poco.
Estoy haciendo una pagina con un test online mediante un formulario php.
Los resultados se envian por email.
Ahora lo que queria era añadirle un conteo regresivo y que al finalizar la cuenta, se envie el formulario.
De modo que o bien se envia porque el usuario termina y pincha en enviar; o bien se finaliza el tiempo y se auto envia.
Pero mi problema es que cuando finaliza el conteo, no se envia.
Me imagino que el error se encuentra en la pagina enviar.php, porque no se si tengo que recoger ese submit que hace el script ni como recogerlo.

Os pongo el codigo que os enterareis mejor:

index.html
Código:
<html>
<head>
<script>
var timeLimit = 1; //t15iempo en minutos
var conteo = new Date(timeLimit * 10000);

function inicializar(){
document.getElementById('cuenta').childNodes[0].nodeValue =
conteo.getMinutes() + ":" + conteo.getSeconds();
}

function cuenta(){
intervaloRegresivo = setInterval("regresiva()", 1000);
}

function regresiva(){
if(conteo.getTime() > 0){
conteo.setTime(conteo.getTime() - 1000);
}else{
clearInterval(intervaloRegresivo);
//alert("Fin");
document.test.submit();
//envio el form test;
}

document.getElementById('cuenta').childNodes[0].nodeValue =
conteo.getMinutes() + ":" + conteo.getSeconds();
}
var onload;
onload = inicializar();

</script>
</head>
<body onload="cuenta();">
<div id=cuenta >0</div>
<form method="post" action="enviar.php" name="test">
  <p>
  <label for="nombre">Nombre:</label>
  <br />
<input id="nombre" name="nombre" placeholder="Nombre completo">
     <label for="select"></label>
    Seleccione:</p>
  <p>
  <select name="select1" size="1" id="select">
    <option selected="selected"> </option>
    <option>A</option>
    <option>b</option>
    <option>c</option>
    <option>d</option>
  </select>

      <input id="enviar" name="enviar" type="submit" value="Enviar test">
    </form>
</body>
</html>
y enviar.php
Código:
<?php
$nombre=$_POST['nombre'];    
$select1=$_POST['select1'];
$select2=$_POST['select2'];
$email = $_POST['email'];
$para = '[email protected]';

$titulo = 'Simulacro Test';
$cabecera= 'Respuestas del Test de Acceso a Tropa y Marineria de las Fuerzas Armadas';
$header = 'From: ' . $email . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";

$msjCorreo = "Nombre: $nombre\n E-mail: $email\n \n $cabecera\n R1: $select1\n R2: $select2\n";
 
if ($_POST['enviar']) {
if (mail ($para, $titulo, $msjCorreo, $header))
 { 
echo "Enviado con exito";
} else {
echo 'Falló el envio';
}
}
?>
No se si se entiende bien...
Pero creo que la solucion es sencilla, solo que no doy con ella

Gracias por la ayuda. Un saludo

P.D.: Puede que el codigo que he pegado aqui tenga errores, es que entre que estoy probando y que aqui he quitado partes para no ponerlo entero... :)
  #2 (permalink)  
Antiguo 19/05/2013, 19:18
Avatar de ggomez91  
Fecha de Ingreso: octubre-2008
Mensajes: 181
Antigüedad: 15 años, 7 meses
Puntos: 13
Respuesta: Conteo regresivo, accion submit

hola, esta linea: "document.test.submit()", se supone que haga referencia a tu form? por que no la obtienes con document.getElementById?
  #3 (permalink)  
Antiguo 20/05/2013, 02:27
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Conteo regresivo, accion submit

El codigo no es mio propio.
Influye eso en el error que me ocurre?
  #4 (permalink)  
Antiguo 20/05/2013, 06:29
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Conteo regresivo, accion submit

Bueno, he conseguido un pequeño avance, pero no se si esta bien hecho.
Aun asi sigo teniendo un problema.

La parte del codigo que realizaba la funcion al finalizar el conteo lo he puesto asi:
Código:
function regresiva(){
if(conteo.getTime() > 0){
conteo.setTime(conteo.getTime() - 1000);
}else{
clearInterval(intervaloRegresivo);
//alert("Fin");
//Esto es lo que he cambiado
document.getElementById('test').innerHTML=window.location="enviar.php";
No se si esa expresion es correcta, pero por lo menos ahora al finalizar el tiempo se redirige a "enviar.php"
El problema que tengo es que se carga enviar.php pero no se envia ningun dato. Se queda la pantalla en blanco :S

Asi que quiero pensar que me falta llamar a esa funcion desde enviar.php
Pero ni remota idea de como hacer eso...pero ni por asomo

Podeis echarme un mano y explicarme como se hace eso, por favor?
  #5 (permalink)  
Antiguo 20/05/2013, 10:22
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 12 años, 6 meses
Puntos: 3
Respuesta: Conteo regresivo, accion submit

Deberias revisar el formulario de donde quieres enviar los datos..
Por ejemplo, revisar lo siguiente

nombre del formulario
tipo de envio de datos "post" o "get"

pero con un document.nombreform.submit();
debiese funcionar.

el codigo javascript lo estas poniendo en el mismo archivo donde esta el formulario?

o usas un iframe o algo parecido para cargar el formulario en tu pagina?

Saludos.
  #6 (permalink)  
Antiguo 20/05/2013, 10:54
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Conteo regresivo, accion submit

No entiendo muy bien tus preguntas cuando tienes todo el codigo en la parte de arriba...
El codigo script esta en la misma pagina que el formulario (aunque tambien he probado a poner el script en una pagina aparte contador.js pero nada)
Nombre de formulario esta bien, se corresponde.
Metodo post
En fin...
Que ya no se que mas hacer.
Por favor, que alguien me ayude, es urgente y yo no doy con la forma de hacerlo funcionar
  #7 (permalink)  
Antiguo 20/05/2013, 11:31
 
Fecha de Ingreso: mayo-2013
Mensajes: 171
Antigüedad: 11 años
Puntos: 4
Respuesta: Conteo regresivo, accion submit

Bueno, pues me auto soluciono yo el tema.
Estoy a cuadros, mas que nada porque despues de probar y mucho probar, no conseguia llamar a la funcion del script desde el php...
Y no se si es que habria algun caracter suelto que daba error o yo que se, que cuando ponia

enviar.php
Código:
if(document.test.submit){
if (mail ($para, $titulo, $msjCorreo, $header))
 { 
echo "Enviado con exito";
} else {
echo 'Falló el envio';
}
}
Me decia que habia un error de sintaxis, y erre que erre.
Y ahora por cabezoneria lo he vuelto a poner y funciona...
No se que estaria pasando, pero bueno.
Ya esta solucionado.
Gracias por vuestra ayuda.

Etiquetas: conteo, formulario, html, regresivo, resultados, select, submit
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 18:39.