如何将数据库中两个表的连接条目显示为HTML表?

时间:2016-04-06 10:12:16

标签: mysql sql database database-design

希望你们一切顺利。

我有3个数据库表:

'Events' table with event ID, name and location'事件'表,包含事件ID,姓名和位置。

'Students' Table with StudentID, First Name, Last name, House and Year/grade'学生表'包含学生ID,姓,姓,住所和年级/等级。

an 'entries' table with StudentID, and two events that they choose to enroll in.带有StudentID的'条目'表,以及他们选择注册的两个事件。

如何创建允许我显示事件的SQL代码?例如,如果我想显示...

The year 7 girl's 100m run. 7岁女孩跑100米跑。

以与此类似的表格形式:

sample table with an empty space for people to manually write times in.示例表,其中有空的空间供人们手动写入时间。

我如何做到这一点,以便它接受来自组合框的输入并找到选择了此事件的学生(在Ev1或Ev2字段中)并将信息分布在3个不同的表中时将其列出?

这是我的代码,但我觉得它不起作用。

<?php 

//This gets all the other information from the form 
$id=$_POST['studID']; 
$event1=$_POST['event1']; 
$event2=$_POST['event2']; 

// Connects to your Database 
// require_once 'login.php';
$db_hostname = 'localhost';
$db_username = 'root';
$db_password = 'ITGS!!!';
$db_server=mysql_connect($db_hostname,$db_username,$db_password);

if(!$db_server) die("Unable to connect to MySQL" .mysql_error());

$db_database='sportsDay';

mysql_select_db($db_database,$db_server)
or die("Unable to connect to database. " .mysql_error()); 

$sql = "SELECT Entries.stID, Students.fName, Students.lName, Students.gender, Events.eventID

这是adminPage.php,这个:

if ($result->num_rows > 0) {
    echo "<table><tr><th>Name</th><th>House</th></tr>";
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>".$row["fName"]." ".$row["lName"]."</td><td>".$row["house"]."</td></tr>";
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn->close();

     ?> 

     <html>

     <body>
     </body>
     </html>

FROM Events INNER JOIN客户 ON Students.stID = Entries.stID; “;     $ result = $ db_server-&gt; query($ sql);

@media

是我的display.php。

1 个答案:

答案 0 :(得分:0)

Hanalei,我不知道你的问题究竟是什么,但我会假设您需要根据下拉列表值显示表格。因此,第一步是将此值转换为PHP文件。

您有SQL个查询:

$sql = "SELECT Entries.stID, 
Students.fName, Students.lName, Students.gender, 
Events.eventID
FROM Events INNER JOIN Customers ON Students.stID=Entries.stID; "; 
$result = $db_server->query($sql);

它应该如下所示,我没有看到一个名为customers的表格,我想你的意思是students。并且您在;选择查询中还有一个SQL

$sql = "SELECT Entries.stID, 
Students.fName, Students.lName, Students.gender, 
Events.eventID
FROM Events INNER JOIN Students ON Students.stID=Entries.stID"; 
$result = $db_server->query($sql);

现在,在HTML表单中,您有一些错误,每个删除列表都有一个ID,但服务器采用名称标记值,因此不是这一行:

<select id="Year">
<option value="7">Y7</option>
<option value="8">Y8</option>
<option value="9">Y9</option>
<option value="10">Y10</option>
<option value="11">Y11</option>
<option value="12">IB1</option>
<option value="13">IB2</option>
</select>

应该是这样的:

<select id="Year" name="Year">
<option value="7">Y7</option>
<option value="8">Y8</option>
<option value="9">Y9</option>
<option value="10">Y10</option>
<option value="11">Y11</option>
<option value="12">IB1</option>
<option value="13">IB2</option>
</select>

我已添加name="Year",现在$_POST['Year']将采用适当的值。

在每个下拉列表中添加name标记,您就可以将它们发送到PHP文件display.php中:

$year = $_POST['Year'];
$gender = $_POST['Gender'];
$event = $_POST['Event'];

$sql = "SELECT Entries.stID, 
Students.fName, Students.lName, Students.gender, 
Events.eventID
FROM Events INNER JOIN Students ON Students.stID=Entries.stID
WHERE Students.year = '.$year.' AND Student.gender = '.$gender.'"; 
$result = $db_server->query($sql);

你第一张桌子没有用外键连接到第二张桌子,所以我们无法加入JOIN以获得所有具有特定年份和性别的人应该参加他们的活动。

您应该考虑开始学习mysqli_PHP-PDO以获得更安全的数据。

我希望我能理解您所要求的内容,如果这对您没有帮助,您可以通过电子邮件寻求更多帮助。