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 回答