0

データベースには 2 つのテーブルがあり、1 つが呼び出されproductBrands、もう1 つが呼び出されます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 を使用してフォームを送信していると仮定すると、スクリプトの 2 番目の部分を拡張する必要があります。

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

これを処理するには、3 つの一般的な方法があります。

1) これをフォームとして書き込み、選択した値をポストバックします。PHP はサーバー側のみであるため、サーバーはユーザーがページで何を行っているかを認識していないことに注意してください。

2) ブランドが選択されたときに、サーバー上の別のアクションへの AJAX コールバックを実行する jQuery またはその他の手段を使用します。このコールバックの結果は、ページの残りの部分に入力する情報です。

3) データセットが比較的小さい場合は、すべてのデータを JavaScript 配列としてページにロードし、ページ上の JavaScript で残りを処理できます。

オプション #2 はおそらく最善の策です。ただし、オプション #1 は、初心者にとってより簡単に実装できる可能性があります。データ セットが比較的小さい場合は、オプション #3 のみを使用してください。

于 2012-06-18T12:21:25.893 に答える