将所选下拉列表值存储在PHP中的变量中

将所选下拉列表值存储在PHP中的变量中,php,html,drop-down-menu,Php,Html,Drop Down Menu,我访问了一个MySql数据库,从相关表中检索了值,并使用以下命令将它们放入下拉列表中: $material_query= "SELECT material FROM materials"; $material_query_run = mysql_query($material_query); echo "<select>"; while ($material_query_array= mysql_fetch_array($material_query

我访问了一个MySql数据库,从相关表中检索了值,并使用以下命令将它们放入下拉列表中:

$material_query=          "SELECT material FROM materials";
$material_query_run =     mysql_query($material_query);
echo "<select>";
while   ($material_query_array=   mysql_fetch_array($material_query_run) ){
        echo "<option value='' >".$material_query_array['material']."</option>";                        
}echo "</select>";
$material\u query=“从物料中选择物料”;
$material\u query\u run=mysql\u query($material\u query);
回声“;
而($material\u query\u array=mysql\u fetch\u array($material\u query\u run)){
回显“$material\u query\u数组['material']”;
}回声“;

现在如何将下拉列表中的选定值存储在变量中?我认为我需要使用POST,但我不知道如何使用。

您需要类似以下内容:

<form action="post.php" method="post" name="select_form">
    <?php
       $material_query="SELECT material FROM materials";
       $material_query_run =mysql_query($material_query);
       echo "<select name=\"selectbox\">";
       while   ($material_query_array=   mysql_fetch_array($material_query_run) ){
         echo "<option value='".$material_query_array['material']."'>".$material_query_array['material']."</option>";                        
       }
       echo "</select>";
    ?>
    <input type="submit" value="Submit" name="submit">
</form>

另一方面,请使用PDO()或MySQLI(),因为MySql界面已经过时。

当用户点击提交按钮时,需要使用GET或POST将数据发送到PHP处理器。在处理器中,您可以像访问任何其他表单元素一样访问SELECT字段值

<form action="processor.php" method="POST">
// FORM ELEMENTS HERE
<input type="submit" value="Go!">
</form>

//这里的表单元素
在处理器中:

<?php
$selectbox = $_POST['selectbox'];

因此select元素需要位于表单中,然后可以提交表单,然后可以处理提交的数据(通过post或get)

您的选择框需要有一个name属性,以便可以识别它。您还需要在选项元素的value属性中有一个值,因为这是发送的数据

例如,在您的页面(例如page.php)上,您的当前代码包含在html表单标记中:

// The Form
<form action="page.php" method="post">
    <?php
    $material_query = "SELECT material FROM materials";
    $material_query_run = mysql_query( $material_query );
    echo "<select name='mySelect'>";
    while   ( $material_query_array = mysql_fetch_array( $material_query_run ) ) {
        echo "<option value='".$material_query_array['material']."' >".$material_query_array['material']."</option>";                        
    }
    echo "</select>";
    ?>
    <input type="submit" name="submit"/>
</form>

//Process the form
//check if form is submitted
if ( isset( $_POST['submit'] ) ) {
    //is submitted
    $variable = $_POST['mySelect'];
    //DO STUFF WITH DATA
}
//表单
//处理表格
//检查表格是否已提交
如果(isset($_POST['submit'])){
//提交
$variable=$_POST['mySelect'];
//处理数据
}
因此,我在这里做了以下工作:

  • 添加了表单标记(请参见:)
  • 将“名称”属性添加到“选择”标记中
  • 将与“选择”显示的值相同的值添加到选项标记的“值”属性中
  • 添加了在提交表单时处理表单的代码(再次参见上面的链接)

html表单是常用的方法您的意思是从视图中获取选定值吗?您应该使用JavaScript(即jQuery框架)从DOM获取所选值,或者如果您想在发送表单后获取select的值,请使用
$\u POST
获取该值。感谢您提供的非常详细和有用的回复!有没有办法不用“提交”按钮就可以做到这一点?当我自动更改下拉列表选择时,变量会更新,无需提交。没问题。不幸的是,在加载页面后,如果不向服务器发送另一个请求,就无法更改PHP变量(因为PHP是在服务器端执行的)。但是,您可以使用如上所述的常规方法发送数据,也可以使用AJAX,这涉及到运行其他PHP脚本,而无需在后台使用JavaScript重新加载页面来发送请求。你肯定应该阅读AJAX,因为它可以帮助解决你的问题。
// The Form
<form action="page.php" method="post">
    <?php
    $material_query = "SELECT material FROM materials";
    $material_query_run = mysql_query( $material_query );
    echo "<select name='mySelect'>";
    while   ( $material_query_array = mysql_fetch_array( $material_query_run ) ) {
        echo "<option value='".$material_query_array['material']."' >".$material_query_array['material']."</option>";                        
    }
    echo "</select>";
    ?>
    <input type="submit" name="submit"/>
</form>

//Process the form
//check if form is submitted
if ( isset( $_POST['submit'] ) ) {
    //is submitted
    $variable = $_POST['mySelect'];
    //DO STUFF WITH DATA
}