我想知道你是否可以提供帮助。如果一个字段为空,我无法使用select语句来显示我需要的项目。我的网站上有一个搜索功能,用户以某些标准输入。
Date From - Date Select Field
Date To - Date Select Field
Consultant Name - Drop Down Value is consultant ID and it displays consultants full name
Client Name - Drop down value is client ID and it displays consultants full name
Invoiced - A yes or no answer and the value is either 0 or 1
我有表单代码,如果你需要看到它,但它基本上会在按下按钮后将值发布到页面。这给了我想要的一切:
<?php
$from = $_POST["from"];
$to = $_POST["to"];
$consultant = $_POST["consultant_name"];
$invoiced = $_POST["invoiced"];
$companySearch = $_POST["client_name"];
?>
我有这个SELECT语句提供了我需要的一切,但问题除外:
SELECT a.ID as reportID, a.COMMENCE, a.TASK_ID, a.USER_ID,
a.INVOICED, a.DELETE_WEEK, a.MON_BILL, a.TUE_BILL, a.WED_BILL,
a.THU_BILL, a.FRI_BILL,
b.ID, b.NAME, b.LAST_NAME,
c.VALUE_ID, c.UF_CRM_TASK FROM b_report_week a
INNER JOIN b_user b ON a.USER_ID = b.ID INNER JOIN b_uts_tasks_task c
ON a.TASK_ID = c.VALUE_ID WHERE a.COMMENCE BETWEEN '$from' AND '$to'
AND a.USER_ID = '$consultant' AND a.INVOICED = '$invoiced' AND a.DELETE_WEEK = '0'
如果删除了表单中的客户端下拉选项,则此方法有效。我需要的是(inbetween ** **):
WHERE a.COMMENCE BETWEEN '$from' AND '$to'
AND **(a.USER_ID = '$consultant' OR c.UF_CRM_TASK = '$companySearch') **
AND a.INVOICED = '$invoiced'
AND a.DELETE_WEEK = '0'
因此,如果其中一个顾问或客户名称为空白,它仍将提供所选择的结果。但是,如果单独选择顾问名称或客户名称,则上述查询不会返回任何行。如果选择了顾问和客户名称,我也希望它能够工作。