我有一个问题可能听起来有些混乱,但我会尽力解释我的问题。
我的sql数据库中有2个表:表1称为事件,表2称为结果
“事件”表包含有关过去计算机游戏匹配的条目
eg. EventID EventName EventDate Location
1 GG vs AU 04/08 Game room 1
“结果”表包含几乎相同的条目..但有关该单个条目的更多详细信息
eg. EventID MemberID Score Ranking
1 02 7(victory):5 1st
基本上,我将进入“事件”php文件,我将看到条目。 当我按下同一行中的任何条目时(例如,1,GGvsAU,04/08,Gameroom1),它会将我链接到结果表,这会给我更多关于该匹配的深入信息。 从那个例子来看,eventID是1所以当我按下同一行中的任何条目时,它会将我链接到results.php?EventID = 1
事件的php文件工作正常,所以很好..但是一旦我按下条目,它就链接到结果php文件。
我现在遇到的问题是使用Results php文件。当我按下Events.php中的条目时,它将我链接到results.php?EventID = 1,但它显示了数据库中的所有条目..我只想要EventID1的信息..
此外,是否可以根据下面的代码“隐藏”EventID和“ViewID”?
Events.php
<?
$pdo = new PDO('mysql:host=localhost;dbname=clubresults', 'root', '12345678');
#Set Error Mode to ERRMODE_EXCEPTION.
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $pdo->query('SELECT EventID, EventName, EventDate, Location from events');
$rowset = array();
if ($query) {
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
// Build array of rows
$rowset[] = $row;
}
// Output header first
$headrow = $rowset[0];
print("<table border=\"1\">\n<tr>\n");
// Use $rowset[0] to write the table heading
foreach ($headrow as $col => $val) {
printf("<th>%s</th>\n", $col);
}
print("</tr>");
// Then output table rows.
// Outer loop iterates over row
foreach ($rowset as $row) {
print("<tr>");
// Inner loop iterates over columns using $col => $val
foreach ($row as $col => $val) {
// We don't know your column names, but substitute the first column (the ID) for FIRSTCOL here
printf("<td><a href=\"listresults.php?EventID=%s\">%s</a></td>\n", $row['EventID'],$val);
}
print("</tr>");
}
}
print("</table>");
?>
Results.php(我遇到的问题)
<?
#Get the event id from $_GET
$int_event_id = $_GET["EventID"];
if((int)$int_event_id)
{
$pdo = new PDO('mysql:host=localhost;dbname=clubresults', 'root', '12345678');
#Set Error Mode to ERRMODE_EXCEPTION.
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $pdo->query('SELECT * from results WHERE EventID ='$int_event_id' ORDER By EventID ASC');
}
$rowset = array();
if ($query) {
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
// Build array of rows
$rowset[] = $row;
}
// Output header first
$headrow = $rowset[0];
print("<table border=\"1\">\n<tr>\n");
// Use $rowset[0] to write the table heading
foreach ($headrow as $col => $val) {
printf("<th>%s</th>\n", $col);
}
print("</tr>");
// Then output table rows.
// Outer loop iterates over row
foreach ($rowset as $row) {
print("<tr>");
// Inner loop iterates over columns using $col => $val
foreach ($row as $col => $val) {
// We don't know your column names, but substitute the first column (the ID) for FIRSTCOL here
printf("<td><a href=\"index.php?ID=%s\">%s</a></td>\n", $row['EventID'],$val);
}
print("</tr>");
}
}
print("</table>");
我非常感谢能帮助我解决这个问题的人! 非常感谢!
上次修改后使用verisimilitude的解决方案
答案 0 :(得分:1)
你走了。在“Results.php”中,您需要在查询中添加where子句,以仅显示特定事件ID的数据。所以检查下面的代码。
<? #Get the event id from $_GET $int_event_id = $_GET["EventID"]; if((int)$int_event_id) { $pdo = new PDO('mysql:host=localhost;dbname=clubresults', 'root', '12345678'); #Set Error Mode to ERRMODE_EXCEPTION. $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);你也在“events.php”中链接“listresults.php”,不确定它是否是拼写错误。它应该链接到“Results.php”吧?$query = $pdo->query("SELECT * from results WHERE EventID ='$int_event_id' ORDER By EventID ASC"); }
?>
答案 1 :(得分:1)
为了隐藏ListResults.php中的EventID和MemberID列,您可以简单地将它们排除在选择查询之外。
所以不是查询所有列(*):
SELECT * from results
查询这样的特定列:
SELECT Score, Ranking FROM results
在您的情况下,我怀疑您最终会想要会员名称,所以尝试类似:
SELECT Member.Name AS Name, Result.Score AS Score, Result.Ranking AS Ranking
FROM results
INNER JOIN members
ON results.MemberID = members.MemberID
WHERE results.EventID = '$int_event_id'
这样做是从成员表中获取成员名称,其中MemberID与结果匹配。