1時間目?
現場レベルでのSmartyのデリミタの扱いについて。
{}はJavaScriptでも使うので、Smartyと混在するとエラーの原因になるので、
回避のためにデリミタを変更したclassを継承させる。
/********************************************************************** Smartyクラスを継承したMySmartyクラスを作成 コンストラクタの呼び出しが「Smarty()」ではなくて「__construct()」に 変わっているので注意 **********************************************************************/ include_once ( "Smarty.class.php" ); class MySmarty extends Smarty { function MySmarty() { $this -> left_delimiter = "{{"; $this -> right_delimiter = "}}"; $this -> __construct(); } }
2時間目?
Ex.SmartyでFizzBuzz。ifとforeachでつくろ~(宿題らしい)。
ファイル名はまんまfizzbuzz.phpとfizzbuzz.tpl。
3時間目
暗号化
md5()で暗号化処理の関数です。覚えておくとラッキー。
mysql_fetch_array = 通常配列+連想配列
楽だがデータ取得が2倍になるので多用は難しい。
mysql_fetch_assoc = 連想配列
mysql_fetch_row = 通常配列
ブラウザで出すとこうなる。エクセルの表をイメージするとわかりやすいかな。
Array//$dataの配列
(
[0] => Array//$rowの1行目の配列
(
[1] => Array//$rowの2行目の配列
(
4時間目
連想配列を表で出してみよう。
foreachelse ・・・・・・データが入っていない場合の判定を入れることでエラー表示回避。
<body> <table border="1"> <tr><th>No.</th><th>会員ID</th><th>パスワード</th><th>有効/無効</th></tr> {{foreach from = $member_list item = num}} <tr> <td>{{$num.member_id}}</td> <td>{{$num.member_name}}</td> <td>{{$num.password}}</td> <td>{{if $num.delete_flg == 0}}有効{{/if}} {{if $num.delete_flg == 1}}無効{{/if}}</td>//elseifもおk </tr> {{foreachelse}} <tr><td colspan="4">データがありません</td></tr> {{/foreach}} </table>
5時間目
4時間目の内容で、POSTされたデータを扱う。
何がきても大丈夫なように|escape()を使うことでXSS対策になる。
「escape」は「htmlspcialchars」のこと~。
あとindex.tplから。
$blog.blog_date|date_format:'%Y年 %m月 %d日 %T'
でデータの日付表示を変更できるよ。
関数を使うときは|でつなげるよ。
【問題】0302問題
以下のログインフォームをMとVに分離してください
・login.php
・login.tpl
テンプレートファイルに
・ログインネーム($login_name)と
・ログインメッセージ($login_message)
を表示させてください
多分pho側にSmarty設定を入れるのは平気だと思う。
{{$login_name}}と{{$login_message}}だけ~(設定次第なので{}のひとつでもおk)
0 件のコメント:
コメントを投稿