カテゴリー
jqGrid

jqGrid のデータをCSV形式で出力する方法について再考

こちらにjqGridのデータをCSV出力するサンプルを作りました。

簡単に処理を説明すると、選択したデータを配列としてサーバーへポストして、サーバー上でCSVに変換してクライアントへ出力するだけなんですが、ちょっと問題があります。

jqGrid のセルをフォーマッター(formatter:function(){…}) でセルの値に応じて加工しているとその内容で渡してしまいます。具体的には、たとえば ID 列にリンクを付けるために、フォーマッターで cellvalue を ‘<a href=”xxxx”>id</a>’ というようにリンクつけているような場合、このフォーマッターで処理した値がサーバーにわたりCSV出力されます。

これに対処するため、DBの内容を表示している場合なら、jqGrid にレコードのID値を hidden 列かもしくは加工せず保持しておいて、サーバーへポストするデータとしてはレコードIDのみを渡し、サーバー側でそのレコードIDを使ってクエリしたデータをCSV出力すれば、jqGrid で選択したデータがCSV出力されることになり、こちらの方法の方が良いかなぁと思います。

少し時間がとれたらそちらのサンプルも作成してみます。

以上、備忘録です。

 

カテゴリー
雑記

さくらエディタ PHP言語強調キーワードの設定

PHP でコードを書くときは、「さくらエディタ」を使っています。さくらエディタはデフォルトでは PHP の強調キーワード設定が読み込まれていないのですが、以下の方法で追加できます。

PHP キーワード セットの追加

  1.  さくらエディタを起動
  2.  「設定」- 「共通設定」メニューを選択
  3.  「共通設定」ダイアログの「強調キーワード」タブをクリックして表示
  4.  「セット追加」ボタンをクリック
  5.  「キーワードのセット追加」ダイアログにセット名を入力(例:PHP)
  6.  「インポート」ボタンをクリック
  7.  「開く」ダイアログで “C:Program Filessakurakeyword” フォルダ下の “PHP.KWD” ファイルを選択。(強調キーワードが一覧表示されます。)
  8.  「OK」をクリックして、「共通設定」ダイアログを閉じます。

タイプ別設定

  1.  「設定」- 「タイプ別設定一覧」メニューを選択
  2. タイプ別設定一覧から「設定17」または、それ以降の空き設定を選択
  3. 「設定変更」ボタンをクリック
  4. 「タイプ別設定」ダイアログの「スクリーン」タブをクリック
  5. 「設定の名前」を “PHP” に変更
  6. 「ファイル拡張子」に “php” を入力
  7. 続いて、「カラー」タブをクリック
  8. 「強調キーワード1」コンボボックスから「PHP」を選択
  9. 「コメントスタイル」の「ブロック型(F)」に “/*” 、「~(T)」 に “*/” を入力、続いて「行型 (M)」 に “#” 、「行型 (E)」 に “//” を入力

 

カテゴリー
jQuery

jQuery エレメントの存在を確認する方法

