最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

カウンタ

おすすめ本

AccRanking

カテゴリ「PHP」の22件の記事 Feed

2018年3月16日 (金)

【PHP】画像BMPファイルの変換で「imagecreatefromwbmp」が動作しない

画像ファイルのアップロードでBMPファイルをJPGに変換する時に imagecreatefromwbmpを使ったがうまくいかない現象が発生しました。
以下の様なソースで、画像ファイルの種類としては「jpeg」「bmp」「png」「gif」を 対象としていたのですが、「bmp」用の関数「imagecreatefromwbmp」がうまく動作しませんでした。 何度やってもうまくいかないので、PHPの正式な関数の説明書を見ると 以下の関数の投稿が載っていました。
ダメもとで一度この関数で行うと取り敢えず処理がうまくいったのでこれでOKとしました。

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

2018年3月 9日 (金)

【PHP】Parse error: syntax error, unexpected 'private' エラーが出る時

今日は、またまた簡単なエラーの件で恐縮ですが、 以下のソースで、「L_test()」の宣言でタイトルのエラーが発生しました。

「処理A」「処理B」共に長い処理だったので、なかなか見つからなかったのですが、 よくよく見ると、「switch」文の閉じる括弧「}」がありません。
こんな簡単なところにバグが潜んでいました。
論理的には問題無い様な感じだったので、括弧「{}」の対応をチェックするのを怠っていました。 完全にケアレスミスでした。

「unexpected 'private'」などと表示されたので、てっきり他の部分を疑っていましたが、 もっとソースをよく見るべきでした。

タイトルの様なエラーが出たら、一度処理の括りの括弧「{}」の対応を確認してみては 如何でしょうか。

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

2018年2月27日 (火)

【PHP】「Parse error: syntax error, unexpected …」の行番号にエラーが無い場合

表示される行番号にはエラーが無く、他の部分にエラーが在る場合が多いです。

