2011/01/31

php住所録作成、続き

php講習 1/31

・今日は月曜日のためか、電車が混んでいました。
・掃除は東浜でした。

<1時間目>
・九九の表を作成。(1/28と同じ)
出来たらメールで送付する。

<2ー6時間目>
・住所録システムを作成
今日も1日プログラムを書いていました。
新規登録処理の概要が出来たので、一覧表から詳細画面を作った。
新規登録画面は、画面遷移を整理。(残りはエラーチェック)
一覧表画面に検索条件の処理を入れSQL文が動くようにした。
編集処理の概要を作成。


・残り
新規登録画面のエラーチェック。
編集処理の残りとエラーチェック。
削除処理。
画面の体裁を整える。
動作確認(テスト)。

2011/01/30

phpで九九の表、表示



【九九の表】


1

2

3

4

5

6

7

8

9
1
1*1 = 1

1*2 = 2

1*3 = 3

1*4 = 4

1*5 = 5

1*6 = 6

1*7 = 7

1*8 = 8

1*9 = 9
2
2*1 = 2

2*2 = 4

2*3 = 6

2*4 = 8

2*5 = 10

2*6 = 12

2*7 = 14

2*8 = 16

2*9 = 18
3
3*1 = 3

3*2 = 6

3*3 = 9

3*4 = 12

3*5 = 15

3*6 = 18

3*7 = 21

3*8 = 24

3*9 = 27
4
4*1 = 4

4*2 = 8

4*3 = 12

4*4 = 16

4*5 = 20

4*6 = 24

4*7 = 28

4*8 = 32

4*9 = 36
5
5*1 = 5

5*2 = 10

5*3 = 15

5*4 = 20

5*5 = 25

5*6 = 30

5*7 = 35

5*8 = 40

5*9 = 45
6
6*1 = 6

6*2 = 12

6*3 = 18

6*4 = 24

6*5 = 30

6*6 = 36

6*7 = 42

6*8 = 48

6*9 = 54
7
7*1 = 7

7*2 = 14

7*3 = 21

7*4 = 28

7*5 = 35

7*6 = 42

7*7 = 49

7*8 = 56

7*9 = 63
8
8*1 = 8

8*2 = 16

8*3 = 24

8*4 = 32

8*5 = 40

8*6 = 48

8*7 = 56

8*8 = 64

8*9 = 72
9
9*1 = 9

9*2 = 18

9*3 = 27

9*4 = 36

9*5 = 45

9*6 = 54

9*7 = 63

9*8 = 72

9*9 = 81

phpで九九の表

課題
九九の表をテーブルタグを使ってphpプログラムにする。

<!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<?php
/**
 *
 * kuku.php
 * @author 
 * @since  2011.1.xx
 * @version 1.0.0
 *
 * 課題
 * for文を入れ子で使用し「九九」を「1の段」から「9の段」
 * まで、テーブルタグを使用して表示させてください。
 *
 */
?>

<html>
<head>
<title>九九の表</title>
<style type="text/css">
<!--
td.bold {
  font-weight: bold;
}
-->
</style>

</head>

<body>
<table  border="1">

<caption>【九九の表】</caption>
<tr><th width="30"><br></th>
<?php for ($j=1; $j<=9; $j++) { ?>
    <th bgcolor=#ffff00 width="70">
    <?php print  $j ; ?>
    </th>
<?php } ?>
</tr>

<?php for ($i=1; $i<=9; $i++) { ?>
    <tr align=center>
    <td class=bold bgcolor=#ffff00 align=center><?php print $i ?>    </td>
    <?php for ($j=1; $j<=9; $j++) { ?>
        <td>
        <?php print $i . "*" . $j . " = " . $i*$j ; ?>
        </td>
    <?php } ?>
    </tr>
<?php } ?>
<?php ?>
</table>

</body>
</html>

九九の表の出力はこちら

2011/01/29

ラジオボタンをphpとhtmlで作成

ラジオボタンの処理をphpとhtmlで作成。

<?php
$gender[1] = "男性" ;
$gender[2] = "女性" ;
$g = 0;
?>

