如何基于我的子查询构建php表单


How can I build up a php form based around my sub-query?

我正在构建一个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数组,这将导致更流畅的用户体验。