如何根据子查询构建php表单?

时间:2016-04-13 00:10:26

标签: php mysql

我正在构建一个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)

但是我需要在此周围构建一个表单,供用户使用。所以我需要一些列出艺术家名字的方法,然后点击它时,它会在表格上生成一个链接到他们点击的艺术家的旅行日期列表。我不知道在设置此表单方面从哪里开始。所以我想知道我是否可以就如何构建它获得一些建议或想法。

提前谢谢

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。