0


検索フォームからの入力値に基づいて MYSQL データベースをクエリする PHP ドキュメントがあります。アプリケーション全体をよりユーザーフレンドリーにする機能をもう 1 つ追加するのに苦労していることを除いて、すべてが完全に機能しています。

データベース内のテーブルには、基本的に、さまざまな社交クラブに関する情報が格納されています。場所、名前、booking_price、alcohol_permitted に関するデータがあります。私が助けを必要としているビットは、alcohol_permitted に関連付けられています。データベースには、1 または 2 が格納されます。2 はアルコールが許可されていることを意味し、1 は許可されていないことを意味します。

現在、私のフォームは次のようになっています。

<form>
    <label for="alcohol_check">Search clubs where alcohol permitted?</label>
       <input type="radio" id="alcohol_check1" value="1" /><label for="radio1">No</label>
       <input type="radio" id="alcohol_check2" value="2" /><label for="radio2">Yes</label>
       <input type="radio" id="alcohol_check3" value="???" /><label for="radio3">Show both</label>

    <label for="club_name">Enter social club name:</label>
       <input type="text" id="club_name" name="club_name"/>
</form>



私のPHPは次のよ​​うになります。

$user_alcohol_permitted_selection = $_POST['alcohol_check']; //Value sent using jquery .load()
$user_social_club_name_input = $_POST['name']; //Value sent using jquery .load()

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input
        AND
        WHERE alcohol_permitted = $user_alcohol_permitted_selection";

問題は、現時点では、クエリがアルコールを提供するか提供しない社交クラブのみを取得することです。現在、alcohol_permitted フォームから渡される値は 1 または 2 であるため、ユーザーがオプション「両方」を選択した場合に、アルコールを提供する社交クラブとアルコールを提供しないクラブを取得するには、クエリをどうすればよいでしょうか? 私はそれを理解することはできません!クエリに if ステートメントは必要ですか?

これをチェックしてくれてありがとう、私がこれをうまく説明していなかったらごめんなさい。

4

2 に答える 2

1

これはうまくいくはずです。

$user_alcohol_permitted_selection = $_POST['alcohol_check']; //Value sent using jquery .load()
$user_social_club_name_input = $_POST['name']; //Value sent using jquery .load()

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input";

if ($user_alcohol_permitted_selection == "???")
{
     $query.= "AND WHERE alcohol_permitted = 1 OR alcohol_permitted = 2";
} else {
     $query.= "AND WHERE alcohol_permitted = $user_alcohol_permitted_selection";
}

さらに、列alcohol_permittedに値 1 または 2 のみが含まれている場合は、彼の回答で提案されている realmitchconnors のように、列の型を bool に変更することをお勧めします。

次に、条件ステートメントを次のように切り詰めることができます。

$query="SELECT * FROM social_clubs 
        WHERE name = $user_social_club_name_input";    

if ($user_alcohol_permitted_selection != "???")
{
     $query.= "AND WHERE alcohol_permitted = $user_alcohol_permitted_selection";
}

注意してください!

于 2012-04-26T21:57:10.237 に答える
0

まず、alchohol_permitted カラムのデータ型を bool (MySQL では bit(1)) に変更してください。読んでるだけで寒気がする…

さて、あなたの質問に進みます。このwhereステートメントを試してください:

WHERE $user_alcohol_permitted_selection IS NULL 
OR alcohol_permitted = $user_alcohol_permitted_selection
于 2012-04-26T21:54:16.580 に答える