首页 > 解决方案 > 使用 PHP MVC 框架,未填充从 db 到选择框的选定值

问题描述

我的控制器名为 Posts,

public function addmore(){
  
 if($_SERVER['REQUEST_METHOD'] == 'POST'){
 
        $Asystemtype=$this->postModel->fetchDoctype();
                            
        $data = [         
        'Asystemtype' => $Asystemtype,
        'Adoctype' =>   trim($_POST['Adoctype']) ];
          
        $this->view('posts/addmore', $data);
          
}         

我的模型名为 Post,

我有一个名为 systemtitles 的数据库表,其中包含名为 ID 和标题的列。

public function fetchDoctype(){
      $this->db->query('SELECT * FROM systemtitles');
      $results = $this->db->resultSet();
      return $results;
    }
    

我的 VIEW 名为 addmore

<form action="<?php echo URLROOT; ?>/posts/addmore" method="post" >
<div>
  <label for="Asystemtype">System Type: <sup>*</sup></label>
            <select id="systype" name="Asystemtype" class="form-control form-control-lg" value="<?php echo $data['Adoctype']; ?>">
            <?php foreach($data['Asystemtype'] as $Asystemtype) :?>
            <option value = "<?php echo $Asystemtype->titles;  ?>"> <?php echo $Asystemtype->titles;  ?> </option>
            <?php endforeach; ?>            
            </select>
</div>
<div>
<label for="Adoctype">Document Type: <sup>*</sup></label>
            <select id="doctype" name="Adoctype" class="form-control form-control-lg" value="<?php echo $data['Adoctype']; ?>">
                
            <option value="Select">Select Doc Type</option>
            <option value="HRS">HRS </option>
            <option value="HDD">HDD </option>
            </select>
</div>          

我试图启动我的网站,这些是观察结果,
我的 SELECT 框只是空白,什么都没有填充,为什么?我从控制器打印了 var_dump

var_dump($Asystemtype);

它正在呼应所有(在我的数据库中至少我有五行!)。从 db 为 Asystemtype 填充我的选择框所需的帮助。我的 Adoctype 没有问题,因为我直接从表单中填充。

标签: phpdatabasecodeigniterselectmodel-view-controller

解决方案


我发现了我的错误。我所做的是从我的控制器发送一个空数据!在我的 POST else 声明中有

else{ $Asystemtype=$this->postModel->fetchDoctype(); $data=[ 'Asystemtype' =>'', 'Adoctype' => ''];
$this->view('posts/addmore', $data);
 }

那是个错误。也就是说,如果我没有发帖,那么它将 'Asystemtype' =>'' 作为空值。现在我更正为 'Asystemtype' => $Asystemtype 感谢 Alexander Dobernig 提出的宝贵建议/意见


推荐阅读