Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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:视图未从模型中获取select值_Php_Mysql - Fatal编程技术网

PHP:视图未从模型中获取select值

PHP:视图未从模型中获取select值,php,mysql,Php,Mysql,我相信我会得到很多关于我如何做事的评论;我做这项兼职工作,并尝试使用MVC开发新系统。这是我当前的问题:当我加载表单视图时,我的控制器调用我的模型文件,该文件立即为视图实例化一个新模型,并从MySQL数据库检索旧表单值。该视图有一系列下拉列表。我将db中的值加载到模型私有变量中,这些变量与视图中的名称相同,但是这些值没有传递到视图中,因此下拉列表都显示了它们的默认值——它们应该显示存储在db中的值。下面是代码,但只是相关的代码片段: <?php require_once("../contr

我相信我会得到很多关于我如何做事的评论;我做这项兼职工作,并尝试使用MVC开发新系统。这是我当前的问题:当我加载表单视图时,我的控制器调用我的模型文件,该文件立即为视图实例化一个新模型,并从MySQL数据库检索旧表单值。该视图有一系列下拉列表。我将db中的值加载到模型私有变量中,这些变量与视图中的名称相同,但是这些值没有传递到视图中,因此下拉列表都显示了它们的默认值——它们应该显示存储在db中的值。下面是代码,但只是相关的代码片段:

<?php
require_once("../controller/db_conn_ctlr.php");

class dom_leader_model {
    // Variables
    private $ldr1_rec;  // leader 1 record
    private $ldr1_role; // leader 1 role
    private $ldr2_rec;  // leader 2 record
    private $ldr2_role; // leader 2 role
    private $ldr3_rec;  // leader 3 record
    private $ldr3_role; // leader 3 role
    private $ldr4_rec;  // leader 3 record
    private $ldr4_role; // leader 3 role    
    private $trail_no;  // TRAIL # of plan

    // constructor
    public function __construct() {
        $trail_no = $this->getTrailNumber();
        $this->getOldLeaderInfo($trail_no);
    }

    // get TRAIL number
    public function getTrailNumber() {
        return $this->trail_no = $_SESSION['trail_no'];
    }

    // get leader info from database and put it on the form
    public function getOldLeaderInfo($trail_no) {

        $fiscal_yr = substr($trail_no, 0, 2);
        $trip_id = substr ($trail_no, 2, 3);
        $section_id = substr($trail_no, 5, 1);

        $query20 = "
            SELECT * FROM leader_info
            WHERE fiscal_yr = '$fiscal_yr' AND trip_id = '$trip_id'
                AND section_id = '$section_id'";

        $connect = db_connection();    
        $result20 = mysqli_query($connect, $query20) or die("Query20 failed: 
             " . mysqli_error($connect));
        $connect->close();

        if($result20) {
            $row = $result20->fetch_array(MYSQLI_ASSOC);
            $this->ldr1_rec = $row['leader1_record'];         
            $this->ldr1_role = $row['leader1_role'];
            $this->ldr2_rec = $row['leader2_record'];
            $this->ldr2_role = $row['leader2_role']; 
            $this->ldr3_rec = $row['leader3_record'];
            $this->ldr3_role = $row['leader3_role'];
            $this->ldr4_rec = $row['leader4_record'];
            $this->ldr4_role = $row['leader4_role'];            
            return 1;
        } else {
            return 0;
        }        
    }

[from controller]
<?php
require_once '../model/dom_leader_model.php';
require_once '../utilities/check_info_saved.php';
$session_start = session_start();

$leaderInfoModel = new dom_leader_model();
$trail_no = $leaderInfoModel->getTrailNumber();


if (isset($_POST['save']) || isset($_POST['next'])) {   

[from view]
<p>Leader 1 Information:</p>
<?php
    if (empty($ldr1_rec)) {
        $ldr1_switch = 'Select Leader';
        echo '<select name="ldr1_rec"><option selected 
            value="">',$ldr1_switch,'</option>',
            require("../../lists/leader_list.txt"),'</select>';
    } else {
        $ldr1_switch = leader_switch($ldr1_rec, 'dom');         
        echo '<select name="ldr1_rec"><option selected 
            value="',$ldr1_rec,'">',$ldr1_switch,'</option>',
            require("../../lists/leader_list.txt"),'</select>'; 
    }

    if (empty($ldr1_role)) {
        $role1 = "Select Role";
        echo '<select name="ldr1_role"><option selected 
            value="">',$role1,'</option>',
            require("../../lists/staff_role_list.txt"),'</select>';
    } else {    
        $role1 = role_switch($ldr1_role);
        echo '<select name="ldr1_role"><option selected 
            value="',$ldr1_role,'">',$role1,'</option>',
            require("../../lists/staff_role_list.txt"), '</select>&nbsp;';
     }
?><p><hr>
正如我所说,我是兼职的,我相信你们中的许多人都会看到编写代码的更好方法,但我真正想要的是一个答案,为什么从数据库检索到的值在加载时没有到达表单

提前谢谢

John C.

您应该使用selected=selected,而不仅仅是select ie:“,$role1,”

虽然select对于浏览器来说是正确的,但有时可能会被拒绝。几周前,我在PHP中遇到过这种情况,帮助/处理别人的代码


selected=selected对所有doctype也有效。

没有读取所有代码,但您是否只是尝试selected=selected而不是select->'、$role1'?我的错误->读取“selected”而不是“select”`谢谢,但不是这样;问题的一部分是在模型中,我希望视图看到的值被声明为私有的,因此我要么将它们声明为公共的,要么为每个值创建一个public get方法。约翰C。