0

「Type」「Compatible」「StockLevel」「Cost」の4列のデータベースを作成中です。

タイプは「バッテリー」で、互換性のあるフィールドはこのバッテリーが動作するデバイスのIDです。たとえば、「1、4、9」などです。

PHPで行う必要があるのは、「Compatible」行に$_POST[compatible]を含むすべての「Types」をデータベースに照会することです。もちろん、これはIF X = Xほど単純ではありません。これは、最初に[互換性]フィールドを(php)展開する必要があるためです。

頭が痛くて、まだ解決策を見つけようとしていますが、コードを貼り付けて、誰かが助けてくれることを願っています。


IF ($_POST["printer"]) {

    $printerinfo_query = mysql_query("SELECT * FROM printers WHERE ID LIKE '$_POST[printer]'");
    $printerinfo_result = mysql_fetch_assoc($printerinfo_query);

    echo ("<H5>".$printerinfo_result["Model"]."</H5>");
    echo "".$printerinfo_result["Description"]."";

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    $cartridge_query = mysql_query("SELECT * FROM cartridges");
    $cartridge_result = mysql_fetch_assoc($cartridge_query);


    $explode = $cartridge_result["Compatible"];
    $explodedata = explode(", ", $explode);
    $explode_count = count($explodedata);
    $explode_count_dec = count($explodedata);
    $explode_number = "0"; // Re-creates $explodedata[0], [1], [2] etc.. using $explodedata[$explode_number] in the loop!

    echo ("<P>Select a cartridge type &mdash;</P>");

    echo "<form action='index.php?page=printeradv' method='POST'>";


      while ($explode_count_dec > "0"):

        $while_query = mysql_query("SELECT * FROM cartridges WHERE ID LIKE '$explodedata[$explode_number]'");
        $while_result = mysql_fetch_assoc($while_query);

        echo "<input type='radio' value='".$explodedata[$explode_number]."' name='cartridge' />".$while_result["Type"]." <BR /> ";

        ++$explode_number;
        --$explode_count_dec;
      endwhile;

    echo "<input type='submit' value='Select model' />";
    echo "</form>";

}
4

2 に答える 2

3

使用する必要はありませexplode()ん。実際にワイルド文字を使用していないのに、なぜLIKEを使用しているのかわかりません。

$cartridge_result['Compatible']次のように、で直接検索できます。

... WHERE ID IN('.$cartridge_result['Compatible'].')'
于 2012-05-14T13:42:39.640 に答える
1

バッテリーをデバイスに関連付けるには、追加の関係テーブルを追加する必要があると思います。これは非常に単純な表です。

関係 ID | バッテリー ID | デバイスID

これにより、簡単なクエリを実行して、互換性のあるすべてのバッテリーまたはデバイスを取得できます。これは、このような多対多の関係を管理するための標準的な方法です。その結果、単一のクエリを実行して互換性を判断でき、その後の PHP での処理は最小限に抑えられます。

于 2012-05-14T13:51:28.067 に答える