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 件のコメント:
コメントを投稿