gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:21:55 25 4
gpt4 key购买 nike

希望你们一切都好。

我有 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 的“entries”表,以及他们选择参加的两个事件。

如何创建允许我显示事件的 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 个不同的表格中时?

这是我的代码,但我认为它不起作用。

<!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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com