Archive for the ‘php’ Category

関数の戻り値で複数の値を返す

日曜日, 2月 25th, 2007

関数の戻り値に複数の値を返す事って出来ないのかと思ってたんだけど、引数をlistで受けることで実現できるんですね。
list($aaa , $bbb) = func();
で、戻り値が2つの関数funcの戻り値を受ける事ができる。
またfuncの引数には値が2つの配列を設定して返してもいいし、配列の入った変数を2つ返す事も可能だと。

まず配列が入った変数を返す事が出来るのを知らなかったので勉強になった!
C言語なら戻り値に構造体を使えば複数の値を返す事が可能だけど、phpってどうやればいいんだろうか?と思ってたのがやっと解決した!
やっぱり本は色々読むべきだな?。

久々にphpのお話でした。
(さらに…)

カレンダーは小休止

水曜日, 9月 20th, 2006

ってどれだけ休止してるんだよってのは置いておいて。

ついFTP使用出来ない場所でも「あ、このファイル編集したい」って思うことがあるんですよ。
そこで、出先からでもファイルの中身を更新する為の小ネタを作ってみました!

やりたい事は
1.ユーザ認証
2.フォルダの中身を読み込み、指定されたフォーマットのファイルのみ表示
3.選択されたファイルを読み込みテキストエリアに表示
4.変更を保存する
という流れ

ユーザ認証は単にソースの中に書いてあるユーザ名と比較を行うだけです。
アップロードされたファイルの中身を修正出来てしまうので、もっとセキュリティ上げた方が良いかも知れませんが・・・。
せめてユーザ名+パスワードぐらいセキュリティかけた方が良いかもしれない。

フォルダの中身を読み込むのは「opendir」関数を使用して行っています。
引数にパスを渡す事で、そのパスの中身のファイル名を読み込んでくれます。
そして変更かけても良いよ?と指定したフォーマット(html等)と、読み込んだファイル名を「strstr」関数を使用して比較を行い、一致する条件のみを表示しています。
読み込んだファイルの比較が全て終わったら「closedir」関数で読み込みを閉じることを忘れないように。<自分

選択されたファイルを「file」関数で読み込みテキストエリアに表示するときに、そのまま読み込んだ物をテキストエリアに突っ込んでいた為、ファイルの中にテキストエリアがあるとおかしな動きになっていました。
そこで表示する前に読み込んだ内容を「htmlspecialchars」関数を使ってエンティティー化してから表示するように修正しました。

変更した内容を保存するのは、お決まりのように「fopen」関数で引数に「w」を指定して内容を上書きするだけ。
上書きするのに確認しないとかちょっと無用心すぎる気もしますけど、これは使用する側が気をつければ良いのでそのままで。

このソースにファイルアップロード機能とか付ければ、写真とかも使える簡易的な日記帳みたいなの作れそうだな。
携帯に対応させれば意外と使えるかもしれないぞ。
ところで携帯でもSessionとか使えるんかな?
オレの携帯Cookieは使えないんだけど・・・。

酔っ払っているからか?

土曜日, 8月 5th, 2006

予定を削除する方法が分からない!
いや、Deleteを使えばデータベースからは削除できるんだけどさ・・・。

例えば間違えて1日に同じ予定を複数記載してしまった場合、日程や予定内容を使ってデータを消そうと思ってSQL文を作ると予定を複数消してしまう事になってしまう。
それじゃ駄目じゃん!
と言う訳で解決方法検討中。

多分DBに予定ナンバーを保存するフィールドを追加して、そのナンバーを使って予定を管理していくって方法で対応できるな。
他にもっと良い案がないかもうちょっと考えてみよう。

文字化け

土曜日, 7月 29th, 2006

何故か「予定」という文字を予定に保存して、カレンダーに表示させると文字化けが起きてしまいます。
今日はその回避についての方法を考えてました。

元々カレンダーを表示するときはDBから読み込んだ文字列をmb_convert_encoding関数を使用し「Shift-JIS」に変換してから表示していました。
そうする事でHTMLで記述した文字も、phpで表示する文字も文字化けすることなく表示できてたはずだったのですが・・・。

調べてみたのですが、XREAのDB内部はEUC-JPで保存されていました。
そこでDBへ保存するときに、文字コードを「Shift-JIS」から「EUC-JP」へ変換し、カレンダー表示をするときに再度「EUC-JP」から「Shift-JIS」に変換を行う事で「予定」という文字が化けることがなく表示できるようになりました。

この回避方法が正しいかは分からないのですが、文字化けは回避できるようになったので暫くはこのまま行こうと思います。
そんなんじゃ駄目!こうやって回避しなさいという方法があれば是非教えてください!

カレンダー公開してなかったw

土曜日, 7月 22nd, 2006

弄ったものを公開してないことに気がついたw
こちらにあります。

前回と比べて予定を読み込むようにしたのとかが見た目で分かる変更です。
あ、後セルの大きさも変わってますね。
予定を表示しようと思ったら元々のセルの大きさだと文字が全然表示できないことに気がついたので、サイズを少し大きくしてみました。

あ?進捗が悪いな?。
が???!!!っと思い切り作りこみたい・・・。