ドキュメント中にあるエレメントが存在していたら、その値を取得する処理を jQuery で行うためには $(“#xxxx”).length メソッドを利用します。

// 削除チェックボックスが存在するか?
if ($("#bedeleted").length) {
    // 削除ボタンがチェックされているか?
    if ($("#bedeleted").attr('checked')) {
        ret = window.confirm("xx を削除します。よろしいですか?");
        if (ret) {
        } else {
        }
    }
}

--- 省略 ---
<?php echo '<input type="checkbox" class="checkbox" id="bedeleted" name="bedeleted" > <label>削除する</label>'; ?>

参考: https://docs.jquery.com/Frequently_Asked_Questions#How_do_I_test_whether_an_element_exists.3F

カテゴリー
PHP

PEAR Cache_Lite でコンテンツをキャッシュ

あるサイトから RSS フィードを取得してページに表示したいのですが、ページが表示されるたびに RSS フィードを取得していたのでは、ページの表示に時間がかかってしまいます。

そこで、簡単にキャッシュ システムを提供してくれる PEAR::Cache_Lite を利用することにしました。ページを表示する時に、キャッシュに表示コンテンツがあるかチェックして、なければ取得し、あればキャッシュされているものを表示します。

キャッシュには生存期間の設定ができるので便利です。

require_once "Cache/Lite.php";
define('BLOG_RSSFEED', 'https://www.northwind.mydns.jp/samples/blog/feed/');

$options = array(
  'cacheDir' => '/tmp/',
  'lifeTime' => 3600,
  'pearErrorMode' => CACHE_LITE_ERROR_DIE
);
$cache = new Cache_Lite($options);
$rss = false;

if ($xml = $cache->get(BLOG_RSSFEED))
{
  // キャッシュがヒットした !
  // キャッシュ内の XML 文字列を XMLSimpleElement として取得
  $rss = simplexml_load_string($xml);
}
else
{
  // 有効なキャッシュが見つからなかった (このRSSをを取得して保存)
  $rss = simplexml_load_file(BLOG_RSSFEED);

  if (is_bool($rss) && $rss === false)
  {
    // RSS取得エラー
  }
  else
  {
    // キャッシュにRSSをXML文字列として保存
    $cache->save($rss->asXML());
  }
}

参考:
Cache_Lite::get()
Cache_Lite::save()

カテゴリー
PHP

pear install pear/Cache_Liteでエラー

PHP の Web アプリケーションでキャッシュを利用してパフォーマンスの向上を検討しようとして PEAR の Cache_Lite を利用しようとしました。

ところが、Cache_Lite をインストールしようとしたらエラーが。。。

# pear install pear/Cache_Lite
pear/Cache_Lite requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
No valid packages found
install failed 

PEAR Installerが古いということで、次に下記コマンドを実行。

# pear upgrade PEAR
pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.1 is not the recommended version 1.2.3, but may be compatible, use --force to install
pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
pear/Console_Getopt requires PEAR Installer (version >= 1.8.0), installed version is 1.4.9
No valid packages found
upgrade failed

とアップグレードができないので、–force オプション付きでリトライ。

# pear upgrade --force PEAR
warning: pear/PEAR dependency package "pear/Console_Getopt" downloaded version 1.3.1 is not the recommended version 1.2.3
warning: pear/Archive_Tar requires PEAR Installer (version >= 1.5.4), installed version is 1.4.9
warning: pear/Console_Getopt requires PEAR Installer (version >= 1.8.0), installed version is 1.4.9
downloading PEAR-1.9.4.tgz ...
Starting to download PEAR-1.9.4.tgz (296,332 bytes)
.............................................................done: 296,332 bytes
downloading Archive_Tar-1.3.10.tgz ...
Starting to download Archive_Tar-1.3.10.tgz (18,294 bytes)
...done: 18,294 bytes
downloading Console_Getopt-1.3.1.tgz ...
Starting to download Console_Getopt-1.3.1.tgz (4,471 bytes)
...done: 4,471 bytes
upgrade ok: channel://pear.php.net/Console_Getopt-1.3.1
upgrade ok: channel://pear.php.net/Archive_Tar-1.3.10
upgrade ok: channel://pear.php.net/PEAR-1.9.4
PEAR: Optional feature webinstaller available (PEAR's web-based installer)
PEAR: Optional feature gtkinstaller available (PEAR's PHP-GTK-based installer)
PEAR: Optional feature gtk2installer available (PEAR's PHP-GTK2-based installer)
To install use "pear install pear/PEAR#featurename"

アップグレードが成功したので、もう一度 Cache_Lite のインストール。

# pear install pear/Cache_Lite
downloading Cache_Lite-1.7.15.tgz ...
Starting to download Cache_Lite-1.7.15.tgz (32,355 bytes)
.........done: 32,355 bytes
install ok: channel://pear.php.net/Cache_Lite-1.7.15

以上です。備忘録。

# pear -V
PEAR Version: 1.9.4
PHP Version: 5.1.6
Zend Engine Version: 2.1.0
Running on: Linux localhost 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 17:45:52 EST 2012 i686