課題5c解答例

<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.01 traditional//en">
<html>
  <head>
    <META charset="utf-8">
  </head>
  <body>
    <?php
      $str_array = array();
      $handle = @fopen("../data/utf8/simple_sample.csv","r");
      // タイトル行が1行あることを想定
      if($handle) {
        echo "<table border=2>";
        while(!feof($handle)) {
          $buffer = trim(fgets($handle));   // trimは前後の空白や改行コードをとる関数
          if($buffer =="") continue;        //空行なら下を実行せず次の行の処理へ
          $data_num++;                      // データ数(行数)のカウント
          $str_array = explode(",",$buffer);

          // 項目の記憶 (最初の行のみ)
          if(!isset($col_item)) {
            for($i=0; $i<count($str_array); $i++) {
              $col_item[] = $str_array[$i];      //測定量の項目
            }
          }
          // 項目記憶ここまで

          echo "<tr><td>". $str_array[0]. "</td>";
          for($i=1; $i<count($str_array); $i++) {
            if($_POST["select_data"]=="" || in_array("all", $_POST["select_data"])   || in_array($i,$_POST["select_data"])) {
              echo "<td>" . $str_array[$i] ."</td>";
            }
          }
          echo "</tr>";
        }
        echo "</table>";
      }
    ?>
    <!-- formの作成  -->
    <form method="POST" target="_top">
     <p>測定項目の絞り込み</p>
     <?php
       //POSTされていた項目をcheckedにする
        $selectOpt = isset($_POST['select_data']) &&
                     in_array("all",$_POST['select_data'])?" checked ": "";
        echo '<input type="checkbox" name="select_data[]"' . $selectOpt  .  ' value="all">すべて';
        for($i=1; $i<count($col_item);$i++) {
          $selectOpt = isset($_POST['select_data']) &&
                       in_array($i, $_POST['select_data'])?" checked ": "";
          echo '<input type="checkbox" name="select_data[]" value="' . $i . '"' . $selectOpt . '>' . $col_item[$i];
        }
    ?>
     <input type="submit" value="送信">
    </form>
</body>
</html>

課題5d

上の解答例を読み,プログラムに説明を加えなさい.

解答の書き方例