DBのデータをCSVで書き出す

よく使うけれどもよく忘れるコード

$buf = "";
//文字コードを指定
$_enc_to = 'shift-jis';
$_enc_from = 'euc-jp';
//DBのデータを文字コード変換してカンマ区切りへ変換
foreach($dbData as $key=>$val){
mb_convert_variables($_enc_to,$_enc_from,$val);
$buf .= implode(",",$val)."\n";
}
//ファイル名を設定して
$fname = date("YmdHis",mktime()).".csv";
//ヘッダを書き出して
header("Content-Disposition: attachment; filename=$fname");
header("Content-Type: application/octet-stream");
//バッファを書き出す
echo $buf;

Warning: Call-time pass-by-reference has been deprecated

php.iniにてallow_call_time_pass_referenceがOFFになっている場合、引数を関数へ参照つきで渡すとこのように怒られます。調べてみると次の理由によるらしい。

関数のコール時に引数が参照で渡された場合に、警告するかどうかを 設定します。この機能は過去のものであり、将来のバージョンの PHP/Zend ではサポートされない可能性があります。 推奨される方法は、関数宣言時に参照渡しとするべき引数を指定する ことです。将来のバージョンでの動作を保障するために、この オプションを off とし、スクリプトがこの状態で正しく動作することを 確認することが推奨されます (この機能を使用する度に警告が発生します)。

関数コール時に参照で引数を渡すことは、コードの明解さを損なうために 廃止されています。関数は、引数が参照渡しであると宣言されて いない場合でも、文書化されていない方法で、その引数を修正できます。 副作用を回避するためには、どの引数を参照渡しとするかを関数宣言でのみ 指定すると良いでしょう。

勉強になりました。

参照

フォームを利用してCSVファイルをアップロードする。

フォームを利用してファイルをアップロードする場合、通常のinput要素のtype属性をfileとし、かつform要素の属性にenctypeを指定します。

CSVファイルを選択してください。

これをphpで受け取ると次のような配列を返します。

Array
(
[csvinput] => Array
(
[name] => uploadCSV.csv
[type] => application/vnd.ms-excel
[tmp_name] => /tmp/phpifaTTa
[error] => 0
[size] => 9106
)
)

wgetを使ってウェブサイトをget

ウェブサイト上のHTMLファイルそのほかをダウンロードするのに、今まではGetHTMLなどを使っていたが、下記コマンドでできることが判明(いまさら!)。

こちらのほうが簡単ですし、今度から使おう。。。

$ wget -r -l 0 http://www.mydomain.com/

301リダイレクト

サイトを運用していく上で、wwwなしドメインをwww付きドメインに統一する方法として、.htaccessを使う方法があります。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule (.*) http://www.mydomain.com/$1 [R=301,L]

RewriteCondのドメイン名は正規表現での記述が必要です

Bulk updating Gem source index for…

gem install railsのインストール時に次のようなエラーメッセージが表示されました。コマンドを間違えたかと思い、もう一度入力をしてみたところ今度は正常にインストールされました。

Bulk updating Gem source index for: http://gems.rubyforge.org
ERROR:  While executing gem ... (Gem::GemNotFoundException)
Could not find rails (> 0) in any repository

なんだか気持ちが悪いので少し調べてみると下記のサイト管理者さまでも同様の現象が発生しているようでした。

解決方法としては次のように–remoteをつければ良いとのこと。

gem install --remote rails --include-dependencies

助かりました。ありがとうございます!

内容符号化 (Contnet-Encoding) に問題があります。

Mediawikiのインストールを無事に完了し、メインページへアクセスをしたところFireFox3でこのようなエラーが表示されました。

内容符号化 (Contnet-Encoding) に問題があります。  

しかし、不思議なことにIEでは正常に表示される模様。google先生ほかいろいろと調べ回ったところ、こちらのページにて解決をしました。

参考

index.php(/path/to/wiki/index.php)の先頭に次のように記述します。

#!/usr/local/bin/php5 -q  

CGI動作させるのはこのindex.phpのみであるので、index.phpと同じディレクトリの.htaccessに次のように記述します。

<Files index.php>  AddHandler cgi-script php  </Files>

Dreamweaverでテンプレートをネストする

テンプレートをネストする場合には次のようにします。

親テンプレート(要するに普通のテンプレート)から新規にhtmlを作成
挿入->テンプレートオブジェクト->ネストされたテンプレートを作成

テンプレートから作成したhtml上で編集不可領域に含まれるタグの属性を変更したい場合には親テンプレートにおいて次のようにします。

修正->テンプレート->属性を編集可能にする

属性の編集はネストされたテンプレートでももちろん可能ですが、その応用としてネストされたテンプレートから作られたhtml上でもその親の親に含まれるタグの属性(つまり元のテンプレートの属性)を編集したい場合には次のようにします。

ネストされたテンプレートのテンプレートプロパティにおいて、「ネストされたテンプレートによる制御を許可」にチェックを入れます。