我正在构建一个MySQL音乐数据库,使用我必须在我的php表单上构建很多函数来从数据库中获取数据并以特定方式输出。
一个这样的功能是列出艺术家正在表演的所有巡回演出。我还没有写出这个页面,这就是为什么我要求提出想法来帮助我设置基础来设置它。
我打算这样做的方式是让用户查看预设的艺术家列表,一旦他们突出显示他们的特定艺术家并单击按钮,页面就会加载并显示链接的相应游览日期那个艺术家。
我的数据库中的特定表的链接方式是这样的。
巡回表
此表包含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集获取特定的tourdates。但我需要将其合并到用户可以与之交互的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)
但是我需要在此周围构建一个表单,供用户使用。所以我需要一些列出艺术家名字的方法,然后点击它时,它会在表格上生成一个链接到他们点击的艺术家的旅行日期列表。我不知道在设置此表单方面从哪里开始。所以我想知道我是否可以就如何构建它获得一些建议或想法。
提前谢谢
答案 0 :(得分:0)
首先,如果您希望使用两个表并使用JOIN条件而不是使用子查询,则可以使用单个查询,因为您可以在一个查询中获取应该更容易放入PHP的所有数据变量
但是这两个表中的数据肯定可以合并为一个。
这也会删除子查询。拥有这样的两张桌子对我来说似乎没用,为什么你不能在"巡演日期"中获得巡回演出名称,日期和艺术家ID。表?将所有与旅游相关的数据放在一个表格中。
然后你就可以得到一个简单的查询:
SELECT Tourdate_id, Tour_Date, Country, Town, Venue
FROM tbl_Tourdate
WHERE artist_id = $id;
然后像这样使用PHP循环+ HTML表:
$tours = mysqli_query($dbdb, "SELECT Tourdate_id, Tour_Date, Country, Town, Venue FROM tbl_Tourdate WHERE artist_id = 'x'");
<table>
<thead>
<tr>
<th>Date</th>
<th>Country</th>
<th>Town</th>
<th>Venue</th>
</tr>
</thead>
<tbody><?
while(list($Date, $Country, $Town, $Venue) = mysqli_fetch_row($tours)){
echo"<tr>";
echo"<td>".$Date."</td>";
echo"<td>".$Country."</td>";
echo"<td>".$Town."</td>";
echo"<td>".$Venue."</td>";
echo"</tr>";
} ?>
</tbody>
</table>
$ dbdb需要是一个mysqli_connect构造。
查询中的$ id可以来自输入表单,也可以来自另一个PHP页面的GET请求。
无论如何,只是一个想法。
答案 1 :(得分:0)
我首先要创建表单布局,非常简单的开始会有以下几点:
<form action="lookup.php" method="post">
<input type="text" name="artist">
<input type="submit">
</form>
这会将一个艺术家的名字发送到您将在其上应用您的工作SQL查询的lookup.php脚本,该脚本将返回一个数组,该数组随后将以您以任何方式打印比如@ScottSmudger回答了实际打印包含查询结果的表的过程。
这是非常开始的基本方式,当然,稍后你想要进一步迭代,并且已经填充了艺术家名称的下拉列表,然后执行通过ajax查找并返回一个json数组,这将导致更精彩的UX。