2012年3月22日木曜日

2012年03月21日 講義033日目

2012年03月21日
講義033日目
------------------------------1H------------------------------
レンタルサーバーへ掲示板移行のバグ取り
------------------------------2H------------------------------
レンタルサーバーへ掲示板移行のバグ取り
------------------------------3H------------------------------
★レンタルサーバーへの掲示板移行
  ●アクセス権限
                    |オーナー|グループ|その他  |
    ・読み込み許可  |   ○   |   ○   |   ○   |
        read        |   4   |   4   |   4   |
    ・書き込み許可  |   ○   |   ×   |   ×   |
        write       |   2   |   2   |   2   |
    ・実行許可      |   ○   |   ○   |   ○   |
        execute     |   1   |   1   |   1   |
    webサーバーユーザーで、ファイルにアクセスする
    apacheユーザ等→その他に該当
  
  ●1から7の数字の組み合わせで権限を表現
      授業ではimgフォルダに対して、755→777に変更した
      FFFTPから属性変更することも可能
------------------------------4H------------------------------
★ファイル操作
  ●filesousaプロジェクトの作成
    ・SwitchHostを使用してhostsファイルの編集
        hostsファイルにfilesousa.comを追加
    ・http-vhostファイルの編集
        <VirtualHost *:80>
            DocumentRoot C:\pleiades\xampp\htdocs\filesousa
            ServerName filesousa.com
            <Directory "C:\pleiades\xampp\htdocs\filesousa">
                AllowOverride All
                Options -Includes -ExecCGI
            </Directory>
        </VirtualHost>
    ・htaccessの設定
        http-vhostファイルに書き込まれた<Directory></Directory>で囲まれた部分の内容は
        そのディレクトリに書き込まれたhtaccessが優先される
        普通はhtaccessで制御する
  ●mysqlのデータをCSVで吐き出してみる
      mysql> SELECT * FROM comment INTO OUTFILE "./export.csv" fields terminated by ',' ;
      C:\pleiades\xampp\mysql\dataに吐き出される
------------------------------5H------------------------------
★filesousa.com
  ●filesousa.comにdataフォルダを作成
          ・CSVで吐き出した./export.csvをコピー
        
          ・index.phpに記述
      <?php
      $csv = "./data/export.csv";
      $row = 1;
      if (($handle = fopen($csv, "r")) !== FALSE) {
          while (($data = fgetcsv($handle, 1000, ",")) !==FALSE) {
              $num = count($data);
              print $row. " 行目には".$num. "列あります<br />。";
              $row++;
              for ($i=0; $i < $num; $i++) {
                  print $data[$i] . "<br />\n";
              }
          }
          fclose($handle);
      }
  ●fopen関数、fgetcsv関数、fclose関数
    ・fopen関数
      ファイルを開くための関数
    fopen($csv, "r")
    "r"→読み込みのみ
    "w"→書き込みのみ
    "a"→で追加
    ・fgetcsv関数
    一行づつ読み込むので、ループさせて使う
    カンマで区切られた部分を配列として読み込む
    データのくくり文字(エンクロージャ)も指定できる
    fgetcsv($handle, 1000, ",")
    ・fclose関数
    一応操作が終了したら書いておくのを推奨
    大量の処理の場合に重くなったりする
    基本は開いたら閉じる
    if文を使って、
      ファイルを開いたら閉じる
      ファイルを開けなかったら動かない
    ようにする
  ●色々なデータの読み込み関数
  ・fgets,fputcsv,fputsなど
  ●リソース型
    上のソースの$handleに入ってる値はリソース型
    mysqlの時の$resultと同じ
------------------------------6H------------------------------
★filesousa.com
  ●練習問題
    ・自分で作成したデータベース内のテーブルのデータをcsv にエクスポートし、
      そのデータをHTMLのテーブルで表示するプログラムを作ってください。
    ・mysql> SELECT * FROM mone_grandprix INTO OUTFILE "./mone_gradprix.csv" fields terminated by ',' ;
      で吐き出したデータをfilesousa.com/dataフォルダへ
      <?php
      $csv = "../data/mone_grandprix.csv";
      if($handle = fopen($csv, "r")) {
          echo "<table>";
          while (($data = fgetcsv($handle,1000, ","))) {
              echo "<tr>";
              for($c=0; $c < count($data); $c++){
                  echo "<td>";
                  echo $data[$c];
                  echo "</td>";
              }
              echo "</tr>";
          }
          echo "</table>";
          fclose($handle);
      }
      ?>
  ●fputs関数
    ・テキストファイルの生成と追加ができるプログラム
      <?php
      $file_path = "../data/putfile.txt";

      if($handle = fopen($file_path, "a+")){
          if(!fputs($handle,"これはテストです\n")){
              echo"書き込みに失敗しました。<br>";
          }
          fclose($handle);
      }else{
          echo "ファイルオープンに失敗しました<br>";
      }

      echo "ファイルの書き込みを確認してください";
      ?>
      ページにアクセスするたびにテキストが増えていく
-----------------------------memo------------------------------

0 件のコメント:

コメントを投稿