PHP / MySql多个下拉列表不希望页面源中显示选项值

时间:2013-11-21 20:43:59

标签: php html mysql sql

我想做的是找到一种方法从页面来源“隐藏”选项价值列表。

我已经成功创建了一个包含多个下拉菜单的页面(现在6个,总共将超过15个);数据库查询正在工作,下拉工作正在进行,发布选择和结果在单独的处理页面中可见,但是,HOWEVER; 选项值显示在页面源中。

页面设计(对于此示例) test.php - 包含db connect(将更改它以便稍后将include_once分开),查询,选项值代码和表数据。 index.php - 只包含一个调用test.php的include语句。

在浏览器中运行test.php会暴露查询(我不想要)并加载包含test.php的索引隐藏查询,但会显示我不想拥有的选项。 我到处搜索(也许我没有正确地问这个问题)并试图在一个页面中运行sql并将结果发布到另一个页面,但我无法让它工作。

我想做什么: 在单独的“函数”页面中运行MySQL查询,然后将输出(选择名称)调用到另一个(HTML)页面,并将下拉列表嵌入到表格的单元格中。

问题:

  1. 是否可以在index.php页面中隐藏选项值?
  2. 这是我的设计缺陷,如果是,那么更好的方法是什么?tem
  3. 如何在一个页面中运行查询,然后将该查询的输出调用为下拉到HTML页面?
  4. test.php(缩短示例)

        <!--mo-->
    <td colspan="2"><div align="right"><font face="Arial, Helvetica, sans-serif"> 
    <?php
    $query = "SELECT date_code_mo, date_code_mo_desc FROM tbl_gm_assy_date_code_mo ORDER BY           date_code_mo ASC";
    echo '<select name="date_mo">';
    if ($result = mysqli_query($link, $query)) {
    while ($row = mysqli_fetch_assoc($result)) {
    echo '<option value="' . $row['date_code_mo_desc'] . '">' . $row['date_code_mo'] . '</option>';      
    }
    mysqli_free_result($result);
    }
    echo '</select>';
    ?>
    </font></div></td>
    <!--week-->
    <td colspan="2"><div align="left"><font face="Arial, Helvetica, sans-serif"> 
    <?php
    $query = "SELECT date_code_wk, date_code_wk_desc FROM tbl_gm_assy_date_code_wk ORDER BY     date_code_wk ASC";
    echo '<select name="date_wk">';
    if ($result = mysqli_query($link, $query)) {    
    while ($row = mysqli_fetch_assoc($result)) {
    echo '<option value="' . $row['date_code_wk_desc'] . '">' . $row['date_code_wk'] . '</option>';
    }
    mysqli_free_result($result);
    }
     echo '</select>';
     ?>
    

    index.php source(表定义未显示)

    <select name="date_mo"><option value="Janurary">01</option><option value="Feburary">02</option><option value="March">03</option><option value="April">04</option><option value="May">05</option><option value="June">06</option><option value="July">07</option><option value="August">08</option><option value="September">09</option><option value="October">10</option><option value="November">11</option><option value="December">12</option></select>
    
    <select name="date_wk"><option value="First">A</option><option value="Second">B</option><option value="Third">C</option><option value="Fourth">D</option><option value="Fifth">E</option></select> 
    

    我已经在这里使用了很多可用的示例来实现这一目标,我确信这是一个很小的错过,无论如何,感谢你们所有人!

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题..

1) 我不明白为什么你担心页面源中的选项值,它们只是一个发送到服务器的值。它们被解释并得到它们的意义。您可以将它们更改为您想要的任何内容。只有客户端代码(显示选项标签的位置)对用户可见,服务器端代码对用户不可见。 - &GT;用户可以看到选项标签的值,但不知道你将在服务器端做什么。

2)见1)

3)提交表单时,会将值发送到使用action属性指定的URL:

<form action="evaluate.php"  method="post">
  ...
</form>

evaluate.php的输出将发送给客户端 - &gt;这是用户将看到的下一页。有关形成下拉菜单的语法,请在此处查看: Pre-filling select tags from array

要检索值send,请查看:

$ _ GET ['varname']或$ _POST ['varname']数组。根据表单标记中指定的方法,发送的值将存储在此处。

其中varname =表单元素的名称attirbute。根据元素的类型,提取值或多或少是微不足道的。有大量的教程,很容易找到。

我还建议您查看以下主题: How can I prevent SQL injection in PHP?

答案 1 :(得分:0)

您正在寻找级联下拉菜单,这是在您的情况下管理它的最佳方式。这个问题已在这里得到解答:

How to make a Cascading Drop Down List in PHP using jQuery

它使用了一个基于所选国家/地区选择城市的经典示例,但您可以通过为除最后一个下拉列表之外的所有下拉列表添加.change()函数并添加返回正确的清单。

如果你想查看它,还有一个JQuery插件:

jQuery Cascading Dropdown Plugin