我根据数据库从使用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; ?>">
它有效,但我认为还有更好的方法
答案 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