Ver Mensaje Individual
  #3 (permalink)  
Antiguo 26/03/2015, 09:49
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Submit con delay

No puedes ejecutar el guardado de datos de esa manera. Necesitas enviarlos para poder obtenerlos de $_POST y luego ya podrás procesarlos.

Lo que tendrías que hacer es simple. Primero, en lugar del <button>, coloca un <input> de tipo submit, que es el botón natural de un formulario para enviar su información, luego, cuando se produzca el evento submit, que es el que ocurre cuando envías los datos del formulario a procesarse, lo cancelas con el método preventDefault, aplicas el método temporizador setTimeout para enviar la información luego de un determinado tiempo y, finalmente, utiliza el método submit para hacer el envío de la información.

Esto debe de ir en la cabecera del formulario:
Código HTML:
Ver original
  1. <form action="./" method="POST" id="form1" onsubmit="enviar(event, this)">

Y este es el script para aplicar el efecto de retraso:
Código Javascript:
Ver original
  1. function enviar(evento, formulario){
  2.     evento.preventDefault(); //Cancelo el envío
  3.     setTimeout(function(){ //Aplico el temporizador
  4.         formulario.submit(); //Envío los datos
  5.     }, 5000);
  6. }

Y como veo que piensas procesar los datos en el mismo archivo, necesitas una condición que verifique que has recibido datos medianto el método POST.

Código PHP:
Ver original
  1. if ($_POST){
  2.     //Ejecutas el código para guardar la información
  3. }

Solo como un consejo, evita mezclar código de distintos lenguajes de esa manera. Es preferible y más ordenado tener el código PHP en un archivo con extensión .php, el código JavaScript en un archivo con extensión .js y así con los demás.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand