おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

« 2009年11月 | メイン | 2010年3月 »

2009年12月

2009年12月26日 (土)

phpMyAdminでTEXT型のカラムの表示を文字列で行う場合

MySQLの管理用ソフトとしてphpMyAdminを使用されている人は多いと思いますが、TEXT属性のカラムの表示を行うと以下の表示になるはずです。

[BLOB - 30 バイト]

これでは内容が分からないので、文字列がそのまま表示されると便利です。
そこで、「config.inc.php」の最後の方に以下の1行を追加します。

$cfg['ShowBlob'] = true;

ただし、「config.inc.php」の権限の書込みを許可したままにしておくと以下のエラーが表示されますので注意して下さい。

Wrong permissions on configuration file, should not be world writable!

あとデフォルトの設定のままだと、1800秒(30分)何もせずに、他の作業を行うと再ログイン画面が表示されます。
これも結構面倒なので、時間を延ばす場合は「config.inc.php」に以下の1行を追加します。

$cfg['LoginCookieValidity'] = '18000'; //18000秒にしました。

2009年12月10日 (木)

ラジオボタンをdisabledにするとPOSTされてこない

最近仕事でPHPを久々に触っていますが、ラジオボタンの簡単なところでではまってしまった。

ある登録画面で、状態設定のラジオボタンを設置し、全ての入力項目を入れた後で「確認」ボタンで一旦画面の項目を全てdisabledの指定で再表示し、更に「登録」ボタンで実際のDBに登録するという手順です。(以下の様なソースです)

...
<?
if ( 確認ボタン押下時? ) {
    $strDisabled = "disabled";
}

$strChecked1 = "";
$strChecked2 = "";
if ($strStatus == 1) {
    $strChecked1 = "checked";
} elseif($strStatus == 2) {
    $strChecked2 = "checked";
}
?>
<input type="radio" name="radioButton" value="1" <?=$strChecked1?> <?=$strDisabled?>/>状態1
<input type="radio" name="radioButton" value="2" <?=$strChecked2?> <?=$strDisabled?>/>状態2
...

disabledの状態で、POST処理を行なうわけですが、いくら$_POST["radioButton"]を見ても変数が宣言されていません。いくらやってもradioButtonは渡されてこないわけで、DBには値が
登録されません。他のtype="text"のものは渡されてくるのにtype="radio" は渡されない。

type="radio" でdisabled指定のものはPOSTされてこないことを思い出し、状態のデータをtype="hidden" で退避しておくことで、事なきを得ました。

たった2,3ヶ月PHPを触っていないだけでこの有り様、もう少し精進しないと...
しかし、仕様とはいえ、type="text"ではPOSTされるのなら、type="radio"でも
渡されても良い様な気がしますが。

2009年12月 8日 (火)

Activereportsでのドキュメント生成中に処理を強制的に中断する方法

今日は久々にVB.NET関連のTIPSです。

Activereportsでのドキュメント生成中に処理を強制的に中断する方法です。
Activereportsで印刷する場合に、コール元で条件を与え、条件に合致するデータが存在しない場合に何もせずに戻したい時の方法です。

レポート開始時にDBからのデータ取得時に、レコードが存在しない場合にはCancelメソッドで強制的に中断できます。

Private Sub rpt_ReportStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ReportStart

    'ここでOrcaleDataReaderなどによるデータリーダのSQL文実行を行い、結果がエラー等の場合、強制的に中断

    Me.Cancel

End Sub

Private Sub rpt_NoData(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.NoData
    'さらにSQLエラーが無くても、データが無かった場合、強制的に中断
    Me.Cancel()
End Sub

レポート生成側では、Runメソッドで生成後、ドキュメントの現在のページがNothingであれば強制的に中断したと見なせます。

Dim report As New ActiveReport1()

report.Run()
If (report.CurrentPage Is Nothing) Then
   MsgBox("データがありません。")
End If

以上、簡単なTIPSでした。