2016-10-28 4 views
1

ラジオ・グループを選択すると、自分のPHPファイルにajaxで送信されたものから選択できます(各グループから選択されたオプションのみが渡されます)。私は$ _POST()が正常にように)それらの変数を、それらの値をつかむPHP変数としますprint_r(でそれらを保存することができます:IF文のPHP変数に格納された文字列としてajaxオブジェクト値を使用

ますprint_r()の結果の例:

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

(ブラウザのページで)私も午前他の2つの変数(配列として格納された他のチェックボックスの値から)をMySQL WHERE句に使用することができます。

今、php変数= "[ラジオグループの2つの値のオプションのうちの1つ]"と次に$ whereclause = "何らかの種類の値"と言う一連のIF文を作成しようとしています。

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"> 

マイ$ _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」という結果になります。

IF文で送信された値を使用できるように、私はajaxの結果に何かする必要がありますか?

すべての援助を歓迎します。

ありがとうございます!

+0

特定のチェックボックスが設定されている場合は、 '$ revenuwWO'だけを設定します。定義されていない変数は常に 'null'値を持つとみなされ、' null == 'anything''はfalseであるため、すべての 'if()'テストが失敗します。有効な唯一の実行パスは、その最後の 'else'節です。 –

+0

ユーザが選択できるラジオボタンは3つのラジオグループで構成されているので、各グループのオプションは常に選択され、ajaxからphpに送られます。私はprint_r()それらの値を私のPHPページからブラウザに渡して、値を正常に見ることができます。 ifステートメントは、一方のラジオが他方のラジオよりも選択されている場合に結果を選択することになっています。私はphp変数に格納されている値を印刷できる理由はよく分かりませんが、if文は同じ変数の値を見ることができません。 – rdimouro

答えて

0

簡単な編集を行った後、コードを正常に実行できました。以前は、自分のラジオ選択グループ名を「revenueTblType []」、「revenueWO []」、「revenueWODate []」として設定していましたが、 。しかし、(愚かな)ラジオ選択グループは、チェックボックスのように名前の配列の区別を必要としません。グループ内のラジオオプションは1つしか選択できないためです。私のajaxは配列に入れずに各値を引き渡すことができ、if文で条件を正常にテストできました。

さらに、別の変更はそれぞれの最後の "else"条件を削除することでしたifステートメント。テスト中に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'"; 
} 
*/ 

は、私は、これはあまりにも他の人に役立ちます願っています!

ありがとうございます。

関連する問題