-1

これが私のコードです

<table class='block'>
  <tr>
    <td>
      <input class='c1' type='checkbox' lid='checkbox1'>
        <label>checkbox1</label>
      </td>
    <td>
      <input class='c2' type='checkbox' lid='checkbox2'>
        <label>checkbox2</label>
      </td>
    <td>
      <input class='c2' type='checkbox' lid='checkbox3'>
        <label>checkbox3</label>
      </td>
    <td>
      <input class='c2' type='checkbox' lid='checkbox4'>
        <label>checkbox4</label>
      </td>
    <td>
      <input class='c3' type='checkbox' lid='checkbox5'>
        <label>checkbox5</label>
      </td>
    <td>
      <input class='c3' type='checkbox' lid='checkbox6'>
        <label>checkbox6</label>
      </td>
  </tr>
</table>
<script type='text/javascript'>
  $('input[type=checkbox]').each(function (){
  if (this.checked) {
  var x = $(this).attr('lid');
  }
  });
</script>
<?php
    if(!isset($_SESSION))
        {
            session_start();
        }
    if(!isset($_GET['x'])) $_GET['x'] = '';
    $_SESSION['x'] = $_GET['x'];
 ?>

選択したチェックボックスをセッションに保存したい。そのため、ページに戻ったときに、同じチェックボックスが選択されたままになるようにします。

4

2 に答える 2

0

私の意見では、それらをセッションに保存するのではなく、データベースに保存します。そして、同じページに戻ったら、データベースから値を取得します。そして、私はそれがはるかに簡単で最良のアプローチになると信じています。

あなたの問題の解決

まず、データ/チェックボックスの値がセッション変数に保存されているかどうかを確認する必要があります。コードスニペットを調べた後、チェックボックスの値がセッション変数に保存されるのではないかと疑っています。

問題1:セッション変数に値を格納するためにGETメソッドを使用していない

<?php
    if(!isset($_SESSION))
        {
            session_start();
        }
    if(!isset($_GET['x'])) $_GET['x'] = '';
    $_SESSION['x'] = $_GET['x'];  //  storing data using GET method
 ?>

これは、 GETメソッドを使用してセッション変数にデータを格納しようとしているコードです。formしかし、選択した値を渡す手段が見つかりませんでした。

問題2:セッション変数を取得していません

<script type='text/javascript'>
  $('input[type=checkbox]').each(function (){
  if (this.checked) {
  var x = $(this).attr('lid');
  }
  });
</script>

javascriptコードでは、セッション変数について言及していません。これにより、前にチェックした変数と一致させることができます。

于 2012-12-21T13:35:31.360 に答える
0

さて、セッションを使用して達成しようとしていることの実例を次に示します。

<?php 
session_start();
if(isset($_GET['checkbox']))
{
    $_SESSION[$_GET['checkbox'][0]] = isset($_SESSION[$_GET['checkbox'][0]]) ? +!($_SESSION[$_GET['checkbox'][0]]) : TRUE;
    print_r($_SESSION[$_GET['checkbox'][0]]);
    die;
}
?>
<html>
    <head>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    </head>
    <body>
        <table class='block'>
             <tr>
                 <td>
                     <input class='c1' type='checkbox' lid='checkbox1' <?php echo (isset($_SESSION['checkbox1'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox1</label>
                 </td>
                 <td>
                     <input class='c2' type='checkbox' lid='checkbox2' <?php echo (isset($_SESSION['checkbox2'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox2</label>
                 </td>
                 <td>
                     <input class='c2' type='checkbox' lid='checkbox3' <?php echo (isset($_SESSION['checkbox3'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox3</label>
                 </td>
                 <td>
                     <input class='c2' type='checkbox' lid='checkbox4' <?php echo (isset($_SESSION['checkbox4'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox4</label>
                 </td>
                 <td>
                     <input class='c3' type='checkbox' lid='checkbox5' <?php echo (isset($_SESSION['checkbox5'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox5</label>
                 </td>
                 <td>
                     <input class='c3' type='checkbox' lid='checkbox6' <?php echo (isset($_SESSION['checkbox6'])) ? 'CHECKED="CHECKED"' : ''; ?>><label>checkbox6</label>
                 </td>
             </tr>
         </table> 
    </body>
</html>

<script>
    $(document).ready(function() {
       $('input[type=checkbox]').on('change', function() {
           $.get("sefesf.php", { 'checkbox[]':$(this).attr('lid') });
       }) 
    });
</script>

スキニー

基本的に、ボックスをチェックするたびに、それ自体に対して GET リクエストが行われ、+! が実行されます。セッションで。の反対を意味します。したがって、セッション変数を自動的にチェックおよびチェック解除します。要求は AJAX と非同期で行われ、データが保存されます。CHECK 機能は、DOM の単純な三項演算子を使用して、ページの読み込み時に PHP を使用してサーバー側で実行されます。

すること

_GET に何らかの検証を追加してください。誤ったデータを保存したくありません。

また、これはこの種のことを行うにはかなり汚い方法ですが、それでもなお方法です。

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-12-21T13:58:36.273 に答える