我正在制作一个选择框生成器(名为ListGenerator),它需要从名为categories的表中获取选项名称,并将它们添加到选择框中。数据库也从允许用户输入要添加到选择框中的新选项的表单中更新。
当前生成器仅采用最后输入的名称,并将其显示在选择框中。我相信生成器直接从表单而不是查询中获得结果?下面是将数据从表单插入到表的代码,以及应该从表中选择所有内容并将其放入选择框中的查询。
if(isset($_POST['name'])) {
$result= $pdo->prepare('INSERT INTO categories (name) VALUES(:name)');
unset($_POST['submit']);
$result->execute($_POST);
}
$ListGenerator =new ListGenerator();
$categoryresults = $pdo->query('SELECT * FROM categories');
foreach ($categoryresults as $row) {
$ListGenerator->setList([$row['name']]);
}
echo $ListGenerator->getHTML()
ListGenerator的代码如下,当将固定字符串输入到上面代码中的->setList函数时,它可以很好地工作:
<?php
class makelist{
public $list;
}
class ListGenerator {
public $makelist = [];
public function setlist($list){
$this->makelist = $list;
}
public function getHTML(){
$result = '<select name="category">';
foreach ($this->makelist as $list) {
$result = $result . '<option>' . $list . '</option>';
}
$result =$result . '</select>';
return $result;
}
}
?>
没有测试,但我认为它应该获取这样的结果?
$categoryresults = $pdo->query('SELECT * FROM categories');
$listitems=array();
while( $rs=$categoryresults->fetch( PDO::FETCH_OBJ ) ){
$listitems[]=$rs->name
}
$ListGenerator->setList( $listitems );