「php」カテゴリーアーカイブ

PHPのエラー表示のメモ

プログラムが長くなってくると、ときどき出くわすのが

syntax error, unexpected $end in ファイル名 on ライン番号

unexpected $endというくらいだから、カッコの数がおかしいとか、そういう類のエラーというのは予想がつくんだけど
詳しく調べてみると、閉じカッコが足りない場合と、最初のカッコが足りない場合でエラー表示が違うとわかった。

閉じカッコが足りない場合だと

syntax error, unexpected $end in ファイル名 on ライン番号

逆に、最初のカッコが足りない、つまり閉じカッコの多すぎると

syntax error, unexpected ‘}’ in ファイル名 on ライン番号

これ知らなかったので、へぇ~と感心した。
このエラー表示で閉じカッコが多いのか少ないのか判断できるので、取り敢えず、カッコと足したり引いたりして、エラーを解決するのが早くなる。

エラー表示なんて、適当にしか見てなかったので、これからはちゃんと調べるようにしよう。

正規表現のメモ

例えば、ニッサン車の名前と、車両価格が入ったデータベースを作ったとする。
車名には「ニッサン・マーチ」、「ティーダ」、「ニッサンGT-R」のような物が入っていたとする。
純粋に車名だけでアイウエオ順に並べたいときは、ニッサン・マーチの「ニッサン・」やニッサンGT-Rの「ニッサン」いう文字が邪魔になる。この邪魔な部分を削除して並び替える仕組みが最初わからなかった。
車名と価格をセットで並び替えないと意味がないので、そこで時間を費やした。

もっといい方法があるだろうけど、取り敢えず以下の方法でできたのでメモ(プログラムはPHPを使用)。

まずデータベースから車名と価格を取り出し変数に入れる。
$carname=”車名”;
$price=”価格”;

置換して「ニッサン・」と「ニッサン」の文字を取り除く
$maker=”ニッサン”;
$name = ereg_replace(“$maker(・)?”,””, $carname);

連想配列に入れる(キーで並び替えをするために、キーに車名を入れる)
$namesort[$name]=$price;

以上を繰り返し処理。

次に、キーで並び替えをする
ksort($namesort);

繰り返し処理をして表示
foreach($namesort as $key=>$value){
print $key.$value;
}

これでメーカー名を省いた純粋な車名による並び替えができた。

プログラムの勉強に役立つサイト

プログラムの初心者向けのサイトを最近見るようになりました。

http://ajax.pgtop.net/
自分が見た中では、ここが頭ひとつ飛び抜けてわかりやすかったです。
PHP,MySQL,JavaScrip,Java,Ajaxが揃っているので、一通り初心者が興味をもつ分野は網羅されています。
全くの0からだとわかりにくいと思いますが、初心者向けの本を1冊済ませた後くらいに読むと面白いように先に進めると思います。
つまずきそうなポイントで必ず丁寧なフォローが入っているから、壁にぶつかりにくいです。
おかげで、1日でJavaScriptとAjaxが使えるようになりました。
ここまでのプログラム学習時間は合計50時間ぐらいだと思います。PHP,MySQL,JavaScrip,XML,Ajaxが自分が必要な分はなんとか使えるようになりました。周辺知識が揃ってきたので、今が一番学習曲線が伸びる時期な気がします。

PHPメモ

この前、何時間も続けてやっても効率悪いはずと書いていたんですが、夢中になってしまい、3日間で10時間以上いじりました。おかげでだいぶん使いこなせるようになりました。PHPでテンプレートを作り、静的なHTMLファイルを作ることができるようになったので、自分的には翼が生えた感じです。これでWORDPRESSを使わずにいろいろできそうです。プログラマになることが目的ではないので、PHPにはのめり込みすぎないように気をつけようと思います。気分転換に、週末の、金、土、日の3日間で携帯サイトの作り方を一通り勉強する予定です。

MySQLの文字化け対策メモ

問題
クライアントとサーバーの両方の文字コードを統一したはずなのに、PHPからデータベースの中身を取り出すと文字化けして「?」」になる。

原因
ネットで調べてみたら、両方の文字コードを揃えていても、PHPのビルド時に設定された文字コードが適用されてしまう場合があるらしい。デフォルトだとlatin1(欧文フォント)みたい。

対策
PHPからデータベースに接続したときに、文字コードの設定をしてあげる。MySQLの設定ファイルをいじる方法もあるらしいんですが、レンタルサーバーだとできないので
結局どうすればいいかというと、データベースに接続した時に

mysql_set_charset(“utf8” , $db);

を書いて文字コードを指定してあげると文字化けしなくなりました。(これはutf8の場合)

<?php
$db=mysql_connect(“データベース”,”ユーザーネーム”,”パスワード”);
mysql_set_charset(“utf8” , $db);
?>

こんな感じです。

「set names」を使う方法も見かけましたが、これだとセキュリティーに問題があるらしいです。