是否可以在POST中发送数组,或在一个输入标记中分配多个值,以及如何?

时间:2017-05-12 17:00:03

标签: php

我想在POST中发送多个值,但只使用一种输入标记

例如,是否可以将选项标记的值设置为$data['username_id]$data['name']并通过POST发送

<select name="owner" id="owner">
    <option value="NULL" selected="selected"></option>
    <?php
    $sql = 'SELECT * FROM users'
         . ' ORDER BY name';

    $query = mysqli_query($connect,$sql) or die (mysqli_error($connect));

    while ($data = mysqli_fetch_array($query))
    {
        ?>
        <option value="<?php echo $data['user_id']; ?>"><?php echo $data['name']; ?></option>
        <?php
    }
    ?>
</select>

我似乎无法在另一端检索。我试过了:

<option value="<?php echo $data['user_id','name']; ?>"><?php echo $data['name']; ?></option>

但仍然没有运气。

任何帮助都会有用。

1 个答案:

答案 0 :(得分:2)

  

例如,是否可以将option标签的值设置为$ data ['username_id]'和$ data ['name']并通过POST发送

是的,这可以小心翼翼地完成。

使用您的示例:

 <option value="<?php echo $data['user_id','name']; ?>"><?php echo $data['name']; ?></option>

可以简单地重写为:

<option value='<?php echo $data['user_id']."--".$data['name']."'>"
               .$data['name']; ?></option>

另一端:

在表单接收者PHP页面上:

$parts = explode("--",$_POST['owner']);
/***
 * $parts[0] = user_id
 * $parts[1] = name
 ***/

但是因为你正在从数据库行抓取数据,这是毫无意义的,你可能 JUST 传输用户ID并只是在接收端从数据库中获取'name'数据值。

如果分割器(--)出现多次,也会出现潜在的问题,所以要小心选择一个在您尝试的任何一个值中都不会出现的分割器发送。

正手工作:

 <input name="whatever[]" value="one">
 <input name="whatever[]" value="two">

方括号表示$_POST中传递的数据将是一个值数组。

正如comments by Kainaw中所指出的,您也可以使用multiple selection<select>输入中达到相同的效果。