2009-07-01から1ヶ月間の記事一覧
郵便番号はテキストボックス2つで1グループになるので、その設定を行う。 required_keyというのがあって、これはグループ内配列のrequiredなキーを指定するので、今回は2つともそうだから、アクションフォームの定義は、 'zip' => array( 'type' => array(VA…
mysqlにデータを入れる。この作業は別途managerを用いて行うので、新たなmanagerを作り、関数を作る。関数は一般性を持たせるので、フォーム値の値をそのまま持ってきたりしない。 SubmitManager class Elixir_SubmitManager extends Ethna_AppManager { pub…
viewはページの表示にかかわることを設定するクラス。今までなんでもかんでもアクションクラスとテンプレートだけで終わらせてきたが、viewに仕事を割り振ってあげないとさすがにかわいそうなので、確認ページで日本語表記に変換する項目の設定をviewで行う…
フォーム画面→管理画面で値を渡す時にはhiddenを使うが、すべてのフォームの値で書くのが面倒・・・こんな時は、 <{form_hidden_all}>とhiddenタグを返したいところで入力することにより、アクションフォームで定義されたフォームのnameと入力されたvalueの…
あぁ、Ethna難しい。本当に。 今回は複合チェックだ。今回の条件は、 「チェックボックスの「その他」にチェックがなされてる場合にセレクトボックスが必須になる。」 という条件。複合チェックの場合は、varidatorを実行するコマンド $this->af->validate()…
Ethnaでは、アクションフォームの定義の所に 'filter' => 'ltrim',とあるが、これはEthna_ActionFormの function _filter_ltrim($value) { return ltrim($value); }という関数が入ったクラスを継承しているから使えるのである。今、半角カナ、およびひらがな…
画面遷移に関して var $form = array( 'lastname' => array( 'type' => VAR_TYPE_STRING, 'form_type' => FORM_TYPE_TEXT, 'name' => 'lastname', // // Validator (executes Validator by written order.) 'required' => true, 'min' => 1, 'max' => 50, 'r…
複数選択のチェックボックスなのに、値が何やっても一つしか渡されてこない。イラつく。さて、何がいけないのかというと、アクションフォームを指定する時に、複数選択の場合は'type'の宣言をarrayにしてあげなければならない。どういうことかというと、趣味…
フォームで入力した値が確認画面にちゃんと渡されているのか調べる。action/Confirm.phpで print $this->af->get("lastname");出てきた値はNULLだった。残念。何がダメだったかというと、action/Form.phpのアクションフォーム を引き継いでないかららしい。 …
まず、TOP画面を表示させる。action,view,テンプレートを作って、htdocs/index.phpは index.tplのformへの遷移は、 <a href="?action_form=1"><font size="2">さっそく応募する</font></a>とする。どのアクションを呼び出すかはここで決まる。んで、app/actio…
バーチャルホストに社内用フレームワークのhtdocsを設定したところ。 Internal Server Error エラーログを見てみると、 /.htaccess: php_value not allowed hereとか書いてあった。PHPがこのディレクトリで使えないらしい。とりあえず.htaccessで調べてみる…
以下の文章はEthna公式サイトを参考にしています。 ログイン画面の変更 もっとログイン画面っぽくする。 <html> <head></head> <body> <form action="{$script}" method="post"> <input type="hidden" name="action_login_do" value="dummy"> <table border="0"> <tr> <td>メールアドレス</td> <td></td></tr></table></form></body></html>
話が完全にずれてしまった。今は公式サイトのチュートリアルで話を進めていく。(ここを参考に) アクション まずアクション定義の追加する。 var $action = array( /* * TODO: ここにaction定義を記述してください * * 記述例: * * 'index' => array(), */ +…
実際のアプリケーション構築は、「アクション」を追加していく作業の繰り返しとなります。「アクション」とは何ですか?というのを正確に定義するのはちょっと難しいですが、要するに 1. ユーザから何らかのリクエストを受け取って(例えばURLへのアクセスや…
アプリケーションスケルトン(骨組み)の作成 まず、アプリケーションIDと、アプリケーション配置ディレクトリを決める。とりあえず/home/user/public_htmlに設置することに。アプリケーションIDをethna_trainingに、 $ ethna add-project ethna_training erro…
フレームワークとは ソフトウェアの世界では、アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。アプリケーションの雛型。開発にフレームワークを利用すると…
エスケープ処理 特殊文字にエスケープ処理を施す作業をする。 Smartyでは、 {$string|escape}と表記する。 ためしにエスケープ処理の前後で表示結果を比べてみると、確かにエスケープ処理がなされていた。
確認画面 確認画面ではPOSTで渡ってきた値を表示させる必要がある。 テキストボックスの値は {$smarty.post.lastname}の様に表記する。ラジオボタンで選択した性別のvalueはmかfなので、例えば男(value=m)を選択したら、 {foreach from=$sex_array key=k ite…
作ったフォームを入力部分、確認部分、完了部分の3つのテンプレートに分けて、それをPHPで出力する。 入力フォーム(form.tpl) テンプレートは通常拡張子は.tplとなり、PHPっぽいこととHTMLを組み合わせて作る。変化したところを主に記すと、 テキストボック…
今、Smartyの設定ファイル、テンプレート、エンジン、の3つファイルを作る。 Smarty設定ファイル template_dir = "{$current_d}/../templates"; //設置したtemplatesへの絶対パス $smarty->compile_dir = "{$current_d}/…
# wget http://www.smarty.net/より、最新版をダウンロードしてくる。ダウンロード先はいつもの/usr/local/srcにした。 # tar zxvf 解凍したSmartyのディレクトリの中にlibsというのがあるので、これをsmartyに変更して、/usr/local/php5/lib/phpの下に保存…
WEBセキュリティに関する事件は実は人為的なミスが結構多かったりする。ここでは過去の様々な事例に関し、個人情報の点から自分なりに大事だと思うことを書き出す。 WEBサーバにファイルを置くことに関する注意 webサーバ上に何か保存する場合には、それがな…
Smartyとは?? SmartyはPHPのためのテンプレートエンジン テンプレートエンジンとは?? テンプレートと呼ばれる雛形と、あるデータモデルで表現される入力データを合成し、成果ドキュメントを出力するソフトウェアまたはソフトウェアコンポーネント。 テン…
管理画面作成を容易にしてくれるというPager。今回はこれを使って管理画面をリプレイスする。まず、Pager.phpをインストールしてくる。 pear install Pagerインストールが完了したら、とりあえず確認。usr/local/php5/lib/phpの中にあった。さて、Pagerの便…
$sql3_result = $db_connect->getone($sql3);のメソッドにエラーが生じた場合、 if(DB::isError($sql3_result)){ echo $sql3_result->getmessage(); でエラーメッセージを見ると、syntax errorとある。こんな時は、 $sql3_result = $db_connect->query($sql3…
修正 ・全レコード数を得るときに手間(fetchrowしてその配列の・・・)があるので、一発でレコード数を得る。 $sql3_result = $db_connect->query($sql3); $res = $sql3_result->fetchrow(); $all_records = $res[0]; settype($all_records,"int");gueryメソ…
更新が遅くなりすみません。さて、課題は 「最初にすべてレコードをとってくるのではなく、表示する件数だけとってくるようにする。」 「3pに分かれている管理画面表示ページを一つにする」 「getの値に変な値が入っても対応できるようにする」 の3つ。頑張ったと…
管理画面作成の続き。ここからはページ遷移の為の設定に入る。 if(count($info_array)){ $num = count($info_array); $perpages = 5; //set how records per page $allpages = ceil($num/$perpages); // count all pages /** * set current page **/ if(isse…
ページング処理とは ページングとは、利用可能なメモリ容量を増やすOSの機能の一つ。ハードディスク上に「スワップファイル」と呼ばれる専用の領域を用意して、メモリ容量が不足してきたら使われていないメモリ領域の内容を一時的にハードディスクに退避させ…
「Column 'カラム名' in field list is ambiguous」というエラーが起きた。これは、テーブルを結合して出力する場合、もし2つのテーブルに同じ名前のカラムがあったとすると、どちらのテーブルのカラムか指定しないとエラーになる。こういうときは、 select …