使用ajax对象值作为字符串存储在IF语句的php变量中


use ajax object value as string stored in php variable for IF statement

我有一个无线电组选择,用户可以从中选择,通过ajax发送到我的php文件,(只有从每个组中选择的选项获得他们的值传递)。我可以$_POST()获取这些值,将它们保存在php变量中然后print_r()成功地获取这些变量,如下所示:

print_r() result ex:(在浏览器页面)

Array ( [0] => Customer ) Array ( [0] => Completed Workorders ) Array ( [0] => All Workorders )

我也能够在MySQL WHERE子句中成功地使用我的其他两个变量(从其他复选框值存储为数组)。

现在,我正在尝试构建一系列IF语句,如果php变量= "[来自无线电组的两个值选项之一]"那么$whereclause = "某种值"

MY HTML CODE:

// first radio group: user must select one or the other.
<label for="revenueCustomer">Customer</label>
<input type="radio" name="revenueTblType[]" id="revenueCustomer" value="Customer">
<label for="revenueCategory">Revenue Category</label>
<input type="radio" name="revenueTblType[]" id="revenueCategory" value="Revenue Category">

// Second radio group: user must select one or the other.
<label for="revenueCompletedWO">Completed Workorders</label>
<input type="radio" name="revenueWO[]" id="revenueCompletedWO" value="Completed Workorders">
<label for="revenueStatusWO">Workorder Status</label>
<input type="radio" name="revenueWO[]" id="revenueStatusWO" value="Workorder Status">

// Third radio group: user must select one or the other.
<label for="revenueAllWO">All Workorders</label>
<input type="radio" name="revenueWODate[]" id="revenueAllWO" value="All Workorders">
<label for="revenueDateRangeWO">Workorder Date Range</label>
<input type="radio" name="revenueWODate[]" id="revenueDateRangeWO" value="Workorder Date Range">

My $_POST() CODE:

//Get Table Type.
if (isset($_POST['revenueTblType'])) {
  $revenueTblType = $_POST['revenueTblType'];
  print_r($revenueTblType);
};
//Get Report Type
if (isset($_POST['revenueWO'])) {
  $revenueWO = $_POST['revenueWO'];
  print_r($revenueWO);
};
//Get date include value.
if (isset($_POST['revenueWODate'])) {
  $revenueWODate = $_POST['revenueWODate'];
  print_r($revenueWODate);
};
//Get date range.
$revenuefromajax=$_POST['revenuefrom'];
$revenuetoajax=$_POST['revenueto'];
$revenuefromstring = strtotime($revenuefromajax);
$revenuetostring = strtotime($revenuetoajax);
$revenuefrom=date("Y-m-d", $revenuefromstring);
$revenueto=date("Y-m-d", $revenuetostring);
//Get selected Status Values.
if (isset($_POST['revenue_checkboxes'])) {
  $revenue_check = $_POST['revenue_checkboxes'];
};

我的IF语句:

if ($revenueTblType == 'Customer') {
        $groupbyclause = "x.company";
        $columnheader = 'Customer';
        $columnname = 'company';
    }
    else if ($revenueTblType == 'Revenue Category') {
        $groupbyclause = "x.revenue";
        $columnheader = 'Revenue Category';
        $columnname = 'revenue';
    }
    else {
        $groupbyclause = "x.revenue";
        $columnheader = 'Revenue Category';
        $columnname = 'revenue';
    }

    if (($revenueWO == 'Completed Workorders') and ($revenueWODate == 'All Workorders')) {
        $whereclause = "x.stagestatus = 'Complete'";
    }
    else if (($revenueWO == 'Completed Workorders') and ($revenueWODate == 'Workorder Date Range')) {
        $whereclause = "(x.stagestatus = 'Complete') AND (x.shippeddate BETWEEN '".$revenuefrom."' AND '".$revenueto."')"; 
    }
    else if ($revenueWO == 'Workorder Status') {
         $whereclause = "x.stagestatus IN (". implode(',', array_map(function($item) {return '"' . $item . '"'; }, $revenue_check)) .")";
    }
    else {
        $whereclause = "x.stagestatus = 'Complete'";
    }

当我运行这段代码时,结果总是"else"结果,即使所选按钮的值成功通过。

我是否必须对ajax结果做一些事情,以便我可以在IF语句中使用发送的值?

欢迎大家帮忙。

谢谢! !

在做了一些简单的编辑之后,我能够成功地执行我的代码。对于那些正在寻找类似问题帮助的人,以下是对我有效的方法:

之前,我有我的无线电选择组名称为"revenueTblType[]","revenueWO[]"answers"revenueWODate[]"。然而,单选组不需要像复选框那样在名称中区分数组,因为只发送一个值(因为组中只能选择一个单选选项)。通过从每个名称中删除"[]",我的ajax能够在不包含在数组中的情况下提供每个值,并且我的if语句能够成功地测试条件。

另外,我必须做的另一个更改是删除每个if语句的最后一个"else"条件。在测试期间,我将看到基于if条件构建的第一个表。但是,一旦程序到达我不需要的else条件,我的表就会改变。删除额外的代码后,显示正确的表。

我代码:

HTML:

// first radio group: user must select one or the other.
<label for="revenueCustomer">Customer</label>
<input type="radio" name="revenueTblType" id="revenueCustomer" value="Customer">
<label for="revenueCategory">Revenue Category</label>
<input type="radio" name="revenueTblType" id="revenueCategory" value="Revenue Category">

// Second radio group: user must select one or the other.
<label for="revenueCompletedWO">Completed Workorders</label>
<input type="radio" name="revenueWO" id="revenueCompletedWO" value="Completed Workorders">
<label for="revenueStatusWO">Workorder Status</label>
<input type="radio" name="revenueWO" id="revenueStatusWO" value="Workorder Status">

// Third radio group: user must select one or the other.
<label for="revenueAllWO">All Workorders</label>
<input type="radio" name="revenueWODate" id="revenueAllWO" value="All Workorders">
<label for="revenueDateRangeWO">Workorder Date Range</label>
<input type="radio" name="revenueWODate" id="revenueDateRangeWO" value="Workorder Date Range">

IF语句:

if ($revenueTblType == 'Customer') {
    $groupbyclause = "x.company";
    $columnheader = 'Customer';
    $columnname = 'company';
}
else if ($revenueTblType == 'Revenue Category') {
    $groupbyclause = "x.revenue";
    $columnheader = 'Revenue Category';
    $columnname = 'revenue';
}
/* Removed this section of code...
else {
    $groupbyclause = "x.revenue";
    $columnheader = 'Revenue Category';
    $columnname = 'revenue';
}
*/
if (($revenueWO == 'Completed Workorders') and ($revenueWODate == 'All Workorders')) {
    $whereclause = "x.stagestatus = 'Complete'";
}
else if (($revenueWO == 'Completed Workorders') and ($revenueWODate == 'Workorder Date Range')) {
    $whereclause = "(x.stagestatus = 'Complete') AND (x.shippeddate BETWEEN '".$revenuefrom."' AND '".$revenueto."')"; 
}
else if ($revenueWO == 'Workorder Status') {
     $whereclause = "x.stagestatus IN (". implode(',', array_map(function($item) {return '"' . $item . '"'; }, $revenue_check)) .")";
}
/* Removed this section of code...
else {
    $whereclause = "x.stagestatus = 'Complete'";
}
*/

我希望这对其他人也有帮助!

谢谢。