【问题标题】:Get value from select array tag in php?从 php 中的选择数组标签中获取值?
【发布时间】:2018-03-04 18:05:13
【问题描述】:

上次我通过手机发布我不完整的问题。 现在这是我的完整问题。 好的所以我的问题是我构建了一个编辑页面editProduct.php。在这里,我构建了三个表单,因为我有 三个类别 每个类别都有自己的表单。这三种形式几乎所有内容都相同。例如:产品名称输入框、条件选择框等等。当我单击编辑按钮打开编辑页面时,我查看产品页面,并在一个字段中显示输入框中产品的当前值,也在复选框中的选择框中显示产品的当前值。这是我的 HTML 代码。

<input type="text" name="p_name[]" value="<?php echo $db_pname; ?>"  placeholder="Product Name">

 <select  name="guarented-delivery[]"  id="guarented-delivery">
      <option value="1 Days Shipping"    <?php if($db_gdelivery=="1 Days Shipping") { echo 'selected="selected"'; } ?>>1 days</option>
      <option value="2 Days shipping"    <?php if($db_gdelivery=="2 Days shipping") { echo 'selected="selected"'; } ?>>2 days</option>
      <option value="3 Days shipping"    <?php if($db_gdelivery=="3 Days shipping") { echo 'selected="selected"'; } ?>>3 days</option>
      <option   value="5 Days shipping"  <?php if($db_gdelivery=="5 Days shipping") { echo 'selected="selected"'; } ?>>5 days</option>
      <option   value="7 Days shipping"  <?php if($db_gdelivery=="7 Days shipping") { echo 'selected="selected"'; } ?>>7 days</option>
      <option value="10 Days shipping" <?php if($db_gdelivery=="10 Days shipping") { echo 'selected="selected"'; } ?>>10 days</option>
 </select>

好的,这就是示例,我有三个类别,每个类别表单我都使用相同的代码。我将 []name 属性 一起使用,因为它在所有表单中都使用过,以便它获得数组中所有的值。但不知道如何获取输入框中选定文本或新文本的值?因为它向我显示了旧值而不是新输入的值。 这是我的 php 代码。

$name = $_POST['p_name'];
    foreach($name as $pname)
    {
        $pname;
        // if i echo here then i shows me old product name 3 times echo outside this loop to get value 1 time.
    }
    echo $pname;
    //for dropdown 
    $gd  = $_POST['gdelivery'];
    foreach($gd as $gdelivery)
    {
        $gdelivery;
    }
    echo $gdelivery;

帮我解决这个问题。谢谢。

【问题讨论】:

  • 一个选择只有一个值。如果你想要更多,那么你需要提供多选属性。也不需要名称中的括号。当您使用 $color_name = isset($_POST['color']) ? (array) $_POST['color'] : []; 时,您总是会得到一个可以迭代的数组。
  • 实际上我在我的手机上,这就是为什么我没有完全分享我的代码。我只想要一个值。这个选择标签在我的表单中使用了 3 次,它也给了我一个值,但正如我之前问过的,这是我的编辑页面,我在这里显示旧记录,它会自动选择旧的颜色值,但是如果我改变它不会改变的值怎么办值,但仍通过回显在结果中显示旧的选定值。这就是我想要的。
  • 在这种情况下,您应该拥有三个不同的名称。每个选择一个自定义的。然后您可以使用 3 个不同的变量进行操作。例如“colors_cars”、“colors_bikes”、“colors_carpets”。
  • 这很好,但代码会太大,但我想要小而灵活,可以在所有三个上工作,这是他们的任何方式。
  • 好的,我明白了你的意思并发布了一个(经过测试的)答案。

标签: php mysql


【解决方案1】:

在讨论了你的 cmets 之后,这对你有用:

重要的是,所有选择必须在同一个表单内。

<form method="post">
    <select name="colors[]"><option value="black">black</option></select>
    <select name="colors[]"><option value="red">red</option></select>
    <select name="colors[]"><option value="gold">gold</option></select>
    <input type="submit">
</form>

<?php
$colors = isset($_POST['colors']) ? (array) $_POST['colors'] : [];

foreach($colors as $color)
{
    echo "$color<br>\n";
}

// black
// red
// gold

【讨论】:

  • 嗨,您的代码运行良好,但我认为不是。我希望我只显示我选择的值而不是其他值。例如,当您定义三个选择标签时,我从第一个选择标签“黑色”中选择值,我只给我第一个选择值的值而不是其他值。我是怎么做到的。这是我的问题。请帮忙。非常感谢你帮助我。
猜你喜欢
  • 2011-11-22
  • 2016-02-03
  • 2017-05-04
  • 2016-07-28
  • 2015-04-28
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
相关资源
最近更新 更多