• ベストアンサー

PHP+MySQL でDB検索し画像の表示

はじめまして。他の方も同様の質問をされていますが、PHPの初心者のせいか要領を得ず、うまく結果を出せずにいます。下記の件につきまして、どなたか教えていただけないでしょうか。 <やりたいこと> 1.PHPで検索ワードに該当する商品の画像を表示したい。 <既にできていること> 1.検索ワードに該当する文字データの表示。 2.商品画像の画像名をMySQLのgameというテーブルの Picというフィールドに、abc.jpgというような名称でデータの保存。 他に必要な情報があれば、あわせて教えていただけないでしょうか。何を説明すべきかも分からないような初心者です。よろしくお願いいたします。

  • PHP
  • 回答数7
  • ありがとう数5

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

  • ベストアンサー
  • 39jin
  • ベストアンサー率34% (125/359)
回答No.7

本屋さんへ行くと 「PHP実践のツボ」という本があります ¥2,400 頁21から頁37までをまずは一読してみてください

samuraiboy2006
質問者

お礼

どうもありがとうございました。参考にさせていただきたいと思います。

その他の回答 (6)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.6

ネタですか?(^^; もし本気なら業者に依頼しましょう…

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.5

><?php >SELECT Pic FROM game WHERE word~'".$keyword."' ><img src="./pic/talkman.jpg">; >?> これは本気でこのソースをPHPで実行したのでしょうか? 画像名を抜き出す以前に、PHPからMySQLへの接続 の仕方はご理解なさっていますか? SQLを発行して、戻り値の得るところで詰まっている ように見受けられます。 その辺は基本なので、まず座学でどうやって MySQLへアクセスするか、書籍やWEBで確認してから 応用的な質問をなさってください。

samuraiboy2006
質問者

お礼

どうもありがとうございました。もう少し、自分なりに勉強してみます。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.4

table game: Pic text word text とあるとします。 キーワード検索で、picのファイル名を取得すればいいだけではないですか? SELECT Pic FROM game WHERE word~'".$keyword."' それで、表示するときに<img src>タグで出力… これだけではないでしょうか? もしNo1で私が書いてある他の方法で画像ファイルを保存しているんであれば、別ですが・・

samuraiboy2006
質問者

補足

何度もお手数をお掛けしてしまい、申し訳ありません。下記のように書いてみましたが、エラーになってしまいます。教えていただいた通りにやってみたつもりですが、うまく行きません。何がいけないのでしょうか。 <?php SELECT Pic FROM game WHERE word~'".$keyword."' <img src="./pic/talkman.jpg">; ?> よろしくお願いいたします。

  • 39jin
  • ベストアンサー率34% (125/359)
回答No.3

技術的な技法は解りませんが・・ 文字データと同じ横並びのフィールドに画像名が登録されて居るならば、ID(no)を取得して、画像のみを表示をさせれば良し、検索文字も表示したければ同時に表示と指示すれば出来そうですが 自分の場合は指定された場所に画像データはコピーされるような状態で保存されていますので可能です MySQL+PHPです。参考までに

samuraiboy2006
質問者

補足

ご回答をいただきまして、ありがとうございます。よろしければ、どのようにphpを書いたら良いか、教えていただけないでしょうか。お手数をお掛けいたしますが、よろしくお願いいたします。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

???(^^; 根本的に勘違いしてるのかな…(^^; コマンドライン版PHPで、ローカルで使いたいって事しょうか? もしWebサーバー上にあるのであれば、画像は当然UP市内とダメですよ? 多分、 >3.httpではアクセス不可なディレクトリに保存してある。 だと思いますが、それならDBには、ファイル名しか保存してないと言うことですよね? であれば普通にファイル名を取得して、<img src="./pic/abc.jpg">でいいんじゃないですか?

samuraiboy2006
質問者

補足

何度も要領を得ずに申し訳ありません。やりたい事のイメージは、www.amazon.co.jp の検索をすると書籍なりゲームなりの商品の詳細と写真が出てくると思いますが、あのように写真を検索キーワードから表示させたいです。ご教示をお願いいたします。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

画像本体はどうやって、どこに保存してあるのですか? 1.base64でエンコードして、DBに保存してある。 2.httpでアクセス可能なディレクトリに保存してある。 3.httpではアクセス不可なディレクトリに保存してある。 以上のどれかでしょうか? それとも、これくらいしか思いつき来ませんが他にも何かありますか?

samuraiboy2006
質問者

補足

早速のご回答をいただきまして、ありがとうございます。ご指摘の件ですが、他のホームページ素材のphpやhtmlを保存してあるローカルホスト(?)内のフォルダに保存してあります。他に情報が必要でしたら、ご連絡をお願いいたします。

関連するQ&A

  • PHP/MySQLであいまい検索を

    HP上のテキストボックスに文字を入力し、その値をPHPでMySQL上のデータベースよりあいまい検索をし 該当するデータを表示したいのですが、私の検索キーワードが悪いのか、いいサンプルソースが見つけられません。 MySQLのREGEXP関数を使ってあいまい検索を 行うサンプルは見つけたんですが、これは日本語対応では なく検索文字列によってはうまく検索できない場合が あると聞きました。 何かよいサンプルがあったらURLもしくは ソースをそのままで結構ですので貼り付けていただければ 助かります。 では、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mysqlに保存した画像の表示がうまくいかない

    phpとmysqlで検索システムを作っています。 今回、mysqlにテキストデータと一緒に画像も保存し検索結果を表示する時に画像も一緒に表示されるようにしたいと考えています。 ひとまずテキストデータは問題なく保存、検索、表示ともに正常に動作していますが、画像がどうしてもうまく表示されません。 DB内を確認してみると、保存はきちんとされているようなのですが。 わかる方がいらっしゃいましたら、アドバイスをいただけないでしょうか? 以下にコードの内容を記載します。テキストデータは正常に動作するので、画像の表示に関する部分だけ記載させて頂きます。 ※検索結果の該当フィールドのidをキーとして渡して、該当するidの画像(DB内のimage1)を表示する。 よろしくお願いします。 【mysqlテーブル】 create table entries ( id int not null auto_increment primary key, name varchar(255), address varchar(255), image1 MEDIUMBLOB NOT NULL, image2 MEDIUMBLOB NOT NULL, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 【result.php】 //画像表示箇所 <?php echo '<img src="get_image.php?id=' . $row['id'] . '">' ?> 【get_image.php】 <?php $id = $_GET['id']; header('Content-Type: image/jpg'); echo $row['image1']; ?>

    • ベストアンサー
    • PHP
  • PHP・MySQLでの画像保存方法

    初めまして。PHP・MySQLの初心者で大変恐縮ではございますが、 ご質問させていただきます。 MySQLに画像を保存する際に、方法としてDBに 直接登録する方法(BLOB型)とディレクトリに画像を 格納する方法とがあると思うのですが、 画像を呼び出す際に、この二つの方法によって できる事やできない事、またメリットやデメリットというのもは どういったものなのでしょうか? 当方の目的としましては、フリーワード等での検索や商品の比較、 買い物かごの制作等を今のところ視野に入れていますが、 この3つの目的以外にも、今後制作して行く上での 参考にできればと考えております。 お力を貸していただければ大変嬉しく思いますので、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • PHPとMySQLについて

    PHPとMySQLについて PHP、MySQLともに初心者の者です。 ネットの情報を参考に以下のようなプログラムを作成しました。 <?php //ファイルを読み込み require_once("DB47.php"); // クエリを送信する $sql = "SELECT * FROM japanDB ORDER BY PREF_CD"; $result = executeQuery($sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //表示するデータを作成 if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "".$row["PREF_CD"]." ".$row["PREF_NAME"]." "; $tempHtml .= "\n"; } $msg = $rows."件のデータがあります。\n\n"; }else{ $msg = "データがありません。\n\n"; } //結果保持用メモリを開放する mysql_free_result($result); ?> <?= $msg ?> <?= $tempHtml ?> これはデータベースに 1、北海道 2、青森 ・  ・ ・  ・ ・  ・ 47、沖縄 といった情報を与えており、PHP側でMySQLに接続し、その内容をコマンドプロンプト上で表示するといったものです。 しかし、PHPプログラムを実行してしまうと、全データが一気に表示されてしまうので、見づらいものとなっています。 そこで、地名や番号を入力すれば、地名を表示するような検索機能を付けたいのですが、PHPからMySQLデータベース内を検索する方法が分かりません。検索機能をこのプログラムに組み込みたいのですが・・・。 どなたかご教授お願いいたします。 ***環境*** OS : Windows XP Pro PHP4.2.3 、MySQLインストール済み **********

    • ベストアンサー
    • PHP
  • PHP + MySQL で画像データ表示

    PHP5 + MySQLでホームページを作成しております。 画像をバイナリデータでDBに登録するとことまではできたのですが、その画像データをどうやってテンプレートに表示させるかがよく分からず、質問させていただきます。 環境は下記の通りです。 ======================= サーバ:CentOS5.4(i386版) ※Apache、PHP5、MySQL、phpMyAdminはインストール済み 使用言語XHTML、CSS、JavaScript、PHP、MySQL(それぞれ別ファイルで作成しております) ======================= 現在までできている内容としては、 テンプレートのフォーム <input type="file" name="upload_img"></input> から画像を選択して、PHP側で$_FILEで受け取った後に 画像専用のテーブル カラム名:USER_IMG データ型:MIDIUMBLOB に受け取った画像のバイナリデータをinsertするところまでです。 この後に、そのバイナリデータをテンプレート上に表示させたいのですが、その方法がよく分かりません。 この質問をする事前に、参考になりそうなサイトをいくつか調べていて、 ・テーブルには画像以外にMIMEタイプを入れるカラムを用意して、MIMEタイプをもとにheaderのContent-typeを指定する ・Content-type: text/html; でも一応画像を表示させることはできる ということは分かりました。 ですが、今作っているテーブルにinsertした画像を表示させるhtmlは Content-type: text/html で作成しており、そのテンプレート内に <img src="画像パス/画像名.gif"></img> といった形で表示させたい場合に、画像のパスはどうやって指定してあげたらよいのか分かりません。 また、そのページのContent-typeは Content-type: text/html ではなく、MIMEタイプから対応したContent-typeにした方が良いのでしょうか? お分かりになる方いらっしゃいましたら、ご教授のほどお願い致します。

    • ベストアンサー
    • PHP
  • PHP、MySQLで動作する検索プログラム

    プログラミング初級者です。 Windows環境で、PHP、データベースMySQLにて、検索サイトを練習で作っていますが、フリーで何か良い検索エンジンのプログラムはありますか? 書籍の検索サイトをつくっていまして、商品データは4万、商品のタイトルは長くても30文字、説明文は長いもので1000文字くらいのデータで、検索クエリに対して、単純にSQL文、LIKEでタイトルか説明文にワードが含まれているもの(ヒットしたもの)を画面に表示できるようにはなりました。 一応動くことが確認できたので、商品数を15万にふやしたところ、いきなり動作が重くなり、タイムアウトで画面が表示されなくなってしまいました。 SQL分のLIKEで呼び出すには処理能力に限界があり、ちゃんとした検索プログラムを組み込まないと高速に処理できないのかな?と思っています。 (そもそも、組み込んで使えるようなプログラムがあるのかもわかりませんが。。) 最終的には300万商品くらいは検索できるサイトにしたいと思ってまして、何か良いフリーの検索プログラムや、参考になりそうな書籍があれば是非ご紹介お願いいたします。 初級者なので、適切な質問になっていないかもしれませんが、お分かりのかた、アドバイスくださいませ。

    • ベストアンサー
    • PHP
  • PHPでMySQLのデータを検索したい

    お世話になります。 PHPでMySQLのデータを検索したいと思い、 以下のようにしてみたのですがうまく表示されません。 -- $name = $_POST["name"]; $link = mysql_connect('localhost', '', ''); $db_selected = mysql_select_db('', $link); mysql_set_charset('utf8'); $sql = "SELECT * FROM search WHERE". $name; $result = mysql_query($sql); while($row = mysql_fetch_array($name)) { print $row['name']; } $close_flag = mysql_close($link); -- どう改善すればいいのでしょうか? 初心者の為、少々お見苦しい点があるかと思いますが どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • DBの画像をブラウザ表示 <PHP+MySQL>

    お世話になります。 現在PHPの勉強をしているのですが、データベースにアップロードした画像をPHPで表示できずに躓いています。 教えてgooの同類の過去ログなどを検索し試してみましたが、成功しませんでした。 一度書籍を購入して勉強したいと思うのですが、DBにアップロードされた画像を表示する方法を詳しく解説している書籍・お勧めの書籍がありましたらご教示ください。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • MYSQLでPHPから画像表示したい

    以下でPHPとMYSQLにて画像jpgを表示できたのですが、 header("Content-type: image/jpeg"); $result = mysql_query("SELECT * FROM test"); $row = mysql_fetch_assoc($result); print ($row['image']);これだけなら表示OK。 しかし、 テーブルタグの中にprint ($row['image']);をいれたり while文で囲んだりすると、文字の羅列になってしまいます。好きな場所にprint ($row['image']);で表示するには どうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHP+MySQLでの検索結果の横並び表示について

    PHP+MySQLでデータベース作成をはじめた初心者です。 検索結果を横並びにしたかったので他ページを参考にやってみました。 横に並べられるようにはなったのですが、検索結果を横並びで、かつ、4こならべると次の行にうつる方法はどうすればいいのでしょうか? データひとつを■とすると ■■■<改行> ■■■<改行> ■■■<改行> といった感じです。 よろしくお願いいたします。 <?php $host = "localhost"; if (!$conn = mysql_connect($host, "ユーザー", "パス")){ die("MySQL接続エラー.<br />"); } mysql_select_db("データベース名", $conn); $sql = "SELECT * FROM 01_table WHERE on ='1'"; $res = mysql_query($sql,$conn); print("<tr>"); while($row = mysql_fetch_array($res)) { print("<td>".$row["■"]); print("</td>"); } mysql_free_result($res); ?> print("</tr>");

    • ベストアンサー
    • PHP

専門家に質問してみよう