2016-05-23 7 views
0

私は、ユーザーが特定のプッシュ通知の送信先を確認できるフォームを作成しています。 PHPでPOSTされる複数のチェックボックスがあります。ここに私のPHPスニペットは、次のとおりです。PHPを介して配列内のすべてのPOSTチェックボックスの値を取得しますか?

if(isset($_POST['Submit'])) { 
function sendMessage(){ 
    $pushmessage = ($_POST['PushMessage']); 
    $content = array(
    "en" => $pushmessage 
    ); 

foreach($_POST['formDeliver'] as $check) { 
     $segments = $check; 
    } 

$fields = array(
    'app_id' => "app-id-here", 
    'included_segments' => array($segments), 
    'data' => array("foo" => "bar"), 
    'contents' => $content 
); 

編集:ここに私のチェックボックスのコードは次のとおりです。フォームが送信されるたびに

 <input class="LCB" type="checkbox" id="district" value="All" name="formDeliver[]" checked><label class="light" for="district">District-Wide (Everyone)</label><br> 
     <input class="LCB" type="checkbox" id="high" value="High School" name="formDeliver[]"><label class="light" for="high">High School</label><br> 
     <input class="LCB" type="checkbox" id="middle" value="Middle School" name="formDeliver[]"><label class="light" for="middle">Middle School</label><br> 
     <input class="LCB" type="checkbox" id="williams" value="Williams Ave." name="formDeliver[]"><label class="light" for="williams">Williams Ave.</label><br> 
     <input class="LCB" type="checkbox" id="norwoodv" value="Norwood View" name="formDeliver[]"><label class="light" for="norwoodv">Norwood View</label><br> 
     <input class="LCB" type="checkbox" id="sharpsburg" value="Sharpsburg Elementary" name="formDeliver[]"><label class="light" for="sharpsburg">Sharpsburg Ave.</label><br> 
     <input class="LCB" type="checkbox" id="athletics" value="Athletics" name="formDeliver[]"><label class="light" for="athletics">Athletics</label> 

、$ fields配列は、メッセージ情報を送信します。私はセグメント(チェックボックスの値)を "String 1"、 "String 2"、 "String 3"のような文字列として渡す必要があります。しかし、これを行うたびに、最後にチェックされたチェックボックスをつかみ、それを$ segments変数に送ります。これは私が間違っているか見ていないことですか?

+1

あなたはループのたびに変数 '$ segments'を再割り当てします。あなたはそれが代わりに何をすると思いますか? – Barmar

答えて

2

foreach()を忘れて、毎回$segments変数を上書きしています。ただ、チェックボックスの配列を使用する:カンマ区切りのリストについては

'included_segments' => json_encode($_POST['formDeliver']), 

:あなたはおそらくJSONをしたいコメントに基づいて

あなたの現在のコードで

'included_segments' => implode(', ', $_POST['formDeliver']), 

、これは動作します冗長であり、必要ではありません。

foreach($_POST['formDeliver'] as $check) { 
    $segments[] = $check; 
} 
$segments = implode(', ', $segments); 
//or 
$segments = json_encode($segments); 
+0

これは動作しますが、現在渡されている値は「すべて\」、「高等学校」、「中学校」などとなります。スラッシュはどのように削除しますか? –

+0

どうすればこの問題を修正できますか?私はスラッシュ記号を削除することができましたが、文字列を配列として渡す必要があります(例: "String 1"、 "String 2"、 "String 3"))。どのように私はこれを達成するのですか? –

+0

JSON。出力が与えられると、次のように表示されます:["String 1、String 2、String 3"]しかし、このように表示する必要があります:["String 1"、 "String 2"、 "String 3"]アレイ。 –

0

あなたは、各checkboxの特定の名前を知っているので、手動でそれがなかった場合、その特定checkboxがチェックまたはFALSEた場合TRUEを保存し、配列を作成することができます。

$form_checks = [];//creating an array that will save the info obtained 

//saving TRUE or FALSE for each specific checkbox 
$form_checks['All'] = (isset($_POST['All']))?TRUE:FALSE; 
$form_checks['High School'] = (isset($_POST['High School']))?TRUE:FALSE; 
$form_checks['Middle School'] = (isset($_POST['Middle School']))?TRUE:FALSE; 
$form_checks['Williams Ave.'] = (isset($_POST['Williams Ave.']))?TRUE:FALSE; 
$form_checks['Norwood View'] = (isset($_POST['Norwood View']))?TRUE:FALSE; 
$form_checks['Sharpsburg Elementary'] = (isset($_POST['Sharpsburg Elementary']))?TRUE:FALSE; 
$form_checks['Athletics'] = (isset($_POST['Athletics']))?TRUE:FALSE; 

//inserting the result into your $fields array: 
$fields = array(
    'app_id' => "app-id-here", 
    'included_segments' => $form_checks, 
    'data' => array("foo" => "bar"), 
    'contents' => $content 
); 

あなたは含む配列を持っている場合それぞれcheckboxの名前を使用する場合は、同様の方法でこれを行うためにforeachループを作成することもできます。また、TRUEまたはFALSEを探していない場合は、好きな値(恐らく"CHECKED""NOT-CHECKED"など)でも変更できます。

関連する問題