<html>
<head>
<title>ラジオボタン</title>
</head>
<body>
    <?php if (isset($_POST["gender"])): ?>
    <?php $g = $_POST["gender"]?>
    <?php echo "gender=".$_POST["gender"]?><br />
    <?php endif;?>
    <hr>
    <form action=""  method="post">
    <?php foreach ($gender as $key=>$value) { ?>
        <input type="radio" name ="gender" value = "<?php echo $key ?>"
        <?php if ($g==$key) { echo "checked";}?>> <?php echo $value ?>
    <?php } ?>
    <input type="submit">
    </form>
</body>
</html> 

2011/01/28

php住所録作成

php講習 1/28

・掃除は東浜でした。

<1時間目>
・九九の表を作成。
出来たらメールで送付。

<2ー6時間目>
・住所録システムを作成
今日は1日プログラムを書いていました。
ガラだけの一覧表と、新規登録画面、エラーチェック、SQL文
来週から、処理のやり残しと細かいところをやる予定。
検索はそのあとの予定。
編集と削除はしばらくお預け。

2011/01/27

php住所録の説明

php講習 1/27

・掃除は東浜でした。

<1時間目>
・九九の表を作成。(今日で3日目)
出来たらメールで送付。

<2時間目>
・住所録システムの説明
仕様書に従い住所録をphpで作成します
概要説明、作業の進め方、スケジュール(約2週間)

<作業項目を整理>
・スケジュール:1/28-2/14
(1)DBの操作
DB名:address_book(新規、studyとは分ける)
テーブル作成
各画面で使用するSQLを作成(phpで使用する)

(2)HTML
画面の作成
今回は、機能重視なので、デザイン性は求めていない。

(3)PHP
一覧表はFizzBuzzや九九でやったテーブルタグを使ってもいいし、テーブルタグでなくてもいい。

・作業の流れ
画面を作るとき、登録画面2つ、確認画面3つ、完了画面3つとすると作りにくい。
(1)一覧画面(選択条件はあとで)
(2)新規登録画面、確認画面、完了画面を先に作るとやりやすい。

・チェック機能
チェック機能は共通の部分があるので、関数機能などを使って見る。
たとえば都道府県の処理とか。

・テスト
テスト項目を設定(入力チェック、画面遷移、出力結果)

・進め方は、出来るところから。
与えられたスケジュールのなかで作業するのも仕事として重要。
最初にスケジュール表を作る

この課題のあとの予定は、企画実習、smarty。

<3時間目>
・作業の進め方、スケジュール
・スケジュールを作成する。

<4時間目>
・スケジュールを作成したらメールで送付する。
・作業をすすめる。
DB,テーブル作成

<5時間目>
・作業をすすめる。
index.phpを作り始める

<6時間目>
・都道府県のドロップダウンリスト
ラジオボタン
pref.php参照

2011/01/26

php掲示板、セッションとメ-ルフォ-ム

php講習 1/26

・掃除は江ノ島側の橋でした。

<1時間目>
・準備
 eclipse,zampp,mySQLクライアントの起動
 phpとmySQLのマニュアルページも一応開けておきます。
・昨日と同じ、九九の表を作成する。
htmlのマニュアルページも開けておいたほうが良かった。
今日も提出はしなくていいそうです。

<2時間目>
・資料10、セッションの解説
 phpのセッション関数参照

・資料のプログラムを作成
 session1.php,session2.php(資料はクォートが全角なのでコピーに注意)
・セッションファイルの内容確認
C:\pleiades\xampp\tmp\sess_xxxxx...
・セッションの確認
Firefox のLive HTTP Headers を開き、再度アクセス
Cookie: PHPSESSID=*** というデータが送られていることを確認
・session2.phpを表示し名前を確認
・phpinfo()にて「session」項目を確認
・ローカルのクッキーファイルを確認
 FireFoxから、ツール/オプション/Cookieを個別に削除/localhost/PHPSESSID

<3時間目>
・資料10に従い、掲示板のindex.phpとsubmit.phpにセッションの記述を追加する。
(テキストは、一部全角の記述がある。また一部に記述の不足があるので、意味を考えながら補う)
・追加機能
 返信にニックネームが残るように変更する。(reply.php)
