gpt4 book ai didi

php - 我怎样才能减少我的 php 代码来循环我的 html 表格代码?

转载 作者:行者123 更新时间:2023-11-29 03:17:38 24 4
gpt4 key购买 nike

我希望有人能帮助我进行 PHP 编码。这是我正在尝试做的事情:

我在我的高中经营一个视频游戏俱乐部,今年我们有 121 名成员(约 900 名学生的学校中最大的俱乐部)。逆向游戏对他们中的许多人来说都很受欢迎,并引发了关于拥有排行榜的讨论。所以很早就意识到不断更新 HTML 文件是荒谬的,并决定设置一个 mysql 数据库,在该数据库中,可以将高分尝试输入表格(仅限我)并填充到网页中。所述网页为每个游戏标题都有一个表格,以及数据库中的前 3 个分数。到目前为止,这部分工作得很好。我的数据库模式是这样的:

表 1(“游戏系统”):

  • gamesystems_id(主键,AI)
  • 游戏系统 (varchar(30))(例如 Atari 2600、NES、Colecovision 等)

表 2:(“游戏”)

  • games_id(主键,AI)
  • gamesystems_id(外键)
  • 游戏 (varchar(30))(例如 Frogger、Crazy Taxi 等)

表 3:(“solo_leaderboard”)

  • id(主键,AI)
  • 游戏系统(varchar(30))
  • 游戏(varchar(30))
  • 名称(可变字符(30))
  • 分数(整数(10))
  • 日期(日期)
  • gradelevel (varchar(5))(如果不是学生,则 varchar 为 N/A)
  • whois (enum('student', 'teacher', 'administrator', 'other'))

好的。也许不完美,但这个模式目前有效。我可以添加数据和提取数据,并将其发布到我网站上的 php 页面。下面是我现在发布的 2 个游戏的代码。这个问题应该很明显;我必须为每个要发布高分的新游戏添加 30 多行代码。这是荒谬的。我没有很强的 mysql 或 php 背景,但多年前我花了很多时间编写 C++ 和 Python。我认为应该有一种 NESTED 循环的方法,它可以一个接一个地拉动每个游戏系统(表 1),并为所述系统的每个游戏(表 2)创建一个表,并用前 3 名的分数填充网页来自个人排行榜(表 3)。不幸的是,我不知道如何做到这一点。这就是我来这里的原因。有什么想法吗?

<?php
$servername="localhost";
$username="strickho_leader";
$password="***********";
$database="strickho_leaderboards";

echo "
<body style='background-color:powderblue'; 'text-align:center';>
<h1 style='color:black'; 'font-size:300%'; 'text-align:center';>Benton Central M.A.G.I. Gaming Leaderboard</h1>
</body>";

//Create Connection
$conn = new mysqli($servername, $username, $password, $database);

//FREEWAY
//*****************************************
$result = mysqli_query($conn,"SELECT * FROM solo_leaderboard WHERE game LIKE '%Freeway%' ORDER BY score DESC LIMIT 3");

echo "<table style='text-align:center'; border='1';>
<tr>
<th colspan='5'>Freeway</th>
</tr>
<tr>
<th colspan='5'><img src='https://www.mobygames.com/images/covers/l/20735-freeway-atari-2600-front-cover.jpg' height='200' width='145'></th>
</tr>
<tr>
<th>Name</th>
<th>Score</th>
<th>Date</th>
<th>Grade</th>
<th>Role</th>
</tr>";

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['name'] . "</td>";
echo "<td><b>" . $row['score'] . "</b></td>";
echo "<td>" . $row['date'] . "</td>";
echo "<td>" . $row['gradelevel'] . "</td>";
echo "<td>" . $row['whois'] . "</td>";
echo "</tr>";
}
echo "</table><br><br>";
//*******************************************
//END FREEWAY


//CRAZY TAXI
//*****************************************
$result = mysqli_query($conn,"SELECT * FROM solo_leaderboard WHERE game LIKE '%Crazy Taxi%' ORDER BY score DESC LIMIT 3");

echo "<table style='text-align:center'; border='1';>
<tr>
<th colspan='5'>Crazy Taxi</th>
</tr>
<tr>
<th colspan='5'><img src='https://www.mobygames.com/images/covers/l/5801-crazy-taxi-dreamcast-front-cover.jpg' height='200' width='200'></th>
</tr>
<tr>
<th>Name</th>
<th>Score</th>

最佳答案

您可以进行一个通用查询来检索所有游戏的数据,然后循环遍历它,而不是针对每个游戏进行一次查询。它实际上是两个查询,但这两个查询应该处理所有的工作。我的建议需要对您的表格进行一些更改,我将引导您完成。

第一个查询:

SELECT * from games

只是 games 表。没有其他的。然后获取该结果(每行一个游戏)并使用 foreach 循环遍历它:

foreach ($games as $game)

(我用的是$games,但是用with变量实际得到的是查询结果)现在您正在循环浏览游戏,进行第二个查询(在循环内)以获取该特定游戏的排行榜。

第二个查询:

SELECT * FROM solo_leaderboard WHERE game LIKE '%game_name_from_previous_query%' ORDER BY score DESC LIMIT 3

我的建议是不要使用 LIKE 进行搜索,因为它的效率较低,尽管它可以工作。我的建议是更改 solo_leaderboard 表以包含游戏 ID,以便您可以使用 WHERE game_id = the_id_from_the_previous_query

进行搜索

最后,在不退出最外层 foreach 循环的情况下,您可以循环遍历第二个查询的结果并像现在一样绘制表格。

这是一般的想法。这将循环遍历所有游戏,获取每个游戏的排行榜并将其输出到表格,然后继续下一个游戏等等

关于php - 我怎样才能减少我的 php 代码来循环我的 html 表格代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52498471/

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