使用php创建和输入多个表单插入到mysql

时间:2017-06-30 22:23:53

标签: php html mysql

我对php很新,我很难搞清楚如何创建一个表单,我可以有多个输入并使用php将所有输入输入到sql表中。我设置了一个表,以便每一行都是一个新条目,这样就可以一次性上传一个时间表,而不是1比1。

这是我目前的代码:

HTML:

<table id="register">
<form action="processing_games.php" method="post"/>
<tr>
    <td><p>Date<br>(m/dd/yy)</p></td>
    <td><p>Time<br>(h:mm AM/PM)</p></td>
    <td><p>Opponent</p></td>
    <td><p>Location<br>(Rink Name)</p></td>
    <td><p>Conference<br>Game?</p></td>
    <td><p>Home or Away<br>Game?</p></td>
</tr>
<tr>
    <td><input type="date" name="date"></td>
    <td><input type="time" name="time"></td>
    <td><input type="text" name="opponent"></td>
    <td><input type="text" name="location"></td>
    <td><input type="radio" name="conference" value="+"> Conference
    <br>
    <input type="radio" name="conference" value=""> Non-Conference </td>
    <td><input type="radio" name="home_away" value=" vs "> Home
    <br>
    <input type="radio" name="home_away" value=" @ "> Away</td>
</tr>
<tr>
    <td><input type="date" name="date"></td>
    <td><input type="time" name="time"></td>
    <td><input type="text" name="opponent"></td>
    <td><input type="text" name="location"></td>
    <td><input type="radio" name="conference" value="+"> Conference
    <br>
    <input type="radio" name="conference" value=""> Non-Conference </td>
    <td><input type="radio" name="home_away" value=" vs "> Home
    <br>
    <input type="radio" name="home_away" value=" @ "> Away</td>
</tr>
</table>
<br><br>
<center>
<input type="submit" value="Submit"/>
</form>

PHP:

<?php
include '../connection.php';

$game_date = $_POST['date'];
$game_time = $_POST['time'];
$value3 = $_POST['opponent'];
$value4 = $_POST['location'];
$value5 = $_POST['conference'];
$value6 = $_POST['home_away'];

$value = date('n/j/y', strtotime($game_date));
$value2 = date('g:i A', strtotime($game_time));

$sql = "INSERT INTO schedule (date, time, opponent, location, conference, home_away) VALUES ('$value', '$value2', '$value3', '$value4', '$value5', '$value6')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
    header("Location: http://www.rit.edu/sg/clubhockey/admin/complete.php");
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

mysqli_close($conn); 
?>

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以将html转换为发送帖子数据为&#34;多维&#34;阵列。 从:

更新所有输入名称(日期,时间,oppenent ...除提交!)
name="items[0][date]" // for first block of inputs
name="items[1][date]" // for second block of inputs
name="items[n][date]" // for nth block ;)

processing_games.php

关键&#34;项目&#34;就是这样的例子!

将表单发布到Array ( [items] => Array ( [0] => Array ( [date] => your input date 1 [oppenent] => your input openent 1 ) [1] => Array ( [date] => your input date 2 [oppenent] => your input openent 2 ) ) ) 和var_dump($ _ POST)。 您应该看到$ _POST数组输出结构,如:

<?php

$postItems = null;
if (isset($_POST['items'])) {
    $postItems = $_POST['items'];

    // iterate through and execute single queries
    foreach($postItems as $item) {

        // $item should be associative array with keys (date, time, oppenent)
        var_dump($item); // show $item

        $datetime = new \DateTime($item['date']);
        $dateFormatted = $datetime->format('m-d-Y');

        // build query:
        // please DO NOT insert values from POST without escaping, just for explanation!
        $sql = 'INSERT INTO schedule (date, time, opponent, ...) 
            VALUES ("'.$dateFormatted.'", "'.$item['time'].'"
            , "'. $item['opponent'].'", ...)';

        echo $sql . '<br />';
    }
}

?>

  <html>

  <body>
    <form method="post">
      <table>
        <tr>
          <td>
            <p>Date<br>(m/dd/yy)</p>
          </td>
          <td>
            <p>Time<br>(h:mm AM/PM)</p>
          </td>
          <td>
            <p>Opponent</p>
          </td>
          <td>
            <p>Location<br>(Rink Name)</p>
          </td>
          <td>
            <p>Conference<br>Game?</p>
          </td>
          <td>
            <p>Home or Away<br>Game?</p>
          </td>
        </tr>
        <tr>
          <td><input type="date" name="items[0][date]"></td>
          <td><input type="time" name="items[0][time]"></td>
          <td><input type="text" name="items[0][opponent]"></td>
          <td><input type="text" name="items[0][location]"></td>
          <td><input type="radio" name="items[0][conference]" value="+"> Conference
            <br>
            <input type="radio" name="items[0][conference]" value=""> Non-Conference </td>
          <td><input type="radio" name="items[0][home_away]" value=" vs "> Home
            <br>
            <input type="radio" name="items[0][home_away]" value=" @ "> Away</td>
        </tr>
        <tr>
          <td><input type="date" name="items[1][date]"></td>
          <td><input type="time" name="items[1][time]"></td>
          <td><input type="text" name="items[1][opponent]"></td>
          <td><input type="text" name="items[1][location]"></td>
          <td><input type="radio" name="items[1][conference]" value="+"> Conference
            <br>
            <input type="radio" name="items[1][conference]" value=""> Non-Conference </td>
          <td><input type="radio" name="items[1][home_away]" value=" vs "> Home
            <br>
            <input type="radio" name="items[1][home_away]" value=" @ "> Away</td>
        </tr>
      </table>
      <input type="submit" name="submit" value="submit" />
    </form>
  </body>

  </html>

然后,您可以遍历items数组($ _POST [&#39; items&#39;])构建插入查询/查询。举个例子:

{{1}}

请注意:在构建插入查询之前注意注释代码注释! ;)

仅供参考#1 您可以尝试prepared statements并将值绑定到语句。无需转义您的值以防止SQL注入 - 准备好的语句将完成此工作。

仅供参考#2,请检查此问题及其接受的答案: Submitting a multidimensional array via POST with php