当用户没有做出选择时,将结果发布在 mysql 来自表单 ($_GET) 的 WHERE 语句中
Posting result in mysql WHERE statement from form ($_GET) when no selection is made by a user
抱歉,如果之前有人问过这个问题,我搜索过但找不到合适的答案。对此可能有一个简单的答案,但我很困惑,希望有人能提供一个快速的答案。我的网站上有一个表单,用户可以通过多种方式过滤 数据。表格中的一个 filtering 选项是 'intensity'(低、中、高)。我在 mysql WHERE 语句中将 $_GET 变量用于 post。选择强度选项时它工作正常,但是当用户不选择选项时我没有结果输出。我可以在表单中使用什么作为最终输出 WHERE 语句中所有强度的值。
下面是代码片段...
<form action="workouts.php" method="GET" style="margin-top:5px">
<small>intensity</small>
<select id="intensity" name="intensity">
<option value="" selected="selected"></option>
<option value="low">Low</option>
<option value="medium">Medium</option>
<option value="high">High</option>
<option value="auto">Auto</option>
</select>
<small> <input type="submit" value="go" style="font-size:12px"/></small>
</form>
<?php $intensity = $_GET['intensity']; ?>
这是我在...中调用 $intensity 的 WHERE 语句...
SELECT * 从数据中 complete
= '1' 和 intensity
= '$intensity' 按 date
DESC
排序
这通常可以通过在您的查询中使用 or 来解决:
SELECT * FROM data
WHERE complete = '1'
AND ('' = '$intensity' OR intensity = '$intensity')
ORDER by date DESC
因此,如果 intensity 为空,第一个将匹配 '' = '' 并且所有行都将匹配。
如果强度为 'low',第一部分将不匹配,但第二部分将在强度设置为低的所有行上匹配。
抱歉,如果之前有人问过这个问题,我搜索过但找不到合适的答案。对此可能有一个简单的答案,但我很困惑,希望有人能提供一个快速的答案。我的网站上有一个表单,用户可以通过多种方式过滤 数据。表格中的一个 filtering 选项是 'intensity'(低、中、高)。我在 mysql WHERE 语句中将 $_GET 变量用于 post。选择强度选项时它工作正常,但是当用户不选择选项时我没有结果输出。我可以在表单中使用什么作为最终输出 WHERE 语句中所有强度的值。
下面是代码片段...
<form action="workouts.php" method="GET" style="margin-top:5px">
<small>intensity</small>
<select id="intensity" name="intensity">
<option value="" selected="selected"></option>
<option value="low">Low</option>
<option value="medium">Medium</option>
<option value="high">High</option>
<option value="auto">Auto</option>
</select>
<small> <input type="submit" value="go" style="font-size:12px"/></small>
</form>
<?php $intensity = $_GET['intensity']; ?>
这是我在...中调用 $intensity 的 WHERE 语句...
SELECT * 从数据中 complete
= '1' 和 intensity
= '$intensity' 按 date
DESC
这通常可以通过在您的查询中使用 or 来解决:
SELECT * FROM data
WHERE complete = '1'
AND ('' = '$intensity' OR intensity = '$intensity')
ORDER by date DESC
因此,如果 intensity 为空,第一个将匹配 '' = '' 并且所有行都将匹配。 如果强度为 'low',第一部分将不匹配,但第二部分将在强度设置为低的所有行上匹配。