【问题标题】:undefined variable when displaying data显示数据时未定义的变量
【发布时间】:2013-02-01 19:11:46
【问题描述】:

这是一个演示DEMO

在演示中,选择一个评估,提交它,然后当学生和问题下拉菜单出现时,单击另一个提交按钮。您将看到一个未定义的变量出现。我正在尝试做的是从Assessment 下拉菜单中回显评估名称、数据和时间。但这怎么能做到呢?

以下是相关代码:

   function PickSession() 
        {
            //ASSESSMENT DROP DOWN MENU:

            //Get data from database
            $sessionquery = "
                SELECT s.SessionId, SessionName, SessionDate, SessionTime, SessionActive, Complete
                FROM Session s
                INNER JOIN Session_Complete sc ON sc.SessionId = s.SessionId
                WHERE
                (Complete = ?)
                ORDER BY SessionName 
                ";
            $complete = 1;

            global $mysqli;
            $sessionqrystmt=$mysqli->prepare($sessionquery);
            // You only need to call bind_param once
            $sessionqrystmt->bind_param("i",$complete);//it doesn't recognse $userid
            // get result and assign variables (prefix with db)
            $sessionqrystmt->execute(); 
            $sessionqrystmt->bind_result($dbSessionId,$dbSessionName,$dbSessionDate,$dbSessionTime, $dbSessionActive, $dbComplete);
            $sessionqrystmt->store_result();

            ?>

            <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> 
                   <p>
                <strong>Asessments:</strong>
                <select name="session" id="sessionsDrop">
                    <option value="">Please Select</option>
                    <?php
                        while ( $sessionqrystmt->fetch() ) {
                            $sv = $dbSessionId;
                            if(isset($_POST["session"]) && $sv == $_POST["session"]) 
                                echo "<option selected='selected' value='$sv'>" . $dbSessionName . " - " . date('d-m-Y',strtotime($dbSessionDate)) . " - " . date('H:i',strtotime($dbSessionTime)) . "</option>" . PHP_EOL;
                            else
                                echo "<option value='$sv'>" . $dbSessionName . " - " . date('d-m-Y',strtotime($dbSessionDate)) . " - " . date('H:i',strtotime($dbSessionTime)) . "</option>" . PHP_EOL;
                        }
                    ?>
                </select>
                </p>
                <input id="sessionSubmit" type="submit" value="Submit Assessments" name="sessionSubmit" />
            </form>
        <?php
        }

    --------------------------------------------------------------------

        function SessionIsSubmitted()
        {
                if(isset($_POST["session"]) && empty($_POST["session"])) // We picked the "Please select" option
                { ?>

                        Please Select an Assessment

                <?php 
                    return false;
                }
            else if(!isset($_POST["session"]))
            {
                return false;
            }
            else // All is ok
            {
                return true;
            }
            return false;

        }

    --------------------------------------------------------------------

        function ShowAssessment()
        {   

        //STUDENT AND QUESTION DROP DOWN MENU GO HERE
        //button - name='answerSubmit' goes here

        }

    --------------------------------------------------------------------

        function StudentAnswersIsSubmitted()
        {

        if(!isset($_POST["answerSubmit"]))
            {
                return false;
            }
            else // All is ok
            {
                return true;
            }
            return false;

        }

    --------------------------------------------------------------------

        function StudentAnswers()
        {

        echo $dbSessionName . " - " . $dbSessionDate . " " . $dbSessionTime;

        }

        ?>

Below is functions structure:

    <?php


            PickSession(); // Show the thing to pick session
            if(SessionIsSubmitted()) // When session is picked
            {
              ShowAssessment(); // Show students and questions information
              if(StudentAnswersIsSubmitted()) // Student Answers button is submitted
                {
                  StudentAnswers();
                }

            }



    ?>

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    您不能通过放置数组变量$dbSessionName 来打印一个选定的元素。所有评估都存储在此数组中,您希望通过放置数组变量来打印选定的评估。尝试仅打印已选择的数组元素。 这样做:

    <select name="session[]" id="sessionsDrop">
    if (isset($_POST['Submit']) == 1) {
    
        $session_name = $_POST['session'];
            echo $session;
        }
    

    【讨论】:

    • 我是否必须编写另一个查询才能显示所选会话的名称、日期和时间?我已经这样做了$selectedSession = $_POST['session']; ... echo $selectedSession; 这与评估下拉菜单中的值相呼应,但我想显示所选评估的内容、名称、日期、时间
    • 是的,你必须这样做。否则你可以做一件事把下拉的内容作为价值。
    猜你喜欢
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多