0

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

<?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";} 以尝试保留我在提交时选择的值。此上下文中的此代码不起作用。调试后我注意到县值是未定义的。这是 chrome 调试的错误:

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

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

下面是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,请参阅此链接

4

1 回答 1

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 是 selected="selected" 和 checked="checked" 等。

您在上面的代码中缺少您的选择打开我假设它在其他地方创建?

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

那么你上面的 if 语句将可以正常工作,因为 $_POST['country'] 将存在。

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

您是否也在使用自定义数据库类?它看起来像 mysqli 或 pdo,但准备列表看起来不应该是错误的$mysqli->prepare()吗?由于您也使用了准备,因此您应该进行参数绑定而不是将 $_POST['supplier'] 注入准备中,因为目前您的方式使准备变得毫无意义,并且还使您容易受到 sql 注入等的影响.

于 2013-04-19T08:14:49.410 回答