Stack Overflow en español Asked on February 4, 2021
soy un poco nuevo programando, les comento, estoy tratando de enviar datos desde JavaScript AJAX a un archivo PHP para que este los inserte , pero no se me insertan en la base de datos
Al momento de apretar submit no me aparece ningún error en consola, pero igualmente se me envia el console log de datos_enviados
$('#submit').on('click',function(){
if(validarFormulario()){
enviarDatos();
alert("datos_enviados");
}
} );
Esta es la funcion de enviar datos que recopila y envía los datos, practicamente recopilo los datos y hago unos if entremedio por que para verificar unos checkbox de mi pagina
function enviarDatos(){
var checkArray = [];
var web = false;
var rs = false;
var amigo = false;
var tv = false;
var nombre=$('#nombre').val();
var alias=$('#alias').val();
var rut=$('#rut').val();
var email=$('#email').val();
var candidato=$('#candidatos').val();
var comuna=$('#comuna').val();
$("input:checkbox[name=check_lista]:checked").each(function(){
checkArray.push($(this).val());
});
for (var i = 0; i < checkArray.length; i+=1) {
if (checkArray[i]=="web"){
web=true;
}
if (checkArray[i]=="amigo"){
amigo=true;
}
if (checkArray[i]=="rs"){
rs=true;
}
if (checkArray[i]=="tv"){
tv=true;
}
}
$.ajax({
url:"insert.php",
type:"POST",
data:{
nombre: nombre,
alias: alias,
rut : rut,
email: email,
candidato: candidato,
comuna: comuna,
web: web,
rs : rs,
amigo : amigo,
tv : tv
}
});
}
Y a continuación el archivo de PHP que debería insertar los datos, los recibo con POST y me conecto y ejecuto la query
<?php
$nombre = $_POST['nombre'];
$alias = $_POST['alias'];
$rut = $_POST['rut'];
$rut = $_POST['email'];
$id_candidato = $_POST['candidato'];
$id_comuna = $_POST['comuna'];
$web=$_POST['web'];
$tv=$_POST['tv'];
$rs=$_POST['rs'];
$amigo=$_POST['amigo'];
$conn = new PDO("pgsql:dbname=fhernandez;host=localhost","postgres","monotono11");
$query = "INSERT INTO voto (rut,alias,email,nombre,web,tv,rs,fk_candidato,fk_comuna)
VALUES('$rut','$alias','$email','$nombre','$web','$amigo','$tv','$rs','$id_candidato','$id_comuna'");
$stmt = pg_query($conn,$query);
?>
Por ahora no he logrado mi cometido y espero queme ayuden, muchas gracias
Al pasar el data, deberías poner comillas a los campos que vas a enviar.
$.ajax({
url:"insert.php",
type:"POST",
data:{
"nombre": nombre,
"alias": alias,
"rut" : rut,
"email": email,
"candidato": candidato,
"comuna": comuna,
"web": web,
"rs" : rs,
"amigo" : amigo,
"tv" : tv
}
});
Por otra parte en el PHP, deberías capturar los datos del POST de la siguiente forma:
$nombre = filter_input(INPUT_POST, "nombre", FILTER_SANITIZE_STRING);
Conforme realizas la ejecución del INSERT, puede facilitar la inyección de Mysql, puedes ejecutar el INSERT llamando al método execute de PDO. Revisa que el número de campos a insertar es correcto y coincide con los campos que le pasas. Puedes consultar la documentación de PDO https://www.php.net/manual/es/book.pdo.php
$query = "INSERT INTO voto (rut,alias,email,nombre,web,tv,rs,fk_candidato,fk_comuna)
VALUES(?,?,?,?,?,?,?,?,?);
$stmt = $pdo->prepare($query);
$stmt->execute(array($nombre,...));
Answered by Vicent on February 4, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP