0

私はこのようなコードを持っています:

    $values = array('1A', '2B', '3C', '4D', '5E');
    $checked = array('1A_check', '2B_check', '3C_check', '4D_check', '5E_check');
    $description = array('Description1', 'Description2', 'Description3', 'Description4', 'Description5');

    for ($i=0; $i<count($values); $i++) {

        $$checked[$i] = ""; //Setting this to null since this variable will be set to checked or not in the later step

        $checkbox_form[] = '<input type="checkbox" name="checkbox[]" value="'. $values[$i] .'"'. $$checked[$i] .'>
'. $description[$i] .' <br />';
    }

        foreach ($checkbox_form as $value) {  //Rending the Form
            echo $value;
        }

このコードは、フォームを次のようにレンダリングします。

<input type="checkbox" name="checkbox[]" value="1A">
Description1 <br />

<input type="checkbox" name="checkbox[]" value="2B">
Description2 <br />

<input type="checkbox" name="checkbox[]" value="3C">
Description3 <br />

<input type="checkbox" name="checkbox[]" value="4D">
Description4 <br />

<input type="checkbox" name="checkbox[]" value="5E">
Description5 <br />

ここまでは順調ですね。私が次にやろうとしているのは、ユーザーがボックスからいくつかのチェックボックスを選択して「プレビュー」をクリックすると、選択したチェックボックスが「チェックされた」状態でフォームをプレビューするページに移動することです。だから私はそれを行うためにこのようなコードを持っています:

//After checking what values were posted in the previous screen
$checkbox_posted = array('1A_check', '2B_check');  //Storing the posted checkboxes to this array    

    if (count($checkbox_posted) != 0) {
        foreach ($checkbox_posted as $item) {
            $$item = ' checked';
        }
    }

上記のvariable variableコードは、フォームの 1 行目と 2 行目の変数に「チェック済み」の値を追加する$1A_checkと思って$2B_checkいましたが、そうではなく、チェックボックスもチェックされていません。フォームは次のように出力されるはずだと思いました:

<input type="checkbox" name="checkbox[]" value="1A" checked>
Description1 <br />

<input type="checkbox" name="checkbox[]" value="2B" checked>
Description2 <br />

<input type="checkbox" name="checkbox[]" value="3C">
Description3 <br />

<input type="checkbox" name="checkbox[]" value="4D">
Description4 <br />

<input type="checkbox" name="checkbox[]" value="5E">
Description5 <br />

しかし、代わりに、チェックされた値を渡さずに出力します。だからそれは働いていません。私は何を間違えましたか?

4

1 に答える 1

1

やれ:

index.php(例):

<form action="page_with_previews.php" id="form_preview" method="post" >
    <?php
      // there render list
    ?>
</form> 
<a id="preview" >Preview</a>

// by jQuery 
<script> 
  $("#preview").click(function(){
      e.preventDefault();
      var cnt = $("#form_preview input[type=checkbox]:checked").size();
      if ( count > 0 )
         $("#form_preview").submit();
  });
</script>

page_with_previews.php (例):

if ( isset($_POST['checkbox']) {

    foreach (array_filter($_POST['checkbox']) as $item) {
       echo $item; 
    }
}

JSスクリプトなしで編集

index.php(例):

<?php 
   if (strtolower($_SERVER["REQUEST_METHOD"]) == "post"){

     if ( isset ($_POST['checkbox']) ){
        $url_data = http_build_query($_POST['checkbox']);

        header('Location:page_with_previews.php?'.$url_data);
        die;
      }  
   }
?>   

<form action="" id="form_preview" method="post" >
    <?php
      // there render list
    ?>
    <input type="submit" value="View previews"/>
</form> 

page_with_previews.php (例):

if ( isset($_GET['checkbox']) {

    foreach ($_GET['checkbox'] as $item) {
       echo $item; 
    }
}
于 2014-01-18T20:30:50.090 に答える