0

mySQL NOOB の質問:

テーブルには列 = AgeGroup があります。次のデータ オプションが入力されます: U40、40-44、45-49、50-54、55-59、60+。

ユーザーが表示したい「性別」と「年齢層」を選択できるフォームがあります。次に、「SELECT」SQL クエリの「WHERE」句を使用します。次の形式で使用します。

FROM 
   #__test1
WHERE
   EventName = '2011EoSummer' AND
   Gender = {$REQUEST:Gender};
   if(isset($_REQUEST['Age'])) AND AgeGroup = {$_REQUEST['Age']}

フォームには、「Overall」を介してすべての年齢を取得するオプションがありますが、AgeGroup 列に「Overall」というデータはありません。全体として、すべての年齢層をデフォルトにする必要がありますが、これが SQL クエリでどのように読み取られるかはわかりません。

例 1 URL: /&Gender=Men&AgeGroup=U40 => 'U40' 'Men' のデータが表示されます

例 2 URL: /&Gender=Men&Age=Overall => すべての年齢データが表示されます

4

1 に答える 1

0

私がこれを正しく読んでいる場合、「全体」を選択したときに、すべての年齢層を返したいですか (どの年齢層にも制限されないように)。

その場合は、SQL ステートメントで AgeGroup 句を削除する必要があります。

<?PHP

$sql = "SELECT * FROM tbl WHERE Gender = {$_REQUEST['gender']}";

if(isset($_REQUEST['age']))
{      
  $sql.= " AND AgeGroup = {$_REQUEST['age']}"
}

?>

これはデフォルトで全体的なものになるので、ロジックを適切に変更したいかもしれません。

また、$_REQUEST は使用するのに最適ではありません。フォームをアクション コレクターとして使用し、代わりに $_POST を投稿して使用するように設定している場合、代わりに $_GET を使用して URL からデータを引き出すことができない場合リクエスト。

編集:読みやすくするために括弧内に追加されました。

于 2012-09-27T13:49:21.653 に答える