- ベストアンサー
PHP+MYSQLにおける画像表示について
- PHP+MYSQLにおける画像の表示についての質問です。現在、画像掲示板を作成中で、テーブルの作成と画像の保存は完了しました。しかし、画像の呼び出しのPHPを作成する際に問題が発生しています。1枚目の画像は表示されるのですが、2枚目以降は表示されません。同様の質問を見たり、コードを変更してみたりしましたが解決できませんでした。他に解決策があるか教えていただきたいです。
- PHP+MYSQLで画像を表示する際に問題が発生しています。テーブルには画像データが5つ保存されており、画像の呼び出しのPHPで表示させようとしています。しかし、1枚目の画像は表示されるのに、2枚目以降は表示されません。コードを変更してみたり、過去の質問を見てみたりしましたが解決策がわかりません。どうすれば解決できるのでしょうか?
- 画像掲示板を作成中で、PHP+MYSQLで画像の表示をしようとしています。テーブルには画像データが5つ保存されており、画像の呼び出しのPHPを作成しましたが、1枚目の画像は表示されるのに、2枚目以降は表示されません。他の方法を試したり、コードを変更してみたりしましたが解決できませんでした。どうすれば解決できるのか教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
このプログラムだとブラウザで1回アクセすると5枚の画像を出力することになりますよね。 でも、ブラウザはサーバ上の画像ファイルにアクセスした時、1枚の画像が返ってくることを期待しています。だから1枚しか画像が出ません。(HTTPでは1アクセス1ファイルです) しかも画像データと一緒にHTMLまで出力しているので、基本的には壊れたデータとして扱われてもしかたがありません。 まず、HTMLの出力と画像の出力を分けなければいけません。 HTMLは <html> <head> <title>コメント一覧</title> </head> <body> <p><img src="1枚目">コメント<p> <p><img src="2枚目">コメント<p> <p><img src="3枚目">コメント<p> <p><img src="4枚目">コメント<p> <p><img src="5枚目">コメント<p> </html> といった形が必要でしょうから、まずこれを出すプログラムを書きます。 次に別のPHPで作った画像を出力するためのプログラムを作り、imgタグのsrcにそのプログラムへのパスとGETメソッドで画像のIDを渡しましょう。 画像を出力するためのプログラムでは、GETメソッドで渡されたIDをキーにデータベースからpicture1を取り出し、その画像だけ出力させることで画像が表示できます。
その他の回答 (4)
- yambejp
- ベストアンサー率51% (3827/7415)
>1枚目の画像は表示されるものの、2枚目以降の画像が表示されません。 どういうロジックでしょうか・・・ 今やっているのは5枚分の画像データを冗長につなげてロードしているだけです 5枚の画像を表示したいなら、idを指定して呼び出せる画像ローダを用意し <img src="loader.php?id=1">のように呼び出すのが妥当です
お礼
NO.4の方と併せて読んで出来ました! ありがとうございました。 下記、今回成功したコードです。 $re=mysql_query("SELECT * FROM commentmaster join usermaster on commentmaster.userid = usermaster.id and commentmaster.threadnum = $threadnum"); while($kekka=mysql_fetch_array($re)){ print$kekka[1]." "; print$kekka[10]." "; print$kekka[11]." "; print$kekka[4]; print"<br>"; print$kekka[2]; print"<br>"; print"<img src='callpicture1.php?id=$kekka[0]'>\n"; }
- edomin7777
- ベストアンサー率40% (711/1750)
#1、2です。 解決に至らず、申し訳ない…。 実は私も数年前に同じようにheader()を出力して失敗したことがありました。 そのときは、header()を使わずにprint()でヘッダ部分を出力してなんとかしのいだような記憶がありますが、古い話で今はphpに触っていないので思い出せません。 m(_ _)m
お礼
とんでもありません。 こんなはやい時間からお手間をとらせてしまい、申し訳ありません。ありがとうございました。
- edomin7777
- ベストアンサー率40% (711/1750)
#1です。 取り敢えず、header()をwhile()の前に出してみたら?
お礼
重ね重ね、ありがとうございます。 headerの位置変更を試してみましたが、一枚しか表示がされませんでした。 併せて、後々のことを考えると、コメントも併せてレコード毎に表示しなければならず、headerを使用した方法では、どうも無理のようでした。別の方法が無いか調べて見ます。
- edomin7777
- ベストアンサー率40% (711/1750)
header()って、print()の後に出力したらエラーになりませんか? 一番最初に出力しなきゃ駄目だった気がするが…。 違っていたら、ごめんね~。
お礼
こんな、朝早くにお返事ありがとうございます。 httpdのエラーログを確認しましたら、確かにline12でエラーが出ていました。 では、どうやって機能を実現すべきか・・・。
お礼
出来ました。NO.5の方と併せて読んで出来ました!