繁体   English   中英

如何使用下拉框创建一个for循环

[英]how to create a for loop with a drop down box

嗨,我正在尝试创建一组下拉框,这些下拉框将使用您选择的值中的数据数组,然后通过循环运行以将它们发布到屏幕上,而此时我要使用的数据将只是本地,但我想稍后编辑它,以便它将遍历数据库中的数据并将其发布到屏幕上。 我已经看过这个问题的其他问题,只是想知道我将如何为我的代码更改它,我已经看过我在堆栈溢出时看到的这个链接问题,我刚刚遇到了几个问题,我想知道是否有人看到过这个问题在他们看过任何示例之前或之前,我也查看过循环,并且我理解了这个概念

我对您的问题是:

1)我将如何将下拉框中的值发布到php数组中2)然后我将如何对照数据和数组检查值,然后选择正确的值并将其发布到屏幕上。 3)我需要使用第二种语言,例如javascript还是可以在php中完成

我的下拉框代码是

<div id="Content">

    <?php include "select.class.php"; ?>
    <form id="select_form">
        Choose a category:<br />
        <select id="category">
            <?php echo $opt->ShowCategory(); ?>
        </select>
        <br /><br />

        Choose a type:<br />
        <select id="type">
            <option value="%">any...</option>
        </select>
        <br /><br />

        Choose a principle:<br />
        <select id="principle">
            <option value="%">any...</option>
        </select>
        <br /><br />

        <input type="submit" value="confirm" />
    </form>
    <div id="result"></div>

    <!-- end of the Options -->

下面是select.class.php

<?php
    class SelectList
    {
        protected $conn;

            public function __construct()
            {
                $this->DbConnect();
            }

            protected function DbConnect()
            {
                include "db_config.php";
                $this->conn = mysql_connect($host,$user,$password) OR die("Unable to connect to the database");
                mysql_select_db($db,$this->conn) OR die("can not select the database $db");
                return TRUE;
            }

            public function ShowCategory()
            {
                $sql = "SELECT * FROM subject";
                $res = mysql_query($sql,$this->conn);
                $category = '<option value="0">choose...</option>';
                while($row = mysql_fetch_array($res))
                {
                    $category .= '<option value="' . $row['subject_id'] . '">' . $row['description'] . '</option>';
                }
                return $category;
            }

            public function ShowType()
            {
                $sql = "SELECT * FROM section WHERE subject_id=$_POST[id]";
                $res = mysql_query($sql,$this->conn);
                $type = '<option value="0">choose...</option>';
                while($row = mysql_fetch_array($res))
                {
                    $type .= '<option value="' . $row['section_id'] . '">' . $row['description'] . '</option>';
                }
                return $type;
            }

             public function ShowPrinciple()
            {
                $sql = "SELECT * FROM principle WHERE section_id=$_POST[id]";
                $res = mysql_query($sql,$this->conn);
                $principle = '<option value="0">choose...</option>';
                while($row = mysql_fetch_array($res))
                {
                    $principle .= '<option value="' . $row['principle_id'] . '">' . $row['description'] . '</option>';
                }
                return $principle;
            }   
    }

    $opt = new SelectList();
?>

1)我如何将下拉框中的值发布到php数组中

在表单标签中添加method =“ POST”。 在PHP中使用$ _POST数组进行引用。 在写入数据库之前,请确保验证并转义数据。

2)然后我将如何对照数据值和数据数组检查值,然后选择正确的值并将其发布到屏幕上。

如果您没有数百万个类别,则最好将它们全部作为JSON数组发送并使用Javascript。 就像是:

<script>
var categories = <?php echo json_encode($opt->ShowCategory()); ?>;
</script>

json_encode可能需要设置一些选项,具体取决于您的字符集。 此处提供更多信息: http : //php.net/manual/zh/function.json-encode.php

每当有人更改下拉框时发出新请求都会使他们发疯,我知道我讨厌这样做。 如果您以前使用过jQuery,这非常容易。 没有它,这并不困难。

3)我需要使用第二种语言,例如javascript还是可以在php中完成

为了您的用户,请使用Javascript。

showCategory()的代码

...
$categories = new array();
$category = '<option value="0">choose...</option>';
while($row = mysql_fetch_array($res))
            {
                $categories[$row['subject_id']] = $row['description'];
            }
$validCategories = $this->getValidCategories() // get the valid categories 
foreach($categories as $index=>$cat){
   // only choose the categories that are valid
   if(array_search($cat,$validCategories) !== FALSE)
       $category.= '<option value="'.$index.'">'.$cat.'</option>'; 

}
return $category;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM