【问题标题】:Input golf scores and store in MySQL using PHP使用 PHP 输入高尔夫分数并存储在 MySQL 中
【发布时间】:2017-05-09 13:00:05
【问题描述】:

我正在尝试创建一个带有高尔夫锦标赛排行榜的网站,其想法是让人们能够发布每个洞的分数,这些分数将被添加到 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>

插入.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个分数输入框,以便他们可以一次输入多个分数,但我也想拥有它,这样他们就不需要输入洞号。所以基本上洞数会以某种方式已经与相应的分数输入框相关联,然后当他们尝试将数据添加到数据库时,它会插入 Golfer、hole_num 和hole_score。抱歉,如果这令人困惑。我想不出一个简单的方法来解释我想要做什么。如果我能澄清一些事情,请告诉我。

【问题讨论】:

  • 孔号是固定的吗?比如1-18?还是不同?
  • 他们会被修复...总是 1-18
  • 请使用更新后的答案
  • 人们打高尔夫球吗?哎呀....

标签: php html mysql forms


【解决方案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);

?>

【讨论】:

  • 谢谢...这正是我想做的!
  • @Baker,很高兴能帮上忙
猜你喜欢
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 2018-01-25
  • 1970-01-01
  • 2010-09-17
  • 2010-09-18
相关资源
最近更新 更多