Вставить ' 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 ) )
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.
Чтобы выполнить то, что вы запрашиваете, вам просто нужно добавить в inputs несколько скобок, и с этим уже отправка info будет в array, то есть:
<input type="text" name="nombre[]" value="asdf" />
<input type="text" name="nombre[]" value="jkl" />