我在数据库中有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/>';
这会打印出正确的值,但不会选择先选择的值。
答案 0 :(得分:1)
尝试更改此内容:
$brandsQuery = "SELECT * FROM productBrands";
到此:
$brandsQuery = sprintf("SELECT * FROM productBrands WHERE brandname = '%s'",
mysql_real_escape_string($brand));
这将插入您询问用户的品牌,并且不会生成所有结果,只会插入与指定品牌相关的产品。
注意:以上假设您从评论中提到的保管箱中获得了$brand
值。
答案 1 :(得分: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/>';
答案 2 :(得分:0)
有三种常见方法可以解决这个问题。
1)将其写为表格并回发所选值。请记住,PHP仅是服务器端,因此服务器不知道用户在页面上执行的操作。
2)选择品牌时,使用jQuery或其他一些方法对服务器上的其他操作执行AJAX回调。此回调的结果是您要为页面的其余部分填写的信息。
3)如果数据集相对较小,您可以将所有数据作为javascript数组加载到页面中,然后在页面上的javascript中处理其余数据。
选项#2可能是你最好的选择。 但是,选项#1对于初学者来说可能更容易实现。 如果数据集相对较小,则仅使用选项#3。