<form id="form1" name="form1" method="post" action="lab.php">
<label for="textfield">しょうゆ検索エンジン<br />
</label>
<input type="text" name="lab" value=""/>
<input type="submit" name="button" id="button" value="検索" />
</form><br>
<form id="form1" name="form1" method="post" action="lab.php">
<label for="textfield">成分エンジン<br />
</label>
<input type="text" name="lab" value="" />
<input type="submit" name="button" id="button" value="検索" />
</form>
このようなフォーム内に、例えば醤油検索エンジンに「キッコーマン 山さ」と入力したらsyouカラムから該当するデータを取り出し表示するにはどうしたら良いでしょうか?
フォームに「キッコーマン 山さ ヤマキ」
と入力したら
※3件あります
醤油:キッコーマン
成分:大豆、油
醤油:山さ
成分:大豆、塩
醤油:ヤマキ
成分:醤油
と表示したいです。簡単だろうと考えては見た物の、残念ながら解決に至らず質問した次第であります。よろしく願います。
あと、莫大な量を登録したいのでnum_rowsなどで
syounum=array("キッコーマン","山さ","ヤマキ")
等とphpに記述するのは避けたいです。よろしく願います。
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
この回答への補足
莫大な量をDBに登録します。油が入っているとか、PHPに記入せずに、「味噌」と検索されたら味噌の該当データを「グルタミン」と検索されたらグルタミンの該当データを取り出せるPHPにしたいのです。
補足日時:2011/10/14 19:08お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLのmaxで求めた値を変数に代...
-
IndexedDB を使ってファイルア...
-
Selenium Basicの件
-
JavaScriptでtabindexの変更っ...
-
Javascriptを使ってQRコード読...
-
ドラッグ & ドロップでのド...
-
jQueryで、複数条件の絞り込み機能
-
Jquery で on/offボタンの実装...
-
PHPで動的に生成されるcsvの、...
-
FullCalendar の複数月表示につ...
-
JavascriptからPHPへのAjax通信...
-
一定時間ごとに表示内容を切り...
-
jQueryを使いformでsubmitした...
-
Ajaxを使った検索サイト作成
-
jQueryを複数設置した場合の優...
-
jQuery3 reset()が効かない。
-
JQueryでAjax通信をキャンセル...
-
アコーディオンメニューをブラ...
-
読み込み開始から読み込み終了...
-
カンマ区切りのデータを配列に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javascriptを使ってQRコード読...
-
IndexedDB を使ってファイルア...
-
JavaScriptでtabindexの変更っ...
-
SQLのmaxで求めた値を変数に代...
-
ドラッグ & ドロップでのド...
-
Selenium Basicの件
-
パソコンで動くjavascriptがス...
-
<input>のvalue値をプルダウン...
-
inputタグ内にあるid属性の意味?
-
javascriptの計算結果をvalue=""に
-
メールを送信するボタンでOutlo...
-
テキストフォームにフォーカス...
-
チェックボックスとラジオボタ...
-
JQuery Datepickerについて
-
★大至急!JavaScriptのif文教え...
-
サイト内のデータを絞り込んで...
-
struts selectbox optionsColle...
-
Doctrineのjoinについて
-
ボタンクリックした際、id末尾...
-
Javascriptテキストの値で表示...
おすすめ情報