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

时间:2014-02-10 09:20:10

标签: javascript php sql arrays loops

您好我正在尝试创建一组下拉框,它们将使用您选择的值中的数据数组,然后运行循环以在我想要使用的数据时将它们发布到屏幕将只是本地但我想稍后编辑它,以便它将循环我的数据库中的数据并将其发布到屏幕。我已经看过关于这个主题的其他问题,只是想知道如何为我的代码更改它我已经看过这个链接questions on stack overflow that I have looked at我刚刚有几个问题,我想知道是否有人之前已经看过这个或者如果他们我已经看过任何我也看过循环的例子,我理解这个概念

我的问题是:

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();
?>

2 个答案:

答案 0 :(得分:1)

  

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

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

  

2)然后我如何检查数值和数据数组,然后选择哪些是正确的并将它们发布到屏幕上。

如果您没有数百万个类别,最好将它们全部作为JSON数组发送并使用Javascript。类似的东西:

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

json_encode可能需要设置一些选项,取决于你的字符集。更多信息:http://php.net/manual/en/function.json-encode.php

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

  

3)我是否需要使用像javascript这样的第二语言,或者只能在php中使用

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

答案 1 :(得分:0)

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;