【问题标题】:Get value from dropdown in a table row codeigniter从表行codeigniter中的下拉列表中获取值
【发布时间】:2017-08-30 14:17:49
【问题描述】:

我在从使用 foreach $data as $d 根据数据库生成的下拉列表中获取值时遇到问题 代码是这样的

<table>
    <thead>
        <th>ID</th>
        <th>Action</th>
    </thead>
    <tbody>
        <?php
            foreach ($data as $d) {
        ?>
        <tr>
            <td><?php echo $d->id; ?></td>
            <td>
                <select name="option" id="option">
                    <option value="A" selected>A</option>
                    <option value="B">B</option>
                </select>
            </td>
        </tr>
    <?php } ?>
</tbody>

如何根据表格上显示的数据获取下拉值?

如果有 3 个数据显示(这意味着 3 个具有相同名称和 id 的下拉菜单)并且我为每个数据获得 3 个值?

编辑:简而言之,我需要发送到我的控制器的数据是: - 所选下拉列表中的值 - 每行的 id 值,以便我稍后可以将它用于我的查询,并结合下拉列表中的值

注意:我尝试在 foreach 中使用它

$x=1;


$x++;

name/id="option<?php echo $x;?>"

每个表格行都有这个

<input type="hidden" id="id<?php echo $x; ?>" name="id<?php echo $x; ?>" value="<?php echo $d->id; ?>">

它有效,但我认为还有更好的方法

【问题讨论】:

  • 你能详细说明一下这个问题吗?我不确定您是在问如何用正确的数据填充选项或如何获取所选选项的值。
  • @da39a3ee 我编辑了它,也许它可以帮助一点,对不起我的英语不好
  • 我已经编辑了我的答案。你是这个意思吗?可能有更复杂、更“干净”的答案使用库,但在基本的 PHP 中应该是这样。 :)

标签: javascript php html codeigniter codeigniter-3


【解决方案1】:

如果我正确理解了这个问题,下面是一个 select 元素的正确实现,它带有一个创建列表项的 foreach 循环。

<select name="foo">
    <option value="0">-------</option>
    <?php 
        foreach($foo as $row)
            echo '<option value="'.$row->DataID.'">'.$row->Data.'</option>';
    ?>
</select>

【讨论】:

  • 感谢您的回复,但我对下拉列表元素使用 foreach 循环 no,但对于表格行,并且每一行包含与数据库中的数据一起生成的下拉列表,也许我的解释不是好的,对不起
  • @Teletubbies 听起来你需要一个双重嵌套的 foreach 循环。一个用于表格行,另一个用于选择元素。除非我看到 SQL 查询,否则我无法确定。
【解决方案2】:

所以假设你的数据是在一个数组中结构化的,例如

$data = [
    "A" => [
        "id" => 1,
        "values" => [
            "lorem",
            "ipsum",
            "donec"
        ]
    ],
    "B" => [
        "id" => 2,
        "value" => [
            "lorem",
            "ipsum",
            "donec"
        ]
    ],
    "C" => [
        "id" => 3,
        "value" => [
            "lorem",
            "ipsum",
            "donec"
        ]
    ],
];

像这样将数组打印为下拉列表

<form method="post" action="/url/to/post/form/to">
...
    <?php foreach ($data as $row): ?>
        <select name="options[<?php $row['id']; ?>]" id="option">
            <?php foreach ($row['values'] as $value): ?>
                <option value="<?php echo $value; ?>"><?php echo $value; ?></option>
            <?php endforeach; ?>
        </select>
    <?php endforeach; ?>
...
</form>

这将导致一个包含三个选项的下拉列表; A、B 和 C。 如果用户选择这些选项之一并且表单已发布您可以将所选选项读取为:

...
    foreach ($_POST['options'] as $option) {
        var_dump($option);
    }
...

注意:确保对字段及其值进行适当的验证,以防止在您的应用程序中出现不需要的、不希望的行为。

参考资料:
https://www.codeigniter.com/user_guide/libraries/input.html
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data
https://www.w3schools.com/php/php_form_validation.asp
http://phpsec.org/projects/guide/2.html

【讨论】:

  • 感谢您的回复,但我对下拉列表元素使用 foreach 循环 no,但对于表格行,并且每一行包含与数据库中的数据一起生成的下拉列表,也许我的解释不是好的,对不起
  • 所以每一行都包含一个下拉列表,您想获取该嵌套下拉列表的值吗?
猜你喜欢
  • 1970-01-01
  • 2017-03-08
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 2014-06-23
  • 2014-06-19
相关资源
最近更新 更多