2012年3月27日火曜日

2012年03月27日 講義037日目

2012年03月27日
講義037日目
------------------------------1H------------------------------
★javascript
●jqury
・changeSpace.php
  jquery部分
<?php
$num = $_GET["num"];

if($num){
    echo "取得した数字は".$num."です";
}else{
    echo "数字ではないか、0です";
}

・HTML部分
<script type="text/javascript">
function getChangeSpace(){
$.ajax({type:'POST',
    dataType:'html',
    data:$(this).serialize(),
    success:function(i){
        $('#change_space').html(i);
    },
    url: "./changeSpace.php?num=3"
    });
}
</script>
------------------------------2H------------------------------
★javascript
●データベースに接続してみる
・jq.php
  jquery部分
function getChangeSpace(){
$.ajax({type:'POST',
    dataType:'html',
    data:$(this).serialize(),
    success:function(i){
        $('#change_space').html(i);
    },
    url: "./changeSpace.php?num=3&member_id=" + $("#member_id").val()
    });
}
</script>

・jq.php
  HTML部分
<button id= "ajaxiventtest" onclick="getChangeSpace()">
AJAXテスト</button>
<form action="">
<input type="text" id="member_id">
<button onclick="getChangeSpace();return false;">
IDを入力してクリック
</button>
</form>
<br>
<div id="change_space">
この位置が書き換わる
</div>

・changeSpace.php
$member_id = $_GET["member_id"];
if(member_id){
    mysql_connect("localhost", "ユーザ名","パスワード");
    mysql_select_db("study");
    $sql = "SELECT * FROM member WHERE id = ".$member_id;
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    echo "<br>入力された番号は".$row["nickname"]."さんです";
}
●サーバーのルートのパスの取り方
サーバー移行を前提としたルートのパスの取り方
・BBS/lib/mySubmitUtil
require_once(realpath(".") . "/lib/DbWrapper.class.php");

$web_root_path = substr($_SERVER['SCRIPT_FILENAME'] ,0 , -strlen($_SERVER['SCRIPT_NAME']));
require_once($web_root_path . "/lib/DbWrapper.class.php");

・substr()
・strlen()
  -をつけると後ろから
・$_SERVER['SCRIPT_FILENAME']
  動いてるファイル名を取得
  $_SERVER['SCRIPT_NAME']
  ホストから見た相対パスを取得

$SERVER['DOCUMENT_ROOT']でのルートの取り方は問題が発生する(サーバー)
------------------------------3H------------------------------
★smarty
●smarty
・拡張子.tpl
・smartyのlibsフォルダをプロジェクトの/直下にコピー
・プロジェクト/直下に以下のフォルダを作成
templates
templates_c
config
cache

require("./libs/Smarty.class.php");
$smarty = new Smarty;

・assign関数
テンプレート側で使う変数を渡す
・display
使用するテンプレートを指定
・tenplatesフォルダに
index.tplを作成
・index.php内のhtml部分を全て切り取りindex.tplへ

------------------------------4H------------------------------
★smarty
●smarty内で動的な処理を表現する
{}で括る
・->assign()
に入ってる変数を使えるようにする

<?php echo $_SESSION["nickname"];?>
さん、こんにちは | <a href="./logout.php">ログアウト</a>
</div>

{smarty.session.nickname}

<?php echo $_SESSION["submit_id"]?>

{smarty.session.submit_id}

・コメントアウト
{* *}

while($row = mysql_fetch_array($result)) {
    print "<div class=\"commentBox\">";

    //urlカラムにデータが入っていたら名前にリンクを貼る
    if($row["url"]!=""){
        print "<a href=\"" . $row["url"] . "\" target=\"_blank\">";
        print nl2br(htmlspecialchars($row["nickname"]));
        print "</a>";
        print "さんの投稿<br>";
    }else{
        print nl2br(htmlspecialchars($row["nickname"]))."さんの投稿<br>";
    }

    //画像を出力する
    if($row["photo"] != ""){
        print "<img src=\"./img/".$row["photo"]."\" width=\"100\"><br>";
    }
    print nl2br(htmlspecialchars($row["content"]))."<br>";

    //年月日を装飾する
    //strtotime関数:文字列の日時をtime型に変える
    print date("Y年m月d日",strtotime($row["created_at"]))."<br>";



    print "<a href=\"reply.php?comment_id=".$row["id"]."\">返信する</a>";
    print "</div>";
↓テンプレート化
{foreach from=$rows item=row key=keyname}
    <div class="commentBox">

    {* urlカラムにデータが入っていたら名前にリンクを貼る *}
    {if $row.url != ""}
        <a href="{$row.url}">
        {$row.nickname|htmlspecialchars}
        </a>
        さんの投稿<br>
    {else}
        {$row.nickname|htmlspecialchars}さんの投稿<br>
    {/if}

    {*画像を出力する*}
    {if $row.photo != ""}
        <img src="./img/{$row.photo}" width="100"><br>
    {/if}
    {$row.content|htmlspecialchars|nl2br}<br>

    {*
    //年月日を装飾する
    //strtotime関数:文字列の日時をtime型に変える
    print date("Y年m月d日",strtotime($row["created_at"]))."<br>";
    *}
    {$row.created_at|date_format:"%Y年%m月%e日"}<br>

    <a href="reply.php?comment_id={$row.id}">返信する</a>
    </div>
    {foreach from=$row.reply item=row_reply}
        <div class="replyBox">
        {$row_reply.nickname|htmlspecialchars} さんの返信<br>
        {$row_reply.content|htmlspecialchars|nl2br}<br>
        {$row_reply.created_at|date_format:"%Y年%m月%e日"}<br>
        </div>
    {/foreach}
{/foreach}

・foreach
from:ループの元になるデータ
item:ループの中で使う変数
key :ループの中で使うインデックス
・関数を使うときは|を関数前に置く
・$smarty->display("index.tpl");
使いたいテンプレートを出力
・テンプレートからテンプレートを呼び出すこともできる
------------------------------5H------------------------------
------------------------------6H------------------------------
★smarty
●submit.phpもテンプレート化する
-----------------------------memo------------------------------

0 件のコメント:

コメントを投稿