[英]Echo different result depending on the value selected php
我有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/>';
這會打印出正確的值,但不會采用先選擇的值。
嘗試更改此:
$brandsQuery = "SELECT * FROM productBrands";
對此:
$brandsQuery = sprintf("SELECT * FROM productBrands WHERE brandname = '%s'",
mysql_real_escape_string($brand));
這將插入您要求用戶使用的品牌,而不會產生所有結果,僅顯示與指定品牌相關的產品。
注意:以上假設您從注釋中提到的保管箱中獲得了$brand
價值。
假設這是表單的一部分(或提交的某些過濾器),並且您正在使用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/>';
有三種常見的處理方法。
1)將其寫為表格並回發選擇的值。 請記住,PHP僅是服務器端的,因此服務器不知道用戶在頁面上執行的操作。
2)選擇品牌后,使用jQuery或其他方式對服務器上的其他操作執行AJAX回調。 該回調的結果是您要為頁面其余部分填寫的信息。
3)如果數據集相對較小,則可以將所有數據作為javascript數組加載到頁面中,然后使用頁面上的javascript處理其余數據。
選項2可能是您最好的選擇。 但是,對於初學者來說,選項#1可能更容易實現。 如果數據集相對較小,則僅使用選項3。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.