<form action="form.php" id="form">
<input type="text" name="name_1"><input type="text" name="city_1"><input type="text" name="country_1">
<input type="text" name="name_2"><input type="text" name="city_2"><input type="text" name="country_2">
<input type="text" name="name_3"><input type="text" name="city_3"><input type="text" name="country_3">
<input type="submit">
</form>
如何在form.php文件中获取此数据的最佳方法?这是用jQuery生成的。可以是3(现在)或30。
在form.php中我有:
$data = new Data();
$data->name = $_POST['name_1'];
$data->city = $_POST['city_1'];
$data->country = $_POST['country_1'];
$data->save();
$data = new Data();
$data->name = $_POST['name_2'];
$data->city = $_POST['city_2'];
$data->country = $_POST['country_2'];
$data->save();
$data = new Data();
$data->name = $_POST['name_3'];
$data->city = $_POST['city_3'];
$data->country = $_POST['country_3'];
$data->save();
但如果超过3?我想用 foreach ,但是怎么样?我如何生成输入或获取此数据?
答案 0 :(得分:1)
使用name[]
,city[]
和country[]
作为输入名称。然后他们将作为数组进入PHP,您可以使用foreach
进行迭代。
答案 1 :(得分:0)
您可以使用for循环:
for ($i = 1; $i <= 3; $i++) {
$data = new Data();
$data->name = $_POST['name_'.$i];
$data->city = $_POST['city_'.$i];
$data->country = $_POST['country_'.$i];
$data->save();
}
但是如果你可以改变你的html:
<input type="text" name="name[]"><input type="text" name="city[]"><input type="text" name="country[]">
<input type="text" name="name[]"><input type="text" name="city[]"><input type="text" name="country[]">
<input type="text" name="name[]"><input type="text" name="city[]"><input type="text" name="country[]">
你不需要知道计数。(name_1,name_2
最好是身份但不是名字)
foreach ($_POST['name'] as $index => $name) {
$data = new Data();
$data->name = $name;
$data->city = $_POST['city'][$index];
$data->country = $_POST['country'][$index];
$data->save();
}
答案 2 :(得分:0)
你可以使用你的每一个按时构建的字符串,例如&#39; name _。$ i&#39;,$ i作为计数器
答案 3 :(得分:0)
如果您可以更改输入元素的名称,可以这样做:
<input type="text" name="items[1][name]"><input type="text" name="items[1][city]"><input type="text" name="items[1][country]">
<input type="text" name="items[2][name]"><input type="text" name="items[2][city]"><input type="text" name="items[2][country]">
<input type="text" name="items[3][name]"><input type="text" name="items[3][city]"><input type="text" name="items[3][country]">
数字不必相邻,但必须是唯一的。要将$_POST
- 数据转换为您的数据模型,将会是这样的:
$items = $_POST['items'];
$dataList = array();
foreach($items as $item) {
$data = new Data();
$data->name = $item['name'];
$data->city = $item['city'];
$data->country = $item['country'];
$dataList[] = $data;
}
当然,您可以根据需要添加任意数量的项目。
如果您无法更改输入元素的名称,则可以使用其他解决方案之一。我只会修改它们,以便元素的数量不像以下那样硬编码:
$dataList = array()
for($i = 1; isset($_POST["name_$i"]); ++$i) {
$data = new Data();
$data->name = $_POST["name_$i"];
// ... and so on
$dataList[] = $data;
}
当然,使用该解决方案,数字必须是连续的/相邻的。