• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:簡単な検索エンジンの作り方)

簡単な検索エンジンの作り方

このQ&Aのポイント
  • 醤油検索エンジンの作り方とは?
  • 醤油検索エンジンにキーワードを入力して該当するデータを表示する方法
  • PHPでnum_rowsを使用せずに大量のデータを登録する方法

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

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

#2です >「味噌」と検索されたら味噌の該当データを >「グルタミン」と検索されたらグルタミンの該当データを取り出せるPHPにしたいのです。 そういうソースを提示していますが、SQLは使わないという意味ですか? ごめん、いつもながらなにがいいたいかわからないや

noname#142312
質問者

お礼

とりあえず参考書で解決しました。ありがとうございました。

その他の回答 (2)

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

いつも疑問におもうのだが本当に覚える気がある? まずPHPからSQLにデータを渡すやり方はおいといて SQLとしてどうやって絞り込みをするかから勉強しなさい PHPとの絡みはそれからだ。 ○データの持ち方 //メーカーテーブル create table t_maker(id int not null primary key,name varchar(30)); insert into t_maker values(1,'キッコーマン'),(2,'山さ'),(3,'ヤマキ'),(4,'ヒゲタ醤油'),(5,'ヒガシマル醤油'); //成分テーブル create table t_seibun(id int not null primary key,name varchar(30)); insert into t_seibun values(1,'大豆'),(2,'塩'),(3,'油'),(4,'酒'),(5,'魚粉'); //メーカー・成分テーブル create table t_maker_seibun(maker_id int,seibun_id int,unique key (maker_id ,seibun_id )); insert into t_maker_seibun values(1,1),(1,2),(2,1),(2,3),(3,1),(3,2),(3,4),(4,1),(4,2),(4,3),(5,4),(5,5); ○結果 //とりあえず全通り組合せ select maker_id,m.name as maker_name,group_concat(s.name order by s.id) as seibun_names from t_maker_seibun as ms inner join t_maker as m on ms.maker_id=m.id inner join t_seibun as s on ms.seibun_id=s.id group by maker_id; //メーカーが「山さ」か「ヤマキ」 select maker_id,m.name as maker_name,group_concat(s.name order by s.id) as seibun_names from t_maker_seibun as ms inner join t_maker as m on ms.maker_id=m.id and m.name in('山さ','ヤマキ') inner join t_seibun as s on ms.seibun_id=s.id group by maker_id; //成分に「塩」か「油」の少なくともどちらかが入っている select maker_id,m.name as maker_name,group_concat(s.name order by s.id) as seibun_names from t_maker_seibun as ms inner join t_maker as m on ms.maker_id=m.id inner join t_seibun as s on ms.seibun_id=s.id where maker_id in ( select maker_id from t_seibun inner join t_maker_seibun on seibun_id=id and name in('塩','油') ) group by maker_id //成分に「大豆」がはいっていない select maker_id,m.name as maker_name,group_concat(s.name order by s.id) as seibun_names from t_maker_seibun as ms inner join t_maker as m on ms.maker_id=m.id inner join t_seibun as s on ms.seibun_id=s.id where not maker_id in ( select maker_id from t_seibun inner join t_maker_seibun on seibun_id=id and name in('大豆') group by maker_id ) group by maker_id //成分に「大豆」かつ「油」の両方が入っている select maker_id,m.name as maker_name,group_concat(s.name order by s.id) as seibun_names from t_maker_seibun as ms inner join t_maker as m on ms.maker_id=m.id inner join t_seibun as s on ms.seibun_id=s.id where maker_id in ( select maker_id from t_seibun inner join t_maker_seibun on seibun_id=id and name in('大豆','油') group by maker_id having count(maker_id) =2 ) group by maker_id

noname#142312
質問者

補足

莫大な量をDBに登録します。油が入っているとか、PHPに記入せずに、「味噌」と検索されたら味噌の該当データを「グルタミン」と検索されたらグルタミンの該当データを取り出せるPHPにしたいのです。

  • foreach
  • ベストアンサー率51% (43/84)
回答No.1

>莫大な量を登録したいので データベースを使うべきでは? DBならLIKE検索で簡単に実装できると思いますよ。

noname#142312
質問者

補足

簡単ですか? ポスト(name="syou")で送信 phpで $syou=$_POST['syou'] で受信 select * from kensaku where '%$syou%' で検索したら良いですか?