デジットさんの生活便利サイトトップへ デジットさんのQuickFormの使い方(PHP)

トップページ > ホームページ作成 > QuickFormの使い方

PHPのPEAR追加モジュールのQuickFormの使い方をお教えします。PHPのPEAR追加モジュール「QuickForm」をインストールすると使うことが出来ます。インストール方法は、PEARインストールをご覧下さい。レンタルサーバーの「ロリポップ」でも、使うことが出来ます。

QuickFormとは

フォームを作る時は、ユーザに入力してもらったデータをそのまま使うことは出来ません。間違いがあったりしたとき修正してもらわないと、正しい情報を受け取ることが出来ません。フォームの入力チェックは、JavaスクリプトをつかったりPHPを使って自分でチェックのプログラムを組むことも出来ますが、PEAR追加モジュールのQuickFormを使うと簡単に入力チェックが出来ます。
QuickFormの難点は、フォームのデザインが固定されてしまうことですが、Smartyと組み合わせると、デザインも自由に決めることが出来ます。まずは、QuickFormの使い方を勉強しましょう。

QuickFormをつかったサンプル

ここでは、「クラス」をつかった方法で、QuickFormを使ってみます。クラスを別ファイルにすることで、同じ入力項目やチェック項目をつかうフォームが簡単に使えるようになります。「クラス」と実行の2つのファイルを用意します。

クラスファイルの例

クラスファイルの例です。ここでは、QuickFormの入力要素・自動チェック項目・表示する釦などの定義をしています。
ファイル名は、「QfrmSmpl.php」です。

<?php
// QuickForm用 class のサンプル(フォームと釦と表示の定義)

//ライブラリの読み込み
require_once("HTML/QuickForm.php");

//QuickFormフォームの定義
class QfrmSmpl{
var $_form;
//コンストラクタの定義 $sbmtAct 「送信」釦のリンク先
function QfrmSmpl($sbmtAct){
$this -> _form = new HTML_QuickForm("frmSmpl","post",$sbmtAct); }
//フォーム要素・入力チェックの定義
function setForm(){
$this -> _form -> addElement("text","txtName","名前(全角日本字):");
$this -> _form -> addElement("text","txtEname","名前(半角英字):");
$this -> _form -> addElement("text","txtEmail","E-mail:"); $this -> _form -> addElement("text","txtEmail2","E-mail(確認用):");
$this -> _form -> addElement("textarea","txtrComment","コメント:");
}
//フォーム入力チェックの定義(, null, "client")で、クライアント側でチェック function checForm(){
$this -> _form -> applyFilter(__ALL__,"trim"); //空白取り除き
$this -> _form -> addRule("txtName","名前を入力!","required", null, "client");
$this -> _form -> addRule("txtEname","半角英字で入力!","alphanumeric", null, "client");
$this -> _form -> addRule(array("txtEmail","txtEmail2"),"メールアドレス不一致!","compare", null, "client");
$this -> _form -> addRule("txtEmail","無効なメールアドレス!","email", null, "client");
$this -> _form -> addRule("txtrComment","コメントを入力!","required", null, "client");
$this -> _form -> setRequiredNote("<font color='red'>*</font>必須入力");
}
//「フォームが有効である」かチェック 有効ならTRUE
function frmVldt(){
if($this -> _form-> validate()){
return true ;
}else{
return false;
}
}
//「送信」釦の定義 $btnName:釦の名前
function setSbmit($btnName){
$this -> _form -> addElement("submit",$btnName,"送信");
}
//「戻る」と「送信」釦の定義 $rtnName:戻る $sbmtName:送信
function setRtnSbmit($rtnName,$sbmtNname){
$buttons[] = &HTML_QuickForm::createElement("submit",$rtnNname,"戻る");
$buttons[] = &HTML_QuickForm::createElement("submit",$sbmtNname,"送信");
//釦を並べて表示
$this -> _form -> addGroup($buttons,null,null," ");
}
//画面の表示
function dispFrm(){
$this -> _form -> display();
}
//画面のフリーズ
function freezeFrm(){
$this -> _form -> freeze();
}
}
?>

解かりづらいところを簡単に説明します。
「$sbmtAct」は、Submit釦をクリックした時の、アクション先を指定します。
"this"は、インスタンス化されたものを表し、「$this-> _form」は自分自身を指しています。
「validate()」は、入力したデータが定義したルールにあっていれば「TRUE」を返します。
釦を並べて表示したい時は、「$buttons[]」で定義し、 「addGroup($buttons,null,null," ")」で、表示します。
「freeze()」は、表示する時に入力データを固定(入力枠をなく)してくれます。

QuickFormQを実行するファイルの例

つぎは、上記定義したクラスファイルを利用して、QuickFormQを実行する例です。
ファイル名は、「smpl_qform_index.php」です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>フォームチェック(QuickForm)</title>
</head>
<body>
<?php
//QuickFormで定義したclassファイルの読み込み
require_once "./QfrmSmpl.php";
//submit釦のaction先(自分のファイル)指定
$qfrmindex = new QfrmSmpl("smpl_qform_index.php");

//フォームの定義・チェック
$qfrmindex -> setForm(); //要素とチェックの定義
$qfrmindex -> checForm(); //入力チェック

//確認画面の場合 「戻る」と「送信」釦を表示
//入力値が有効 かつ 釦名が"SUBMIT_INDX"の場合
if ($qfrmindex -> frmVldt() and isset($_POST["SUBMIT_INDX"])){
$qfrmindex -> setRtnSbmit("RTN_CNF","SBMT_CNF");
$qfrmindex -> freezeFrm(); //要素をフリーズ
$qfrmindex -> dispFrm(); //表示
//最終画面の場合 釦表示なし
}elseif(isset($_POST["SBMT_CNF"])){
$qfrmindex -> freezeFrm(); //要素をフリーズ
$qfrmindex -> dispFrm(); //表示
//入力画面の場合 最初の表示と「戻る」で戻った場合
}else{
$qfrmindex -> setSbmit("SUBMIT_INDX"); //表示
$qfrmindex -> dispFrm(); //表示
}
?>
</body>
</html>

文字コードは、「utf-8」になっていますが、自分の環境に合わせて決めてください。
プログラムは、ほとんど、さきほど「クラス」ファイルで定義した関数を呼んでいるだけです。「クラス」ファイルをみながら考えれば、理解できると思います。入力画面・確認画面と終了画面は、それぞれの画面で「setSbmit」「setRtnSbmit」でセットした「submit」釦の名前で判断しています。
今回は、「smpl_qform_index.php」と「QfrmSmpl.php」は、同じディレクトリの階層に置いてあります。サンプルは、フォームチェック(QuickForm)で、確認できます。
レンタルサーバーの「ロリポップ」では、動作確認しております。

ホームページを公開するレンタルサーバーは、 ロリポップ! がお薦め、 PHP5を使うならPHP5から選ぼう。

関連ページ

ホームページ作成

PHP5を使う

アフィリエイトをする

PHPの使い方

デジットさんのホームページ入門に移行中

スポンサード リンク

Amazon.co.jpアソシエイト:
PHP&プログラミング

売れている順 新刊順

:%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20php :php2_  :5

とことん!ホームページホームページ入門役立つサイトデジットさんのリストラ日記仮福真琴の精神科医はうそだらけ

2005-2010 Copyright © Digit-01 All Rights Reserved.