例えば、if文などの{(中括弧)の閉じ忘れなどがあります。

また、今回くだらないミスを起こしたのですが、変数名の先頭の【$】ドルマークを忘れたことです。
長い変数名を使用していて、他の所からのコピペでささっとソースを直したら 【$】ドルマークをつけるのを忘れていて、解決するまで30分も掛かってしまいました。

{(中括弧)の閉じ忘れを中心に見直していたのですが、人間正しいと思いこむと 簡単な変数の【$】ドルマークを忘れるものです。笑ってやってください。
皆さんもくれぐれも変数の先頭の【$】ドルマークを忘れませんように。

尚、エラーの部分を特定する方法としては、 エラーが起きている部分を含む大まかなところで、 【/**/】コメントにしてエラーが出ない様にしてから、 順次内側にコメント部分を狭めていき見つける様にしています。

転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】

2011年8月30日 (火)

PHPでエクセルファイル処理

今回はPHPでエクセルファイルの読み書きができるオープンソースの紹介をしたいと思います。

先ず、PHPExcelを以下のサイトの「Downloads」の「Recommended Download」より取得します。
最新のバージョンはPHPExcel 1.7.6の様です。

http://phpexcel.codeplex.com/

尚、動作条件としてはPHPのバージョンは5.2.0以上で、「zip」「xml」「gd」のPHP用ライブラリが必要の様です。 (zipはzipファイルの生成等が無ければいらない様です)


ダウンロードしたzipファイルを「htdocs/excel/」のディレクトリに展開しました。
展開したディレクトリは以下の様になります。

・htdocs/excel/Classes       :PHPExcelのライブラリ
・htdocs/excel/Documentation :PHPExcelのドキュメント
・htdocs/excel/Tests         :PHPExcelの各種サンプルソース

ドキュメントは英語ですが、一通りの説明がなされていて、一応使える感じでした。

私の環境ではlocalhostでのテストを行いましたので、
htdocs/test/test.phpとして以下のソースで簡単なエクセルファイルを出力するプログラムで確認しました。


ソースをみれば、結構簡単にエクセルが出力できています。
ファイルの出力形式は「Excel2007形式」「Excel95形式」「CSV」等があります。


尚、最後の書込のところを以下の様にすれば、ブラウザでのダウンロードができます。


2011年8月23日 (火)

PHPでPDF出力

PHPでPDFファイルを出力する必要があり、調べてみたところTCPDFというオープンソースがありました。

TCPDFはFPDFをベースに拡張されたものらしい。
ソースのダウンロードは以下のサイトから最新のものが取得できます。

http://sourceforge.net/projects/tcpdf/files/


現状では「tcpdf_5_9_112.zip」が最新のようです。

このZIPファイルをサイトのディレクトリに展開します。
今回は、「htdocs/tcpdf/」のディレクトリにしました。

簡単なPDF出力を行うプログラムを作成してみました。

「htdocs/test/test1.php」に以下のソースを保存し、実行します。
(ローカル環境で行うため、http://localhost/test/test1.phpでの実行)


割と簡単にPDF出力できるので、今後の仕事で利用価値がありそうです。

また、いろいろテストしてからTCPDFについて書きます。


楽天市場

2011年4月26日 (火)

submitとフォーム変数について

submitとPHPに渡されてくるフォーム変数について、すこし調べてみました。

以下の様に1個のHTMLソースの中で複数のフォームを宣言することができます。
このソースは、それぞれのsubmitボタンをクリックするとそれぞれのフォーム内の"data"がフォーム変数として渡されます。
dataの値により、それぞれの処理を行うことができます。

フォームを複数宣言するのはどうかと思われる方は、以下の様な方法もあります。
この場合の動作は、クリックされたボタンの名前が$_POSTの添え字となり値は"送信"が渡されます。
このボタンの動作で何かの処理を行う場合は、添え字の値に従って、処理を分けることでできると思います。

以下の様なソースで実現可能かと思います。

2011年4月25日 (月)

checkboxとフォーム変数について

checkboxとPHPに渡されてくるフォーム変数について、すこし調べてみました。

以下の様なPHPソースを実行させると、チェックを入れた一番下の値しかフォーム変数に渡されないことがわかります。
ラジオボタンの様な動作になっています。


ここでvalue="1"のcheckboxの前にhiddenを追加してみます。


この場合の動作は、チェックボックスに1個でもチェックがあれば、最後のチェックボックスの値が"foo"として 渡されますが、チェックが無ければhiddenの値である"0"が渡されます。
この方法を使えば、デフォルト値的なことができますが、少々イレギュラーな使い方ではあります。
通常は、isset($_POST["foo"]を調べれば同じことができますが。


チェックボックスの使い方であれば、以下の様にするのが一般的です。


ただし、この方法だとfooの配列としてフォーム変数が渡されますが、配列の添え字が詰まった形で渡されてきます。
twoとfourにチェックをして送信した場合は、フォーム変数が以下の様になります。
($_POSTをprint_r()関数で出力してもの)
$_POST:Array ( [foo] => Array ( [0] => 2 [1] => 4 ) [tx] => 送信 )

もし、添え字も値と合わせたいのであれば、以下の様にします。




この場合、twoとfourにチェックをして送信した場合は、フォーム変数が以下の様になります。

($_POSTをprint_r()関数で出力してもの)
$_POST:Array ( [foo] => Array ( [2] => 2 [4] => 4 ) [tx] => 送信 )

楽天市場

2011年4月18日 (月)

phpMyAdminでcreate functionではまったこと

MySQLで関数を作成する必要に迫られて今回初めて作成してみました。
処理の内容は、数値文字列で小数点以下の無駄な"0"を省く処理です。

実際の関数は下の様なものです。

このソースをそのままphpMyAdminのSQLを実行するボックスにコピーし、「実行する」ボタンを押下してもうまく作成されない。
よくよくネットで調べると、2行目のデリミタの設定命令などはmysqlをコマンドで起動しその中で行うようです。

phpMyAdminのSQL実行のボックスの下にデリミタという入力する部分があることに気が付き、ここに // を入力し、
上のソースの「create function...」から「end//」までを実行ソースのボックスにコピーし実行しました。
結果うまく作成することができました。

2011年4月16日 (土)

PHPでExifを扱う(PEL)

デジタルカメラや、携帯で撮影した画像のほとんどはJPEGファイルにして保存されます。
このJPEGファイルには各種の属性がEXIF(Exchangeable image file format)という規格で登録されています。このEXIF情報をPHPで扱う場合に、PHPの標準のEXIF関数を利用します。しかし、この関数には読み込みはあるのですが、書込みがありません。

そこで書込みのできるライブラリを探してみると、「PEL」というライブラリがありました。
このライブラリはフリーソフトでPHPのみで書かれていますし、 結構使えそうです。このライブラリは以下のURLからダウンロードができます。

http://pel.sourceforge.net/

このライブラリを利用した、EXIFを含んだ画像ファイルのリサイズの例を以下に示します。
(尚このソースはサンプルとして付属していたものを少し変更したものです)

楽天市場

2010年8月 3日 (火)

PHP5のソースをPHP4で動作させた時にはまったこと

最近、とあるPHP5で作成したプログラムをPHP4で動作させなければならなくなり、 早速そのソースをPHP4の動いてるサーバに移行しブラウザでアクセスしてみても 画面が真っ白になるだけでした。

そんなに難しい処理ではないので、ただソースをアップロードしてやれば動くだろうと高をくくっていました。
ちょっとあせってしまって、色々調べたら、クラスの書き方がPHP4とPHP5では違う様です。

その違いですが、以下の3点を直しました。

1.クラス内の変数にPrivate,Publicなどの修飾子は使用出来ないので、全てvarで宣言する。
  (PHP4では変数宣言は全てPublic扱いになる)

2.関数の宣言にもPrivateの修飾子を付けられない。
  (PHP4では関数宣言は全てPublic扱いになる)

3.クラスのコンストラクタはクラス名と同じ関数を用意する。

変更前のソース

変更後のソース

楽天市場