我有一个包含12列的MySQL数据库。我使用名为“activity”的列和名为“logdate”的列(这是一个日期时间)的不同值创建了一个下拉列表。
这样地。。

<form action="define_activity" id="activityform" method="post">   <!-- Form to select an activity -->
        <select name="activities" id="select1">      <!-- List of activities -->
            <option value="" selected="">Select One</option>
            <option value="NewActivity" id="newactivity"       onclick="newactivity();">New Activity</option>
<?php
foreach($db_found->query("SELECT DISTINCT activity, logdate FROM NetLog ORDER BY activity") as $act) {
echo ("<option value='$act[activity]'>$act[activity] of $act[logdate]</option>");
}
?>
</select>
<input type="submit" name = "Submit" />
</form>

这一切都很好。我要做的是使用selected选项的结果对同一数据库执行另一个查询,该数据库提取与所选活动和logdate值关联的所有记录。我知道如何编写查询,但不知道如何查找和使用选定的值。
有人能告诉我如何从
提前谢谢你的考虑。

最佳答案

我对你的代码做了一些修改,我没有测试它,但我认为这会帮助你:

<?php

//Returns an associative array with the query result:
    function select($yourSQLQuery){
        //Array with result:
        $result = array();

        //Database conection
        $db = new PDO($dsn,$username,$password);

        $stmt = $db->query($yourSQLQuery);

        //This going to save an array with your data:
        $result = $stmt->fetchAll(PDO::FETCH_NUM);

        $db = null;

        return $result;
    }

    //*********************************************************************************************
    //Do here your query:
    $result = select("SELECT DISTINCT activity, logdate FROM NetLog ORDER BY activity");
    //*********************************************************************************************


    //Form handler:
    if($_SERVER[REQUEST_METHOD] == "POST"){
        //If the form was submited:

        //Get   selected activity
        if ( isset($_POST['activities']) ) {

    /*Instead of sending your activity you can send the number of the submitted record in $records, then extract activity and logdate and make your query:*/
            $rowNumber = $_POST['activities'];

            //Get your log date:
            $act = $result[$rowNumber]; //if doesn't work try '$rowNumber'
            $activity = $act['activity'];
            $logdate = $act['logdate'];

            //Pull records asocciated with submitted activity:
            $sql = "SELECT * FROM putHereYourTable WHERE activity = '$activity' AND logdate='$logdate'";
            $records = select($sql);

            //Pulled activities are now in $records

            //do something with the records that you want. e.g.:
            print_r($records);


        }
    }
?>

<!-- Your HTML: -->
<form action="define_activity" id="activityform" method="post">   <!-- Form to select an activity -->
        <select name="activities" id="select1">      <!-- List of activities -->
            <option value="" selected="">Select One</option>
            <option value="NewActivity" id="newactivity"       onclick="newactivity();">New Activity</option>
                <?php
                    foreach($result as $key => $act) {
                        //Send the number of register instead of $act[activity]:
                        echo ("<option value='$key'>$act[activity] of $act[logdate]</option>");
                    }
                ?>
            </select>
            <input type="submit" name = "Submit" />
</form>

关于php - 将select子句的结果用于MySQL的where子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30448400/

10-11 20:01
查看更多