提交后保留选定的动态下拉列表

时间:2013-04-19 08:01:21

标签: php javascript jquery

以下是填充动态列表的代码。

<?php
if(isSet($_POST['supplier'])) {

include 'db.php';

$stmt = $mysql->prepare("SELECT DISTINCT SupplierBrand FROM plastic WHERE HeadingNo='".$_POST['supplier']."' ORDER BY SupplierBrand");
$stmt->execute();
$stmt->bind_result($supplierBrand);
?>
<option value="All" width="100px">--ALL--</option>
<?php
while ($row = $stmt->fetch()) : ?>

<option value="<?php echo $supplierBrand; if($_POST['county'] == $supplierBrand) {echo "selected";} ?>" width="100px"><?php echo $supplierBrand; ?></option>

<?php endwhile; ?>

<?php } ?>

我添加了代码 if($_POST['county'] == $supplierBrand) {echo "selected";} 尝试保留我选择的值onSubmit。此上下文中的此代码不起作用。调试后我发现县的值是未定义的。 这是chrome调试的错误:

Notice&lt;/b&gt;:  Undefined index: county

如何通过使用jquery获取其在另一页面上的值县以及更多上述php脚本值$_POST['supplier']

以下是html代码:

<div id="county_drop_down">
                        <select id="county" name="county" >
                            <option value="" width="100px">Supplier...</option>
                        </select>
                        </div>
                            <span id="loading_county_drop_down">
                            <img src="css/loader.gif" width="16" height="16" align="absmiddle">&nbsp;Loading...</span>
                            <div id="no_county_drop_down">No lens type/design has been selected.</div>

对于javascript,请参阅此link

1 个答案:

答案 0 :(得分:1)

您的代码中存在大量问题,其中一些问题首先要解决。

value="<?php echo $supplierBrand; if($_POST['county'] == $supplierBrand) {echo "selected";} ?>"

将导致value="(int) selected"无效的HTML应该是value="<?php echo $supplierBrand;?>" <?php echo ($_POST['county'] == $supplierBrand) ? "selected=\"selected\"" : "" ; ?> 请记住选择有效的html =“已选中”并选中=“已选中”等。

你错过了上面代码中的select open我假设它在其他地方创建了吗?

您的国家/地区值正在从另一个页面过帐,因此您需要在本地进行存储并在将其重新发布到自己时通过此页面传回。 我通常使用隐藏字段,所以如果$ _POST ['country']从此页面上的另一个页面传入,我将使用<input type="hidden" name="country" id="country" value="<?php echo $_POST['country'];?>" />这将确保它从上一页接收到的国家/地区并始终使用入站的任何内容重新填充此字段之前的转贴。

然后你的if语句将正常工作,因为$ _POST ['country']将存在。

最后正如已经指出的那样,isSet()应该都是小写的isset()

您是否也在使用自定义数据库类?它看起来像mysqli或pdo,但如果不是$mysqli->prepare(),准备列表看起来不对吗?既然你正在使用准备,你应该做param绑定而不是将$ _POST ['supplier']注入到准备中,因为当你的方式使得准备有点无意义并且还使你容易受到sql注入等