【发布时间】:2023-03-03 10:32:01
【问题描述】:
我有一个 php 页面,其中包含从 sqlite 数据库文件 (comics.db) 填充的 3 个数据列表下拉列表。
我正在尝试使用 for 循环(我需要三个下拉菜单)来保存代码,但是当我单击“提交查询”时,表单操作“page.php”不会产生用户选择的三个输入,即字符 [ 1]、字符[2]和字符[3]。
我试过这条线的各种组合:
echo '<input list="characters" name="character[$x]">';
但我不断得到一个空白 page.php。我假设 _POST 变量没有存储 index.php 页面的三个输入?
我已经坚持了几天了,我尝试了会话变量,但除了使用 name=character1、2、3 等重复代码块三次之外,找不到其他有效的答案。 . 肯定有一个有效的循环/数组吗?
请帮忙!
我的 index.php 页面:
<html>
<body>
<?php
class MyDB extends SQLite3 {
function __construct() {
$this->open('comics.db');
}
}
for ($x = 1;$x < 4;$x++) {
$db = new MyDB();
$sql = <<<EOF
select character_name from characters group by character_name order by character_name asc;
EOF;
$ret = $db->query($sql);
echo '<form action="page.php" method="post">';
echo '<label for="character">Character: </label>';
echo '<input list="characters" name="character[$x]">';
echo '<datalist id="characters">';
while ($row = $ret->fetchArray(SQLITE3_ASSOC)) {
unset($name);
$name = $row['character_name'];
echo '<option value=""></option>';
echo '<option value="' . $name . '">' . $name . '</option>';
}
echo "</datalist>";
$db->close();
}
echo '<input type="submit" name="submit" />';
echo '</form>';
?>
</body>
</html>
我的页面.php:
<html>
<body>
<?php
for($x = 1; $x < 4; $x++) {
if(isset($_POST['character[$x]'])) {
$character = $_POST['character[$x]'];
echo "$character";
}
}
?>
</body>
</html>
【问题讨论】:
标签: php arrays sqlite variables