我正在尝试为高尔夫锦标赛创建一个带有排行榜的网站,其目的是让人们能够为每个洞发布分数,这些分数将被添加到MySQL数据库中,然后会显示一个单独的页面排行榜上的得分。我现在处于起步阶段,但我仍然坚持让用户输入分数。
我的想法是将得分存储在一个表中,其中包含'golfer','hole_num'和'hole_score'的列。
我目前在HTML上输入分数。
<form action="insert.php" method="POST">
Golfer: <input type="text" name="golfer" />
<br>
Hole Number: <input type="number" name="hole_num" />
<br>
Hole Score: <input type="number" name="hole_score" />
<br>
<input type="Submit" value="Add"/></form>
insert.php:
<?php
include ('db_connect.php');
// Escape user inputs for security
$golfer = mysqli_real_escape_string($link, $_POST['golfer']);
$hole_num = mysqli_real_escape_string($link, $_POST['hole_num']);
$hole_score = mysqli_real_escape_string($link, $_POST['hole_score']);
// Attempt insert query execution
$sql = "INSERT INTO scores (golfer, hole_num, hole_score) VALUES('$golfer','$hole_num','$hole_score')";
mysqli_query($link, $sql);
// Close database connection
mysqli_close($link);
?>
此代码有效,因此当我输入'golfer','hole_num'和'hole_score'时,它们会正确地添加到表格中。由于数据输入表现在不变,用户必须一次输入1个分数并且必须指定孔号。我要做的就是有18个显示分数的输入框,这样他们可以一次输入多个分数,但我也想拥有它,这样他们就不需要输入孔数了。因此,基本上孔数将以某种方式与相应的得分输入框相关联,然后当他们尝试将数据添加到数据库时,它会插入高尔夫球手,hole_num和hole_score。对不起,如果这令人困惑。我无法想出一个简单的方法来解释我正在尝试做什么。如果我能澄清一些事情,请告诉我。
答案 0 :(得分:1)
我为你做了一个简单的方法。
实际上,这个答案让你知道如何制作它。当然,你可以做得更漂亮。
注意:我没有测试它并在这里写下来。
表格:
<form action="insert.php" method="POST">
Golfer: <input type="text" name="golfer" />
<br>
<table>
<tr><th>Hole Number</th><th>Hole Score</th></tr>
<?php
for ($i = 1; $i <= 18; $i++): ?>
<tr>
<td><?php echo $i; ?></td>
<td><input type="number" name="hole_score[<?php echo $i; ?>]" /></td>
</tr>
<?php endfor; ?>
</table>
<input type="Submit" value="Add"/></form>
插入文件:
// Escape user inputs for security
$golfer = mysqli_real_escape_string($link, $_POST['golfer']);
$values = [];
foreach ($_POST['hole_score'] as $key => $score) {
$score = trim(mysqli_real_escape_string($link, $score));
if (!empty($score)) {
$values[] = "('$golfer','$key','$score')";
}
}
if (!empty($values)) {
$values = implode (' , ', $values);
// Attempt insert query execution
$sql = "INSERT INTO scores (golfer, hole_num, hole_score) VALUES $values";
mysqli_query($link, $sql);
}
// Close database connection
mysqli_close($link);
?>