首页 > 解决方案 > 通过 php 脚本使用 php 脚本生成元素

问题描述

我正在尝试学习 php,但现在我被一件事困住了。我有这样的代码:

<select name = "Option1" id ="Option1">
 <option value="0">Option1</option>
  <?php
   include ("db_connect.php");
   $option1 = $pdo->query("SELECT * FROM options");
   while($row = $option1->fetch(PDO::FETCH_ASSOC)){
    echo '<option value = "' . $row['id'] . '">' . $row['name'] . '</option>';
   }
  ?>
</select>

这是从数据库中选择带有选项的元素。但是我需要其中的 5 个,并且将这段代码复制 5 次是没有意义的,还是我错了?

我试过这样的事情:

     function renderSelect()
    {
        for ($a = 0; $a < 5; $a++){
            echo '<select>
                    <option value="0">Option ' . $a . '</option>
                    ' . renderOptions($a) . '
                  </select>';
        }
    }


    function renderOptions(){

   include ("db_connect.php");
   $option1 = $pdo->query("SELECT * FROM options");
   while($row = $option1->fetch(PDO::FETCH_ASSOC)){
    echo '<option value = "' . $row['id'] . '">' . $row['name'] . '</option>';
   }
  }

然后只需调用renderSelect,但它没有按预期工作。

你能给我一点建议吗?

非常感谢,我很感激!

标签: phphtml

解决方案


尝试在第二个函数中使用 return 。如果您在第二个函数中回显它,它会将回显输出添加到您调用该函数的开头。您创建一个字符串,在其中添加所有选项,然后返回该字符串。

function renderOptions(){

   include ("db_connect.php");
   $option1 = $pdo->query("SELECT * FROM options");

   $string = "";
   while($row = $option1->fetch(PDO::FETCH_ASSOC)){
    $string .= '<option value = "' . $row['id'] . '">' . $row['name'] . '</option>';
   }

   return $string;
}

还有一点要提一下,您正在调用renderOption函数并传递$a给一个函数,该函数接受参数。


推荐阅读