0

入力内容に基づいてクエリが結果を検索できるように、フォーム データを SELECT クエリに投稿することはできますか?

たとえば、次の 3 つのフィールドがあります。
マーケティング契約番号: _ __ _ __
会社 ID: _ __ _ __ _ _
開始日: _ __ _ __ _ _

マーケティング契約番号がわからず、マーケティング契約番号ではなく会社 ID で検索したいとします。または、特定の日付 (または日付の範囲) に開始されたプロモーションを見つけたい場合は、開始日を入力するだけで、他の 2 つの日付には何も入力しません。

現在、私のクエリは次のとおりです。

$query = sprintf("SELECT * FROM Items, Promotions, Vendor_Prices, Vendors, Sales_Accounts
WHERE Items.itemid = Promotions.itemid AND
Vendors.vendorid = Promotions.vendorid AND
Vendor_Prices.vendorid = Vendors.vendorid AND
Vendor_Prices.itemid = Items.itemid AND
promoid = '$man'");

$man はマーケティング契約番号の投稿情報です。これが少し混乱している場合は申し訳ありませんが、必要に応じて明確にすることができます。


編集:
私はそれを理解しました。WHERE フィールドのクエリを変更して、「=」ではなく OR と LIKE を使用するようにしました。

promoid LIKE '$man' OR Vendors.vendorid LIKE '$cid' OR startdate = '$pstart'
4

1 に答える 1

0

私はあなたの質問を誤解したかもしれません。ユーザーがフォームに入力する情報と入力しない情報に基づいてクエリを実行する場合は、if ロジックを使用できます。

if ($_POST["man"] != "") {
    $query += sprintf(" AND promoId = '$man'", $_POST["man"]);
}
if ($_POST["companyId"] != "") {
    $query += sprintf(" AND companyId = '$companyId'", $_POST["companyId"]);
}
if ($_POST["startDate"] != "") {
    $query += sprintf(" AND startDate= '$startDate'", $_POST["startDate"]);
}
于 2013-10-25T23:12:58.523 に答える