Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的选择框生成器不显示表中的所有选项?_Php_Mysql - Fatal编程技术网

Php 为什么我的选择框生成器不显示表中的所有选项?

Php 为什么我的选择框生成器不显示表中的所有选项?,php,mysql,Php,Mysql,我正在制作一个选择框生成器called ListGenerator,它需要从名为categories的表中获取选项名称,并将它们添加到选择框中。数据库也从允许用户输入要添加到选择框的新选项的表单更新 目前,生成器只接受最后输入的名称并将其显示在选择框中。我相信生成器直接从表单而不是查询中获取结果?下面是将表单中的数据插入到表中的代码,以及应该从表中选择所有内容并将其放入选择框中的查询代码 if(isset($_POST['name'])) { $result= $pdo->prep

我正在制作一个选择框生成器called 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 );

如果没有看到ListGenerator Classis中的代码,没有人能帮上忙。我真的不知道ListGenerator是如何工作的,但是它能够从categories表中猜出标识符似乎很奇怪。第二,我真的不明白你的问题是什么。我看不到结果集正在被提取任何地方更新的问题,以包括代码仍然没有实际提取结果集的外观的东西这实际上是工作,在修复了一个小的语法错误!非常感谢。好吧,如果它有效的话——接受这个答案,这样将来其他人也会发现这是一个解决方案?