私は、データベースからデータを取り出して特定の方法で出力するために、私のPHPフォーム上で多くの機能を構築しなければならないMySQLの音楽データベースを構築しています。サブクエリに基づいてPHPフォームを構築するにはどうすればよいですか?
このような機能の1つは、アーティストが演奏しているすべてのツアー日を一覧表示することです。私はまだページを書いていないので、これを設定するための基礎をレイアウトするのに役立つアイデアを求めています。
私がこれを動作させる方法は、ユーザーがあらかじめ設定されたアーティストリストを見て、特定のアーティストを強調表示してボタンをクリックすると、そのページが読み込まれ、対応するツアー日が表示されますそのアーティストへのリンク。
データベース内の特定のテーブルのリンク方法は次のとおりです。
ツアー表
この表はartist_idを保持し、特定のアーティストがやっているすべてのツアーを示しています。 (注:このテーブルには、ツアーはの一部である日付するツアーを、保持している)
CREATE TABLE `tbl_Tour` ( `Tour_id` int(11) NOT NULL auto_increment,
`Tour_Name` varchar(32) NOT NULL,
`Start_date` date NOT NULL,
`End_date` date NOT NULL,
`Artist_id` int(11) NOT NULL,
PRIMARY KEY (`Tour_id`), KEY `Artist_id` (`Artist_id`),
CONSTRAINT `tbl_Tour_ibfk_1`
FOREIGN KEY (`Artist_id`) REFERENCES `tbl_Artist` (`Artist_id`))
表ツアー日
このテーブルには、ツアー日程を保持している、の日付は、として行われツアーの一部は、私は特定のアーティストがやっているだろうと、すべてのツアー日程を参照したい(Tourdateはツアーリンクされているので、tourdateは直接それにリンクされartist_idていません。それはツアーを介して接続されている)
CREATE TABLE `tbl_Tourdate` ( `Tourdate_id` int(11) NOT NULL auto_increment,
`Tour_Date` date NOT NULL,
`Country` varchar(32) NOT NULL,
`Town` varchar(32) NOT NULL,
`Venue` varchar(32) NOT NULL,
`Tour_id` int(11) NOT NULL, PRIMARY KEY (`Tourdate_id`),
KEY `Tour_id` (`Tour_id`),
CONSTRAINT `tbl_Tourdate_ibfk_1`
FOREIGN KEY (`Tour_id`) REFERENCES `tbl_Tour` (`Tour_id`))
私は既に設定済みですartist_idセットに基づいて特定のツアー日を取得するために機能するサブクエリです。しかし、私はこれをユーザーが対話できるphp/htmlファイルに組み込む必要があります。
SELECT td.Tour_Date
FROM tbl_Tourdate td
WHERE td.Tour_id=(SELECT t.Tour_id
FROM tbl_Tour t
WHERE t.Artist_id=2)
しかし、私は単純に使用するためにユーザーのためにフォームを構築する必要があります。だから、アーティストの名前を列挙する手段が必要です。クリックすると、クリックしたアーティストにリンクされたツアーの日付のリストがフォーム上に生成されます。私はこのフォームを設定する点でどこから始めたらいいのか分かりません。だから私はそれを構築する方法に関するいくつかの提案やアイディアを得ることができるかどうか疑問に思っていた。
をとして、あなたが一つにすべてのデータを取得することができ、あなたは2つのテーブルを使用して、代わりにサブクエリを使用しての条件をJOINを使用したい場合は、単一のクエリを使用することができ、
これについてもっと明確にしてください:ツアーリストにはどのような表示が必要ですか?私はそれが形になっていることを知っていますが、人々はそれで何かを何かできるようにしなければなりませんか? - 一度に複数のアーティストを選択できると言っているのですか?この状況では、どのようなことが起こりますか? – NoobishPro
いいえ、それはアーティスト名をクリックするだけの方法であり、リンク先のツアーの日付をすべて一覧表示します。他には何も期待されていません。 –
私は、あなたがそのようなクエリを書くことができるときに、あなたはそのようなタスクを実行できると思います。または、ページが最初にリフレッシュすることを許可されていないことを意味しますか?その場合、私たちはajax(javascript/jquery)を話しています。ページの更新が許可されている場合は、PHPだけでそれを行うことができます。アーティストの名前については、私は 'select'要素をお勧めします。あなたはselect2のようなものを人がそれを検索できるように置くことができます。 - すみません、私には分かりません。 – NoobishPro