2012-06-18 33 views
0

我在數據庫中有兩個表,一個叫productBrands,另一個叫products根據所選值回顯不同結果php

現在我想根據我選擇的品牌來回應產品的結果。

我得到了基本的工作,但我不知道如何測試選擇什麼品牌。

 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

所以,爲了理解您希望用戶如何與此進行互動......您希望顯示其中包含品牌的下拉菜單。用戶選擇一個品牌,然後該品牌的產品應該在下面填充? – dodexahedron

+0

是很好的十二面體 – oBo

回答

1

嘗試修改此:

$brandsQuery = "SELECT * FROM productBrands"; 

這樣:

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

這將插入你問用戶的品牌,並不會產生所有的結果,涉及到的不僅是產品品牌指定。

注意:以上假設您從評論中提到的保管箱獲得了$brand的值。

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/>'; 
0

有處理這個問題的三種常用方法。

1)將其寫爲表單並回傳選定的值。請記住,PHP僅在服務器端,所以服務器不知道用戶在頁面上做了什麼。

2)選擇品牌時,使用jQuery或其他方式對服務器上的另一個操作執行AJAX回調。此回調的結果是您要爲頁面的其餘部分填寫的信息。

3)如果數據集相對較小,可以將所有數據加載到頁面中,作爲一個javascript數組,然後在頁面上處理javascript中的其餘部分。

選項#2可能是你最好的選擇。 但是,選項#1對於初學者來說可能更容易實現。 如果數據集相對較小,則只能使用選項#3。