Вставить ' N ' раз записей с теми же Input


Доброе утро у меня есть форма, в которой input автоматически генерируется с помощью for В зависимости от назначенного номера. Проще говоря, форма из 4 полей генерируется n раз для сохранения информации для одного и того же идентификатора.

Проблема в том, что input генерируются с одним и тем же "name", и это приводит к тому, что при отправке их на вставку сохраняется только одна строка

вопрос в том, как вы задаете, чтобы поместить их в массив и переименовать их в "name" для сохранения n чисел inputs в одном запросе

<?php  
    $cantidadI=3;
 ?>
<div id="contenedor">
    <form id="datos" action="inserta.php" method="post">
        <div id="tabla">
            <table>
                <?php for ($i=0; $i<=$cantidad; $i++) { 

                ?>
                <tr>
                    <td colspan="4" align="center">
                        Nombre:<input id="nombre" type="text" name="nombre[]" />
                    </td>
                </tr>
                <tr>
                    <td colspan="4" align="center">
                        No Fase:<input id="nofase" type="text" name="nofase[]" />
                    </td>
                </tr>
                <tr>
                    <td colspan="4" align="center">
                        Dias Duracion:<input id="diasdu" type="text" name="diasdu[]" />
                    </td>
                </tr>
                <tr>
                    <td colspan="4" align="center">
                        Precio:<input id="presio" type="text" name="presio[]" />
                    </td>
                </tr>
            <?php } ?>
            </table><br>
            </div>

        <input id="guarda" type="submit" value="Guardar" />
        <a href="#"><input id="cance" type="button" value="Cancelar" /></a>
    </form>
</div>

INSERT:

foreach ($_POST as $key => $values) {
$query = "INSERT INTO detalles(nombre, no_fase, dias_duracion, precio) VALUES ('".$values['nombre']."','".$values['nofase']."','".$values['diasdu']."','".$values['presio']."')";
mysql_query($query, $conexion);
}

делая print_r ($_POST), я понимаю, что это занимает только

Array ( [nombre] => Array ( [0] => miguel [1] => miguel [2] => miguel ) [nofase] => Array ( [0] => 7 [1] => 7 [2] => 7 ) [diasdu] => Array ( [0] => 45 [1] => 45 [2] => 45 ) [presio] => Array ( [0] => 1236 [1] => 1236 [2] => 1236 ) )
Author: laura, 2016-06-15

2 answers

Одним из вариантов является создание многомерного массива с $i, который вы используете в for:

        <?php for ($i=0; $i<=3 ; $i++) { ?>
            <tr>
                <td colspan="4" align="center">
                    Nombre:<input id="nombre" type="text" name="usuario[<?= $i ?>][nombre]" />
                </td>
            </tr>
            <tr>
                <td colspan="4" align="center">
                    No Fase:<input id="nofase" type="text" name="usuario[<?= $i ?>][nofase]" />
                </td>
            </tr>
            <tr>
                <td colspan="4" align="center">
                    Dias Duracion:<input id="diasdu" type="text" name="usuario[<?= $i ?>][diasdu]" />
                </td>
            </tr>
            <tr>
                <td colspan="4" align="center">
                    Precio:<input id="presio" type="text" name="usuario[<?= $i ?>][presio]" />
                </td>
            </tr>
        <?php } ?>

Вам нужно будет немного изменить свой способ сделать INSERT в базе данных:

foreach ($_POST['usuario'] as $key => $values) {
    $query = "INSERT INTO detalles(nombre, no_fase, dias_duracion, precio) VALUES ('".$values['nombre']."','".$values['nofase']."','".$values['diasdu']."','".$values['presio']."')";
    mysql_query($query, $conexion);
}

Кстати, я рекомендую вам не использовать mysql_query, использовать функции mysqli.

 4
Author: Shaz, 2016-06-15 16:15:04

Чтобы выполнить то, что вы запрашиваете, вам просто нужно добавить в inputs несколько скобок, и с этим уже отправка info будет в array, то есть:

<input type="text" name="nombre[]" value="asdf" />
<input type="text" name="nombre[]" value="jkl" /> 
 0
Author: Alfonso Carrasco, 2016-06-15 15:10:51