我正在构建一个MySQL音乐数据库,该数据库使用我必须在我的php表单上为构建许多函数,以从数据库中获取数据并以特定方式输出。
其中一个功能是列出艺术家正在进行的所有巡回演出。我还没有写下页面,这就是为什么我要寻求一些想法来帮助我布局一个基础。
我打算这样做的方式是让用户查看预设的艺术家列表,一旦他们突出显示自己的特定艺术家并单击按钮,页面就会加载并显示链接到该艺术家的相应巡演日期。
数据库中特定表的链接方式如下。
巡回表
此表包含artist_id,并列出特定艺术家正在进行的所有巡演。(注:此表包含旅行,其中旅行日期a是的一部分)
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`))
巡回演出日期
此表包含巡演日期,作为巡演的一部分进行的日期,我想参考特定艺术家将要进行的所有巡演日期(巡演日期与巡演相关,因此巡演日期中没有直接链接的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)
然而,我需要围绕这一点构建一个表单,供用户简单使用。所以我需要一些方法来列出艺术家的名字,然后当点击时,它会在表格上生成一个链接到他们点击的艺术家的巡演日期列表。我不知道从哪里开始设置这个表格。所以我想知道我是否可以得到一些关于如何构建它的建议或想法。
提前感谢
首先,如果您希望使用两个表并使用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请求。
无论如何,这只是个主意。
我将从创建表单布局开始,一个非常简单的开始将沿着以下几行:
<form action="lookup.php" method="post">
<input type="text" name="artist">
<input type="submit">
</form>
这将把一个艺术家的名字发送到一个lookup.php脚本中,您将在该脚本上应用您的工作sql查询,该脚本将返回一个数组,该数组随后将以您想要的任何方式打印,@ScottSmudger的答案将经过实际打印带有查询结果的表的过程。
这是一个VERY的基本入门方法,当然,稍后您需要进一步迭代,并在下拉列表中填写艺术家名称,然后通过ajax执行查找,并返回一个json数组,这将导致更流畅的用户体验。