English 中文(简体)
如何在 POPST 中获得相同的字段
原标题:How to get same fields in POST
  • 时间:2012-05-25 10:31:51
  •  标签:
  • php
<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>

如何以.php 文件的形式获取此数据的最佳方法? 这是由 jQuery 生成的 。 可以是 3 或 30 。 可以是 3 (现在) 或 30 。

以.php i 的形式:

$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个?我想使用“强”法对每个 < / 强”,但如何使用?我如何生成输入或获取这些数据?

最佳回答

如果您可以更改输入元素的名称, 您可以这样做 :

<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 - data 转换为数据模型,数据模型将看起来会是:

$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;
}

当然,有了这种解决办法,数字必须是连续的/相邻的。

问题回答

使用 name[] < , city[] code>country[] ]和 code>country[]/code>作为输入国名。然后它们作为数组传到PHP,您可以用 foreach 进行循环。

您可以使用您每个人的时空字符串, 如名称_.$i, 以$i 为柜台

您可以使用循环 :

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 最好是 id 而不是 name)

foreach ($_POST[ name ] as $index => $name) {
  $data = new Data();
  $data->name = $name;
  $data->city = $_POST[ city ][$index];
  $data->country = $_POST[ country ][$index];
  $data->save();
}




相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...