簡體   English   中英

根據選擇的php值回顯不同的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM