从表格行codeigniter中的下拉列表中获取价值

时间:2017-08-30 14:17:50

标签: javascript php html codeigniter codeigniter-3

我根据数据库从使用foreach $ data生成的dropdownlist获取值时遇到问题 代码就像这样

<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值,以便我以后可以将它用于我的查询,并结合dropdownlist中的值

注意:我尝试在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; ?>">

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

因此假设您的数据是以数组形式构建的,例如

$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