0

いくつかのコンテキストを示すために、次のドロップダウンは、データベースに保存されている動物の現在のプロファイルの説明を提供するフォーム内にあります。つまり、このポニーは背が高く、この性別で、誰かが所有しているなどです。フォームの目的はこれらの現在の値を編集します。自由に上書きできるさまざまなオプションがあり、ドロップダウンメニューからのオプションに限定して選択したいものもあります。

以下は、私が Gender フィールドに使用している現在のコードです。これは機能しますが、適切な方法ではありません。現在の状態を照会し、現在の状態をデフォルトのオプションとして指定し、現在の状態を保存し、保存されている現在の状態と等しくない他の使用可能な状態を照会し、残りの状態をオプションとして与えるメソッドにもっと興味があります。フォームの他のすべてのドロップダウンに最もよく適応できるのはその方法です。

プロファイル tbl と prm_breedgender tbl の 2 つのテーブルが参照されます。各性別には ID が与えられ、各プロファイルには性別を示す対応する ID が与えられます (男性 = 1、女性 = 2 など)。$profile 変数は、現在見ているプロファイルを示す変数です。

<label for="profile-gender">Gender / Type:</label>
    <select name="profile-gender">
        <?php
            $genderresult = mysql_query("SELECT prm_breedgender.BreedGender
                            FROM profiles, prm_breedgender
                            WHERE ProfileID = $profile
                            AND prm_breedgender.BreedGenderID = profiles.ProfileGenderID");
            $row = mysql_fetch_array($genderresult);
            echo '<option value="' . $row['BreedGenderID'] . '">' . $row[BreedGender] . '</option>';

            $exgenderresult = mysql_query("SELECT prm_breedgender.BreedGender
                            FROM profiles, prm_breedgender
                            WHERE ProfileID = $profile
                            AND prm_breedgender.BreedGenderID != profiles.ProfileGenderID");
            while ($row = mysql_fetch_array($exgenderresult)) {
            echo '<option value="' . $row['BreedGenderID'] . '">' . $row[BreedGender] . '</option>';
            }
        ?>
    </select>

どんな助けでも大歓迎です。私はその経験がすべてではないので(明らかに!)、付随する説明は素晴らしいでしょう。

4

1 に答える 1

0

計算された「order by」値を使用して、単一のクエリに組み合わせることができます。

SELECT ...
FROM ...
WHERE ...
ORDER BY (prm_breedgender.BreedGenderID = profiles.ProfileGenderID) DESC

order by 句は、true (最初にあるはずのレコードにいる) または false (他のレコード) のいずれかに評価されます。これは、並べ替え可能な値 1/0 にケース化され、降順で実行されます。 、真の値 (1) が最初に出てきます。

于 2011-05-12T17:03:02.847 に答える