希望你们一切都好。
我有 3 个数据库表:
和一个包含 StudentID 的“entries”表,以及他们选择参加的两个事件。
如何创建允许我显示事件的 SQL 代码?例如,如果我想显示...
以类似这张表格的形式:
我该怎么做,以便它接受来自组合框的输入并找到选择了此事件的学生(在 Ev1 或 Ev2 字段中)并将他们列出来,当信息分布在 3 个不同的表格中时?
这是我的代码,但我认为它不起作用。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Sports Day Lineup Generator</title>
</head>
<body>
Hello! What page would you like to see?<br><br>
<form id="form2" name="form2" method="POST" action="display.php">
<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="Gender"><option value="0">Girls</option><option value="1">Boys</option></select>
<select id="Event">
<option value="1">100m</option><option value="2 relay">100m Relay</option><option value="3">400m</option><option value="4">800m</option><option value="5">Indoor Sports</option><option value="6">High Jump</option><option value="7">Long Jump</option><option value="8">Triple Jump</option><option value="9">Shotput</option>
</select><br>
<input type="submit" value="generate">
</form>
OR <form id="form2" name="form2" method="POST" action="displayAll.php"><input type="submit" value="generate all tables"></form>
</body>
</html>
这是 adminPage.php,这是:
<?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
来自事件 INNER JOIN 客户 ON Students.stID=Entries.stID; "; $result = $db_server->query($sql);
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>
是我的 display.php。
最佳答案
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
以获得更安全的数据。
希望我能理解您的要求,如果这对您没有帮助,您可以通过电子邮件寻求更多帮助。
关于mysql - 如何将数据库中两个表中的连接条目显示为 HTML 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36448024/