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<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 originalfunction enviar(evento, formulario){
evento.preventDefault(); //Cancelo el envío
setTimeout(function(){ //Aplico el temporizador
formulario.submit(); //Envío los datos
}, 5000);
}
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 originalif ($_POST){
//Ejecutas el código para guardar la información
}
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