TransWikia.com

enviar datos desde ajax a php e insertar datos

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

One Answer

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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP