IT資料館(覚え書き)
Amebaでブログを始めよう!
1 | 2 | 3 | 4 | 最初次のページへ >>

末日の取得

// **月末の日付を取得**

// 3月0日というのは無いので、3月1日の一日前の日付となるつまり、前月(2月)の最終日
$last = mktime(0, 0, 0, 2+1, 0, 2007);
$last_f = date("Y-m-d", $test);
print ("last_f:" . $last_f . "<br>");



// **月末以外の日付も取得**

//今日の日付(timestamp)

$today = time();

// 今日の日付
$start = mktime(0, 0, 0, date("m", $today), date("d", $today), date("Y", $today));

$start_f = date("Y-m-d", $start);

print ("start_f:" . $start_f . "<br>");

// 今日から一ヶ月後
$end = mktime(0, 0, 0, date("m", $start) + 1, date("d", $start) - 1, date("Y", $start));
$end_f = date("Y-m-d", $end);

print ("end_f:" . $end_f . "<br>");


// 今月末
$last = mktime(0, 0, 0, date("m", $start) + 1, 0, date("Y", $start));
$last_f = date("Y-m-d", $last);

print ("last_f:" . $last_f . "<br>");


PDOとSQLのLIMITを利用したページングの例


// 現在のページ番号取得
if ( strlen($this->PARAM['page'] ) < 1 ) {
$this->PARAM['page'] = 1;
}

// データ取得地点を求める
$num = ($this->PARAM['page'] - 1) * $maxRows;

// SQL作成
$sql = "SELECT company_id, name, state, regist_time FROM COMPANY LIMIT ? OFFSET ? ";

// 検索
$stt = $db->prepare( $sql );
$stt->execute(array($maxRows, $num));


// 検索情報を取得
$data = $stt->fetchAll( PDO::FETCH_ASSOC ) ;



ナビゲーション

//現在のページ番号が1以上であれば「前へ」リンクが必要

$prev_page = $this->PARAM['page'] - 1;

print ( "<a href="paging.php?page=$prev_page">前へ</a>");


//全データ数(別途取得が必要)から次のページがあるか確認が必要

$next_page = $this->PARAM['page'] + 1;

print ("<a href="paging.php?page=$next_page">次へ</a>");


Smartyで for文のような処理をしたい

通常のFOR文( PHP )

for($i=0;$i<10;$i++){
echo "$i<br>";
}


Smartyで実装する場合は次のようになる。


方法1:

{section name=cnt loop=10}
{$smarty.section.cnt.iteration-1}<br>
{/section}
//※-1するのがポイント


方法2:

{section name=cnt loop=10}
{$smarty.section.cnt.index}<br>
{/section}


方法3:

{section name=cnt start=0 loop=10}
{$smarty.section.cnt.index}<br>
{/section}
※startを設定することで0から開始できる。



例)プルダウンメニューでの利用例

<form name="form1" method="post" action="./main.php">
<input type="hidden" name="cmd" value="ClientListCmd">


<select name="page" onChange="javascript:this.form.submit();">
{section name=cnt start=0 loop=$maximum_page}

{if $page eq ($smarty.section.cnt.index+1) }
<option value="{$smarty.section.cnt.index+1}" selected>{$smarty.section.cnt.index+1}ページ
{else}
<option value="{$smarty.section.cnt.index+1}">{$smarty.section.cnt.index+1}ページ
{/if}

{/section}
</select>


</form>



様々なsubmit

プルダウンメニューが切り替わった時にsubmitしたい時


<form name="form1" method="post" action="./main.php">
<input type="hidden" name="hoge" value="hogevalue">
<select name="page" onChange="javascript:this.form.submit();">
<option value="1">1ページ
<option value="2">2ページ
<option value="3">3ページ
<option value="4" selected>4ページ
</select>
</form>



ボタンが押された時に、動的にPOST情報を変更してsubmitしたい時

<!-- HTML部分 -->

<input type="button" value="削除する" onclick="javascript:DeleteConfirm('form4', 'ClientDeleteCmd', '36');">


<!-- フォーム-->
<form name="form4" action="./main.php" method="post">
<input type="hidden" name="cmd" value="" />
<input type="hidden" name="id" value="" />
</form>
<br>


<JavaScript部分>

function DeleteConfirm(formName, cmdName, id){

document.forms[formName].id.value = id;
document.forms[formName].cmd.value = cmdName;

if( window.confirm("本当に削除してよろしいですか?") ){
//delete
document.forms[formName].submit();

}
}




IEのブラウザの「戻る」ボタンで戻った場合に、「ページの有効期限切れ」が表示される場合の解決方法

PHPでPOSTで情報を送っ後に、ブラウザの戻るボタンを押すと、

「ページの有効期限切れ」と表示されて、

ページが表示されなくなる場合があります。


解決方法は、PHPファイルの先頭に次の行を追加してください。

session_cache_limiter('private, must-revalidate');


(参考サイト)

http://www.workspot.jp/tech/php_tips.html

1 | 2 | 3 | 4 | 最初次のページへ >>