・セッションの削除
session3.php
session3.php実行後、session2.phpを表示して名前が表示されないことを確認
セッションのファイルが空になっていることを確認

<4時間目>
<メールフォームの作成>
1.新しいプロジェクトを作成(mailform)
 必要なファイル名: index.php
          submit.php

2.基本のデータを送信するためのフォームをindex.phpに作成する。
名前
メールアドレス
内容

3.作成した送信フォームからのデータ受け取りをsubmit.phpに作成する。

4.データのチェックを行う
名前、未入力チェック
文字数チェック(20文字以内)
メールアドレス、未入力チェック
内容、未入力チェック

5.使うメールアドレスを選んでおく。
 xxxxx@gmail.com

<5時間目>
・引き続きメールフォームのプログラムを作成
・結果の確認
入力フォームが出来ていること。
 エラーチェックが出来ていること。
・入力チェックの追加
 正しいメールアドレスが入力されていること。

<6時間目>
・「Mercuryメールサーバ」経由で送信できるようですが、
 windowsの環境では、mail環境が設定されていないので、
 phpでのメールの送信はエラーにならないが、gmail側が受け取って
 くれないようです。gmailの設定はこちら。
gmailでは送信メール (SMTP) サーバー - TLS を使用する必要があります。
・明日からの課題についての資料説明
まず、資料を読むことから始めましょう。
スケジュールを立てて2週間2/11まで。


2011/01/25

php掲示板、インクルードの機能

php講習 1/25

・掃除は昨日に引き続き東浜でした。

<1時間目>
・九九の表をテーブルタグを使ってプログラムにする。
 今日は、出来きてもメールで送付する必要はないそうです。

<2時間目>
・掲示板、パスワードチェックして削除する処理の続き
 引き続きプログラムが出来ていない人は続けて下さい。
・削除にパスワードチェックを入れたので、それ以前に入力してある
 テストデータは、パスワードがないので削除出来なくなった。
 sql文でパスワードを仮に設定してテスト。

<3時間目>
・処理の追加が出来ていない人は引き続き作業
・処理の追加が終わった人は、機能を関数にすることを検討。
・delete.php,delete_submit.phpの答え合わせ
・これをもとにreply_delete.php,reply_delete_submit.phpを修正する。
・以上で掲示板の削除についての拡張作業は終了です。

<4時間目>
<機能を外だしにするための事前知識>
・BBSプロジェクトに「test」フォルダを追加作成する。
・以下のphpファイルを空で作成する。
  include.php
  test1.php,test2.php,test3.php,test4.php,test5.php,test6.php
各ファイルには、プログラムのコメントを入れておくこと。
各テストファイルから、include.phpを呼び、include.phpで設定した項目がテストファイルで参照可能なことを確認する。

<5時間目>
・include.php
# データベース接続時に必要な各項目
$url  = "localhost" ;
$user = "xxxx" ;
$pass = "yyyy" ;
# おまけ
$message = "これはinclude.phpから読まれています。" ;

・test1.php
require './include.php';
print $message;

・掲示板について、定数とインクルードの機能を試す。
bbsの下にinclude.phpを作成。
・ログイン設定をinclude.phpで記述
# データベース接続時に必要な各項目の定数
define("DB_URL" , "localhost") ;     //  接続先
define("DB_USR" , "xxx") ;          //  ユーザ名
define("DB_PASS", "yyyy") ;          //  パスワード
define("DB_USE" , "study") ;         //  選択DB名

//mysql に接続する
$db = mysql_connect(DB_URL,DB_USR,DB_PASS) or die(mysql_error());
// データベースを選択する
$sdb = mysql_select_db(DB_USE) or die(mysql_error());

<6時間目>
・ログイン設定のある掲示板の各プログラムから、include.phpを呼ぶように変更
 

2011/01/24

php掲示板、入力チェックとパスワ-ド

php講習 1/24 第8週目
・1/21はお休みしました。
・本日の掃除は東浜でした。

<1時間目>
・FizzBuzzをプログラムにする。
 出来たらメールで送付。

<2時間目>
・入力チェックを試す
未入力チェック、入力文字数のチェック
htmlとphpを分離させてhtmlの途中でメッセージを表示する。

