0

我在数据库中有 2 个表,一个被调用productBrands,另一个被调用products

现在我想根据我选择的品牌来回应产品的结果。

我掌握了基础知识,但我不确定如何测试选择的品牌。

        echo '
           Brand:<br><select name="brand">';

        $brandsQuery = "SELECT * FROM productBrands";
        $brands  = mysql_query($brandsQuery) or
        die("SQL: $brandsQuery)<br />".mysql_error());

        $brandsNo = mysql_num_rows($brands);
        echo '<option value="" selected>Choose a brand...</option>';
        for ($i = 0; $i < $brandsNo; $i++) {
            $name       = mysql_result($brands, $i, 'name');
            $brandid         = mysql_result($brands, $i, 'id');

            echo '<option value="' . $brandid . '">' . $name . '</option>';
        }

        echo '</select><br/>';


        echo 'Produkt:<br><select name="produkt">';

                   $productsQuery = "SELECT * FROM products";
                   $products  = mysql_query($productsQuery) or
                   die("SQL: $productsQuery)<br />".mysql_error());

                   $productsNo = mysql_num_rows($products);     
                   $brandQuery = "SELECT productBrand from products";                       
                   for ($f = 0; $f < $productsNo; $f++ ) {
                       $productName = mysql_result($products, $f, 'productName');
                       $productId = mysql_result($products, $f, 'productId');

                       echo '<option value="' .$productId .'">' . $productName .'</option>';}
                   echo '</select><br/>';

这会打印出正确的值,但不会考虑首先选择的值。

4

3 回答 3

1

尝试改变这个:

$brandsQuery = "SELECT * FROM productBrands";

对此:

$brandsQuery = sprintf("SELECT * FROM productBrands WHERE brandname = '%s'", 
                                           mysql_real_escape_string($brand));

这将插入您向用户询问的品牌,并且不会产生所有结果,只会插入与指定品牌相关的产品。

注意:以上假设您$brand从评论中提到的保管箱中获得了值。

于 2012-06-18T12:14:54.250 回答
0

假设这是表单的一部分(或提交的某些过滤器)并且您正在使用 POST 提交表单,您必须扩展脚本的第二部分:

echo 'Produkt:<br><select name="produkt">';
$whereBrand = '';
if(isset($_POST['brand']) $where = " WHERE productBrand = '".mysql_real_escape_string($_POST['brand'])."'";
$productsQuery = "SELECT * FROM products{$whereBrand}";
$products  = mysql_query($productsQuery) or
    die("SQL: $productsQuery)<br />".mysql_error());

$productsNo = mysql_num_rows($products); 
for ($f = 0; $f < $productsNo; $f++ ) {
    $productName = mysql_result($products, $f, 'productName');
    $productId = mysql_result($products, $f, 'productId');

    echo '<option value="' .$productId .'">' . $productName .'</option>';
}
echo '</select><br/>';
于 2012-06-18T12:15:46.273 回答
0

有三种常见的方法来处理这个问题。

1)将其写成表格并回发所选值。请记住,PHP 只是服务器端的,因此服务器不知道用户在页面上做了什么。

2) 选择品牌时,使用 jQuery 或其他方式对服务器上的另一个操作执行 AJAX 回调。此回调的结果是您要为页面的其余部分填写的信息。

3)如果数据集比较小,可以将所有数据加载到页面中,作为一个javascript数组,然后在页面上用javascript处理其余的数据。

选项#2 可能是您最好的选择,所有方面。但是,对于初学者来说,选项 #1 可能更容易实施。如果数据集相对较小,则仅使用选项 #3。

于 2012-06-18T12:21:25.893 回答