1
respuesta

[Duda] javascript y php

Es un gusto saludarlos.

Me pueden apoyar con este código, estaba viendo un pequeño tutorial para ingresar registros a una base de datos, pero al revisar en la base de datos ingresa un registro pero en blanco, me da el mensaje que se inserto correctamente.

Saludos.

//----------------registar.php------------ <?php $codigo =isset($_POST['codUs'])? $_POST['codUs']:''; $usuario =isset($_POST['nombreUs'])? $_POST['nombreUs']:''; $correo =isset($_POST['correoUs'])? $_POST['correoUs']:'';

try{ $conexion = new PDO("mysql:host=localhost;port=3306;dbname=liquidaciones", "root", ""); $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $conexion->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

$pdo =$conexion->prepare('INSERT INTO user(codUs,nombreUs,correoUs)value(?,?,?)'); $pdo->bindParam(1, $codigo); $pdo->bindParam(2, $usuario); $pdo->bindParam(3, $correo); $pdo->execute() or die(print($pdo->errorInfo())); echo json_encode('true');

} catch(PDOException $error){

    echo $error->getMessage();
    die;

} ?>

//------------prueba5.js------------------------------

document.getElementById('formulario').addEventListener('submit', function(e) {

e.preventDefault();

let formulario = new FormData(document.getElementById('formulario'));

fetch('registrar.php', {
    method: 'POST',
    body: formulario
})
.then(res => res.json())
.then(data => {
    if(data == 'true') {
        document.getElementById('codUs').value = '';
        document.getElementById('nombreUs').value='';
        document.getElementById('correoUs').value = '';
        alert('El usuario se insertó correctamente.');
    } else {
        console.log(data);
    }
});

});

//-------prueba.html-------------------

insertando datos a la tabla

  <div  class="d-flex justify-content-center align-items-center encabezado1" style="height: 25vh;" >
  <form  id="formulario" action="" method="POST">

    <div  class="mb-3" id="">
    <label for="codUs" class="form-label">codigo de Usuario</label>
    <input type="text" class="form-control" id="codUs" placeholder="ingrese codigo" >

    <label for="nombreUs" class="form-label">Nombre Usario</label>
    <input type="text" class="form-control" id="nombreUs" placeholder="ingrese Usuario">

    <label for="correoUs" class="form-label">Correo usuario</label>
    <input type="text" class="form-control" id="correoUs" placeholder="ingrese correo">

    <div>     <button type="submit"  class="btn btn-primary">registrar</button> </div>
  </div>
1 respuesta

¡Hola Luis, espero que estés bien!

Por lo que veo en tu código, parece que estás teniendo un problema al enviar los datos del formulario al archivo PHP para insertarlos en la base de datos. Al revisar tu archivo JavaScript prueba5.js, noto que estás utilizando FormData para recopilar los datos del formulario y enviarlos a través de una solicitud fetch. Sin embargo, es posible que los datos no se estén enviando correctamente o que el problema esté en la parte de PHP.

Para asegurarnos de que los datos se estén enviando correctamente, te recomendaría agregar un console.log(formulario) justo antes de la llamada fetch en prueba5.js. De esta manera podrás verificar que los datos del formulario se están recopilando correctamente antes de enviarlos al archivo PHP.

Además, en tu archivo PHP, parece que estás usando bindParam para asignar los valores a la consulta preparada, pero podrías intentar usar bindValue en su lugar para ver si eso soluciona el problema. Por ejemplo:

$pdo->bindValue(1, $codigo);
$pdo->bindValue(2, $usuario);
$pdo->bindValue(3, $correo);

Después de realizar estos cambios, prueba nuevamente el proceso de inserción de registros y verifica si los datos se están enviando correctamente y si se están insertando en la base de datos.

Espero que estas sugerencias te ayuden a solucionar el problema. ¡Buena suerte!

Espero haber ayudado y buenos estudios!