<3時間目>
・入力チェックを試す(文字数チェック)
if (mb_strlen($text,"utf8")>=20) {
          $error_msg = "文字数が20文字以上入力されています!" ;
     }

mb_strlen(文字数のカウントで日本語を扱うときはこちら)

・もうひとつの関数strlenの確認(日本語だと文字数ではなく、バイト数で扱われる)

・文字数4文字以上で16文字まで、それ以外をエラーとする
if ((mb_strlen($text,"utf8")<4) or (mb_strlen($text,"utf8")>16) ){
          $error_msg = "文字数が4文字以上、16文字以下ではありません" ;
     }

正規表現で英数字のチェックをする
if (mb_ereg('[^0-9a-zA-Z]',$text)) {
          $error_msg = "英数字で入力してください" ;

     } 

<4時間目>
・掲示板のパスワード入力チェックに適用する。
 文字数チェック(4文字以上、16文字まで)
 英数字チェック
<index.php>
フォームにpasswdの入力を追加
<submit.php>
passwordの受け取り
入力フラグ初期化
入力チェック
DBへの書き出し

<reply.php>
フォームにpasswdの入力を追加
<reply_submit.php>
passwordの受け取り
入力フラグ初期化
入力チェック
DBへの書き出し

<5時間目>
・掲示板のパスワード入力チェックに適用する。
 引き続き作業
・答え合わせ

☆インターネットサービスの紹介
・8tracks
 気に入った音楽8曲をアップしているサイト
(著作権で保護されているもの意外)
 twiterとの連携あり
・last.fm
APIとしてhtmlからの操作が可能


<6時間目>
・掲示板のパスワード入力チェック後削除フラグを立てる。
(1)にパスワード入力フォームの追加を行う。
   delete.php

       パスワード<br />
       <input type="password" name="passwd" size="20" /><br />
   reply_delete.php
       パスワード<br />
      <input type="password" name="passwd" size="20" /><br />

(2)にパスワードをリクエストから受け取るようにする。
  delete_submit.php
$passwd   = $_POST["passwd"]; 
  reply_delete_submit.php

(3)リクエストで受け取ったパスワードを書くチェックを行う
    ・未入力チェック
    ・英数字チェック
    ・桁数チェック
    ・データベースのデータと合っているかのチェック(new)
  delete_submit.php
  reply_delete_submit.php

(4)チェックを通過した際には削除ができること
  delete_submit.php
  reply_delete_submit.php

・お休みしていた間に不足していた機能の追加
 reply_delete.php,reply_delete_submit.php

2011/01/20

php掲示板、削除フラグを見るように変更

php講習 1/20

・掃除は先週から引き続き東浜でした。

<1時間目>
・準備
 eclipse,zampp,mySQLクライアントの起動
・課題、FizzBuzzを作成、出来たらメールで送る。
・問題2、削除機能の説明
 機能追加作業

<2時間目>
・問題2、削除機能追加作業
 画面レイアウト

<3時間目>
問題2、削除機能追加作業

<4時間目>
問題2、削除機能の説明
 ○確認方法
 削除したとき、画面から表示がなくなっていること
 DBのcommentテーブルからレコードがなくなっていること
 DBのreplyテーブルからレコードがなくなっていること

<5時間目>
問題2、削除の続き
 削除したデータを見たかったとき、どのような処理をすればよいでしょうか。
・物理削除
・論理削除
論理削除に必要なものを整理

<DB>
・カラム追加、削除フラグ
ALTER TABLE comment ADD delete_flg tinyint(1) default 0 ;
ALTER TABLE reply ADD delete_flg tinyint(1) default 0 ;

*mySQLはboolean型がない。このため、1桁の数字で0/1を使用する。

・データ件数の確認
select * from comment where delete_flg =0 ;
→件数確認
・フラグを立ててみる。
update comment set delete_flg = 1 ;
・データ件数の確認
select * from comment where delete_flg =0 ;
→件数確認、0件

<6時間目>
<php>
・SQL文、参照を変更
index.php(,submit.php,reply.php,delete.php,delete_submit.php)を変更
$sql = "SELECT * FROM comment where delete_flg = 0 order by created_at desc";