2010年5月7日金曜日

file名の取得メモ

ファイル名を取得するために、
   echo $_SERVER['PHP_SELF'];
を使おうかと思ったが、ファイル名だけ習得すればいいので、
  $dir=dirname(__FILE__).DIRECTORY_SEPARATOR;
  $file=str_replace($dir,"",__FILE__);
  echo $file;
の方が良い感じだった。

関数化してシンプルに使いたいが、今のところ外部ファイルで独自関数化すると、その外部ファイル名が習得されてしまうので、うまくいっていない。

また、定数化したら便利だろうかと思ったが、定数は一度定義されるとそのまま、と知らず、再定義ができないなど面倒だったのでパスすることに。

PHP5.3からは、__DIR__というマジック定数が用意されたようだが、まだ環境が整備されていないことがありそうなので、これもパスすることに。

2010年4月30日金曜日

[] operator not supported というエラーが出た

[] operator not supported
というエラーが出た。

ググッたら、
http://d.hatena.ne.jp/webpg/20100126/p1
こちらで教えてくださっていた方法があり、
やってみたらOKに。

配列にプッシュしていっていたのですが、
まず最初にその配列の初期化が必要だったのですね。
$arg=array();といったように。

それまでは出現していなかったので、何をやってしまったのか、まだ原因不明。
勉強だな。。

2010年4月26日月曜日

phpでcssの色設定を動的に変更したいのでメモ

phpでcssを動的に変更したいので、リンクメモです。
http://www.phppro.jp/news/384

適当なphpファイルにてcssファイルをつくるには、
header("Content-type: text/css");
を加えてCSSファイルに化けさせて、

<link rel="stylesheet" type="text/css"
 media="screen" href="style.php">
みたいに読み込ませる、と。

あとは、style.phpみたいなファイルの中で、
動的にデータベースから読み込ませた変数からスタイル指定してやれば良さそうだな、と。

実装、2,3日かかるかな。。

2010年4月23日金曜日

insert文ではカラム名はクオーテーションでくくらないのが吉。

MySQLでinsertする時に、
insert先のカラム名をシングルクオーテーションで囲っていたら登録されずエラーになっていました。
   $sql="insert into category ('cat_id','cat_name','sort_order') values ('dummy','$cat_name','$sort_order')";

なかなか理由が分からなかったのですが、シングルクオーテーションを外すと無事OKに。

   $sql="insert into category (cat_id,cat_name,sort_order) values ('dummy','$cat_name','$sort_order')";

なんとなくくくらないと心許ない気もしましたが、
これからはくくらない、と覚えておきます。。

printfで、引数を複数使ったり並び変えたりする際に$のエスケープが必要だった。

phpマニュアルに、printfで%s,%dなどに代入する引数の順番を変えたり、何度も代入したりできる便利な用法が載っていますが、エラーが出てうまく使えませんでした。 

$format = 'The %2$s contains %1$d monkeys';printf($format, $num, $location);

結局問題は、""ダブルクオーテーションを使っていたので、その中で$記号をエスケープしていなかったことでした。
%1\$s,%2\$dなどとしてやると、無事順番入れ替えや同じ引数を複数回使ったりできました。
よかった。 

 ■追記:%1\$d と書くべきを、%\$1dと言う風に$を数字の前に書いてエラーも出てました。
 書き順注意。 

2010年3月26日金曜日

issetの方が、<>""より良さそう。

if($index<>"")といった判定式を、ある本から学んで使っていましたが、
if(isset($index))にしないと処理がおかしいときがありました。

これからは、issetを使うことにしよう、というメモです。

whereでorはカラム名を毎回記述する必要あり(SQLメモ)

SQLのクエリ文で、where ~ or ~を使うとき、
where some like 'foo' or some like 'bar'
といったように、同じカラムから探す場合でも、orの前後に両方同じカラム名を記述する必要あり。

これを省略していて、ちょっと悩みました。