entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Agregar mas inputs

Hola alguien que me pueda explicar como puedo insertar los valores a la base de datos. no se como poner el valor del input en la consulta, en la del archivo esta como mysqli_real_escape_string($con, $_POST["name"][$i]) <- esto es lo que no entiendo de antemano gracias por su tiempo

<html>
<head>
<title>jQuery Add & Remove Dynamically Input Fields in PHP</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-rc1/jquery.min.js"></script>
</head>
<body>
<h1>jQuery Add & Remove Dynamically Input Fields in PHP</h1>
<form name="add_me" id="add_me">
<table id="dynamic">
<input type="text" name="name[]" placeholder="Enter Your Name">
<button type="button" name="add" id="add_input">Add</button>
</table>
<input type="button" name="submit" id="submit" value="Submit">
</form>
</body>
</html>
<script>
$(document).ready(function(){
    var i=1;
    $('#add_input').click(function(){
        i++;
        $('#dynamic').append('<tr id="row'+i+'"><td><input type="text" name="name[]" placeholder="Enter Your Name"></td><td><button type="button" name="remove" id="'+i+'" class="btn_remove">Remove</button></td></tr>');
    });
    $(document).on('click', '.btn_remove', function(){
        var button_id = $(this).attr("id");
        $('#row'+button_id+'').remove();
    });
    $('#submit').click(function(){
        $.ajax({
            url:"insert.php",
            method:"POST",
            data:$('#add_me').serialize(),
            success: function(data)
            {
                alert(data);
                $('#add_me')[0].reset();
            }
        });
    });
});
</script>

Insert

<?php
$conn = mysqli_connect("localhost", "root", "", "test");
$number = count($_POST["name"]);
if($number > 0)
{
    for($i=0; $i<$number; $i++)
    {
        if(trim($_POST["name"][$i] != ''))
        {
            $sql = "INSERT INTO info(name) VALUES('".mysqli_real_escape_string($conn, $_POST["name"][$i])."')";
            mysqli_query($conn, $sql);
        }
    }
    echo "Data Inserted Successfully";
}
else
{
    echo "Enter Your Name";
}
?>

0voto

steven comentado

tu codigo no se puede entender deberias de editarlo, creo que hay hay varias errores y te tomara regular tiempo corregirlos todos, si tu idea es solo almacenar datos en una base de datos te puedo guiar paso a paso porque tengo experiencia, si quieres me puedes contactar en skype para hablar mejor

1voto

Peter comentado

@algoritmico movi tu respuesta a comentario, porque no era respuesta y si vas ayudarle, que sea aquí, la idea es que las soluciones le ayuden a otros usuarios con el mismo problema y así todos salgamos ganando.

Saludos.

1 Respuesta

2votos

Leonardo-Tadei Puntos227020

Hola @romancoronadoa,

el código que maneja los múltiples INPUT luce bien.

La idea con poner name="name[]" en el nombre del INPUT, es que estás armando en el navegador un vector HTML. Cuando el navegador lo envía al servidor, este lo recibe como un vector.

Por ejemplo si envías tres name[], cada valor sería:

$val1 = $_POST["name"][0];
$val2 = $_POST["name"][1];
$val3 = $_POST["name"][2];

En tu código, esto se lee en un bucle FOR,que funciona bien aunque los vectores PHP siempre es mejor recorrerlos con FOREACH.

Luego, el código solo ejecuta la query con el INSERT si hay algún valor cargado, así que enviar el formulario sin datos no hará nada.

No estás validando que la conexión se establezca, ni que la query se ejecute (están pasando estas cosas?), pero en el log de errores de Apache deberías ver si algo falla. En todo esto además estamos asumiendo que la tabla existe y que el campo a agregar tiene el nombre correcto y no es clave ni único (para permitir agregar duplicados)

Además de ver estos errores, podrías agregarle al código el poder ver la query que se va a ejecutar, para ver si es válida:

...
if($number > 0)
{
    for($i=0; $i<$number; $i++)
    {
        if(trim($_POST["name"][$i] != ''))
        {
            $sql = "INSERT INTO info(name) VALUES('".mysqli_real_escape_string($conn, $_POST["name"][$i])."')";
            print("Debug qry $i: $sql");
            mysqli_query($conn, $sql);
        }
    }
    echo "Data Inserted Successfully";
}
...

Si nos copiás y pagás las querys que se generan, tal vez podamos ver alguna cosa más.

Saludos cordiales

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta