• ベストアンサー

テキストファイルを経由しての画像呼び出し

はじめまして。 PHPをはじめてまだ間もない者ですが、行き詰ってしまいましたのでご質問させていただきたいと思います。 画像をアップロードする時に backimg.txt という名前でファイル名を取得しているのですが それを利用して画像を呼び出そうとしているのですがどうにも表示してくれません。 表示どころか、エラーが出てしまいます… ファイル構成・PHP部分は以下の通りです。 public_html ├─ index.php  ←ここの一部のプログラムです ├─  ・ ├─  ・ └─ background_img     ├─ backimg.txt  アップロードしたファイル名が記述     └─ test.jpg   アップロードした画像 <?php if(file_exists("background_img/backimg.txt")){ $fp = fopen("background_img/backimg.txt","r") or die("ファイルのオープンに失敗しました"); $buff = fgets($fp); fclose($fp); } echo'<img src="'.$buff.'" border="0">'; ?> ※この $buff = fgets($fp); の部分でエラーが出ます。 backimg.txt内の文字(UPする度、この一行を上書きしていってます) ──────────────────   background_img/test.jpg ────────────────── ※PHPでアップロードした画像は  background_img フォルダに入るようになっています。 ※画像名はまちまち変わりますので、 test.jpg 固定ではありません。 ※データベースを使えないサーバを利用しております。 以上の条件でどうやったら解決できるのか、 お手数おかけいたしますが、教えていただければ幸いに思います。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

<?php if(file_exists("background_img/backimg.txt")){ // ファイルの中身を配列で取得 $buff_array = array(); $buff_array = file("background_img/backimg.txt"); } // 末尾のデータのみほしい場合は配列の最後を取得 $buff = array_pop($buff_array); echo'<img src="'.$buff.'" border="0">'; ?> としては、いかがでしょうか?

5day
質問者

お礼

配列は考えたのですが、結局うまくできなかったので今の形(一行列を上書き)になった訳ですが…… 見ていて、なるほど!と思いました。 これなら今までUPしたファイルの形跡など、バックアップが残っていきますよね。勉強になりました。 もし同じような機会があれば、活用させていただきたいと思います。 ご回答ありがとうございました!

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

エラーの内容やPHPのバージョンも書いてもらえると回答しやすくなりますよ 推測ですがPHP4.1以前でしたらfgetsの引数が足りないので $buff = fgets($fp, 1024); のようにする必要があります。

5day
質問者

お礼

バージョンはご推測の通りPHP4.1以前でした。 Warning: Wrong parameter count for fgets() in …… 上記がエラー文になりますが、 後ろの 1024 を記述したら表示されるようになりました。 引数が足りない、というのが原因だったのですね。もっとちゃんと調べるべきでした。 御礼が遅くなりましたが、素早くご回答いただきありがとうございました。

専門家に質問してみよう