El error es evidente: estás escribiendo código de JavaScript de forma directa en medio del
script PHP. Lo que te recomiendo hacer es utilizar una petición asíncrona (AJAX) y así evitarás esta mezcla de lenguajes.
Por ejemplo, si tuviera un formulario con un campo para ingresar mi número de documento de identidad:
Código HTML:
Ver original<form id = "documento" action = "guardar.php" method = "post"> <input type = "text" name = "numero" /> <input type = "submit" />
Al momento de ejecutar el envío del dato a "guardar.php",
cancelaría el evento que ocurre en ese momento (evento
submit
) y realizaría la petición asíncrona:
Código Javascript
:
Ver originaldocument.addEventListener("DOMContentLoaded", function(){
document.querySelector("#documento").addEventListener("submit", function(event){
event.preventDefault(); //Cancelo el envío
var ajax = new XMLHttpRequest(),
dato = "numero=" + this.querySelector("[name=numero]").value;
ajax.open(this.method, this.action, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send(dato);
ajax.addEventListener("load", function(){
if (this.status == 200){
alert(this.responseText);
}
}, false);
}, false);
}, false);
Mientras que en el archivo PHP emitimos una respuesta ya sea que se haya logrado insertar el dato o que haya ocurrido un error:
Código PHP:
Ver original//Realizamos la conexión
//Verificamos que se haya realizado o terminamos el script
//Recibimos y limpiamos el dato
//Elaboramos la consulta SQL
$consulta = "INSERT INTO tabla (numero) VALUES ('$numero')";
//Ejecutamos la consulta
if ($resultado){
//Si se logró insertar el dato
echo 'Se logró insertar el número de documento';
}
else{
//Caso contrario
echo 'No se pudo insertar el número de documento: ' . mysqli_error($conexion); }
//Liberamos a la memoria de los resultados generados
//Cerramos la conexión
De esta manera, se mostrará un mensaje de alerta ya sea que se haya logrado o no insertar el dato. La ventaja está en que si no se logra insertar por algún error que pudiera ocurrir, la ventana no recargará y los datos permanecerán. Con la instrucción
mysqli_error($conexion)
, se podrá saber qué error ocurrió.
Un saludo