2016-09-15 18 views
0

私はPHPを初めて使用しています。チェックボックスを数日間は作業していますが、それでも解決できません。私は0と1をセッションのステータスとして使用してチェックボックスをチェックしようとしていました。問題は、送信後にチェックされずにセッションで実際にチェックされることです。 POSTでは、window.location.hrefを使用してページを更新し、チェックボックスがオンになっているようにします。上記のようにwindow.location.hrefを使用しなかった場合、チェックボックスはチェックされますが、最初にボタンをクリックしても表示されません。もう一度ボタンをクリックすると、チェックボックスがチェックされて表示され、セッションのステータスもチェックされます。他のチェックボックスも同じです。ここで セッション配列を使用してチェックボックスをチェックする方法

<form name="filter" method="POST" action=""> 
    <div class="panel-body">              
     <div class="form-group"> 
      <?php 
       $check_array = array(); 

       $search = $_GET['search']; 
       $category = mysqli_query($conn, "SELECT * FROM categories"); 
       $numrow = mysqli_num_rows($category); 
       $i = 0; 
       while($crow = mysqli_fetch_assoc($category)) 
       { 
        array_push($check_array, [$crow['categories_id'], $crow['categories_name'],$_SESSION['cat'][$i][2]]); 
        if(empty($_SESSION['cat'][$i][2])){ 
        ?> 
         <script> 
          $(document).ready(function(){ 
           $('#categories_id<?php echo $crow['categories_id']; ?>').attr('checked', false);}); 
         </script> 
       <?php 
       } 
        elseif($_SESSION['cat'][$i][2] == 0){ 
       ?> 
        <script> 
         $(document).ready(function(){ 
          $('#categories_id<?php echo $crow['categories_id']; ?>').attr('checked', false);}); 
        </script> 
       <?php 
       } elseif($_SESSION['cat'][$i][2] == 1){ 
       ?> 
        <script> 
         $(document).ready(function(){ 
          $('#categories_id<?php echo $crow['categories_id']; ?>').attr('checked', true);}); 
        </script> 
       <?php 
       } 
       ?> 
        <div class="checkbox"> 
         <label><input type="checkbox" name="categories_id<?php echo $crow['categories_id']; ?>" id="categories_id<?php echo $crow['categories_id']; ?>"><?php echo $crow['categories_name']; ?> 
           <input type="hidden" name="catname<?php echo $crow['categories_id']; ?>" id="<?php echo $crow['categories_id']; ?>" value="<?php echo $crow['categories_id']; ?>"> 
         </label> 
        </div> 
       <?php 
        $i++; 
       } 
       ?> 
      </div> 
     </div><button type="submit" class="btn btn-default" name="Btn">Filter</button></form> 

は、以下の配列

Array ([0] => 21 [1] => Accessories [2] => 1) 
Array ([0] => 13 [1] => Outdoor sports [2] => 0) 
Array ([0] => 2 [1] => Women [2] => 0) 
Array ([0] => 10 [1] => Yard, garden & outdoor [2] => 0) 

の出力は、最初の数は、カテゴリ名が続き、最後の1が時にチェックボックスカテゴリIDされている私のPOST機能

if(isset($_POST['Btn'])){ 
for($j=0; $j<count($check_array); $j++){ 
    $_SESSION['cat'][$j][0] = $check_array[$j][0]; 
    $_SESSION['cat'][$j][1] = $check_array[$j][1]; 
} 

for($k=0;$k<count($check_array);$k++){ 
    $val = $_POST['catname'.$check_array[$k][0]]; 
    if(isset($_POST['categories_id'.$check_array[$k][0]])){ 
     $selected = 1; 
    } 
    else{ 
     $selected = 0; 
    } 

    if($_SESSION['cat'][$k][0] == $val){ 
     $_SESSION['cat'][$k][2] = $selected; 
    } 
} 
?> 
<script> 
window.location = window.location.href;</script> 
<?php  
} 

ですチェックされている場合は1になります。0

私に助言してください。

+0

最後の行が間違っていると思います。 "<?php}"ここでPHPタグを開きますが、閉じることはありません。そして私はなぜ最後の "}"か分からない? (申し訳ありませんが私の英語が良いではない場合):) –

+0

うーん、私は間違って言った間違いは私の悪い編集スキルだったと思います。私はブラケットの数を数えているので、閉じ括弧が欠けているような構文エラーはないと確信しています:) – GeographerOnCompSc

答えて

0
Please try : 

    if(isset($_POST['Btn'])){ 
    for($j=0; $j<count($check_array); $j++){ 
     $_SESSION['cat'][$j][0] = $check_array[$j][0]; 
     $_SESSION['cat'][$j][1] = $check_array[$j][1]; 
    } 

    for($k=0;$k<count($check_array);$k++){ 
     $val = $_POST['catname'.$check_array[$k][0]]; 
     if(isset($_POST['categories_id'.$check_array[$k][0]])){ 
      $selected = 1; 
      $_SESSION['checkedIn'] = true; 
     } 
     else{ 
      $selected = 0; 

      $_SESSION['checkedIn'] = false; 
     } 

     if($_SESSION['cat'][$k][0] == $val){ 
      $_SESSION['cat'][$k][2] = $selected; 
     } 
    } 
    ?> 

and in html 

    <input type="checkbox" 
    <?php if($_SESSION['checkedIn']) { echo 'checked'; } ?> 
    name="categories_id<?php echo $crow['categories_id']; ?>" id="categories_id<?php echo $crow['categories_id']; ?>"><?php echo $crow['categories_name']; ?> 
関連する問題