自动jquery重新提交适用于表单中的硬编码值,但不适用于PHP变量

自动jquery重新提交适用于表单中的硬编码值,但不适用于PHP变量,php,jquery,mysql,forms,variables,Php,Jquery,Mysql,Forms,Variables,我用过 <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> 当用户选择通过表单中的选项(在本例中为“材料”)设置限制时,自动重新加载页面。 这对于硬编码选项非常有效,但对于通过PHP从mySQL数据库中提取的选项也不适用。因此: <form id="material" class="floatleft" method="POST" act

我用过

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>

当用户选择通过表单中的选项(在本例中为“材料”)设置限制时,自动重新加载页面。 这对于硬编码选项非常有效,但对于通过PHP从mySQL数据库中提取的选项也不适用。因此:

<form id="material" class="floatleft" method="POST" action="detail.php?material=">
<select name="material" id="material" onchange="this.form.submit()">

使用硬编码的“亚麻布”

echo '<option value="linen" ';
if ($material == "linen")
 echo 'selected="selected"';
echo '>Linen</option>';
echo'Linen';
但从PHP查询中检索时,不能使用“linen”

$i = 0;
while ($row_material = mysqli_fetch_array($result_material))
 {
 echo '<option value="'.$material.'" ';
 if ($material == $row_material['material'])
   echo 'selected="selected"';
 echo '>'.$row_material['material'].'</option>';
 $i++;
 }
$i=0;
while($row\u material=mysqli\u fetch\u数组($result\u material))
{
回显'.$row_物料['material'].';
$i++;
}

感谢您的帮助

将此更改为您的代码。我使用了运算符,这将使代码更可读

    $array = array(
        array('material' => 'linen'),
        array('material' => 'test'),
        array('material' => 'test2'),
        array('material' => 'test3'),
    );
    echo '<select>';

    $material = 'test2';
    foreach($array as $row_material)
    {
        $selected = ($material == $row_material['material']) ? 'selected=true' : ''; 
         echo '<option value="'. $row_material['material'] .'" ' .$selected .' >' .  $row_material['material'].'</option>';
         $i++;  
    }
    echo '</select>';
$array=array(
数组(“材质”=>“亚麻布”),
数组('material'=>'test'),
数组('material'=>'test2'),
数组('material'=>'test3'),
);
回声';
$material='test2';
foreach($row\u material形式的数组)
{
$selected=($material==$row_material['material'])?'selected=true':'';
回显'.$row_物料['material'].';
$i++;
}
回声';
关闭最后一个回显中的
,而不是第一个回显:

echo'>.$row_material['material'.'”;

不正确的结束(>)标记输入选项,所选超出(>)您如何尝试访问发布的参数?$material=$\u POST['material'],如果这是您的意思,对不起,关于>的问题。我更改了此选项以使代码更具可读性。。。是我的错。现在解开它。无论如何,这并不能解决问题。对不起,我已经这么做了。我更改了此选项以使代码更具可读性。。。是我的错。我现在做了。无论如何,这并不能解决问题。请尝试调试
$row\u material
变量或查看一些警告(错误日志)。据我所知,没有错误警告。$row_material变量看起来不错,至少它可以打印。这是一个更清晰的网页:trismegistos.org/words/…。页面中间,在结果编号的右侧:“Pottery”是硬编码的,可以工作,Pottery(2)是从PHP中提取的,不工作。这似乎没有改变任何事情,仍然是相同的问题。您可以打印
$material
&&
$row\u material['material']
在while循环中?不确定您的确切意思:这是网页,如果这样更清楚的话:。页面中间,结果编号右侧:“Pottery”是硬编码的,可以工作,Pottery(2)是从PHP中提取的,不工作。@MarkD检查答案,我已经为此制作了一个示例。我先前的回答也有错误。我修好了。试着用这个。现在效果很好,非常感谢!虽然我必须承认我不知道为什么`foreach($result\u material as$row\u material){$selected=($material==$row\u material['material'])?'selected=true':'';echo'.$row\u material['material'].('.$row\u material['frequency']),$i++}对你投了高票,但我的声誉还不足以让这次投票被考虑进去。。。