将HTML复选框(数组)存储到MySQL数据库中

时间:2015-02-16 17:07:21

标签: php mysql arrays checkbox insert

我想通过INSERT INTO将基本用户输入存储到数据库中。 我设法存储了所有可能的输入(text,tel ...)但是复选框是一个问题,因为它们是数组!我该如何存储它们?

vos_jeux.php (显示复选框)

<form method="post" action="end.php">
  <p>
    Cochez les jeux désirés pour votre soirée:<br>

      <label for="blackjack"><img src="img/blackjack.jpg" alt=""></label>
      <INPUT id="blackjack" type="checkbox" name="game[]" value="Blackjack">    

      <label for="chuckaluck"><img src="img/chuckaluck.jpg" alt=""></label>
      <INPUT id="chuckaluck" type="checkbox" name="game[]" value="Chuck à Luck">

      <label for="roulette"><img src="img/roulette.jpg" alt=""></label>
      <INPUT id="roulette" type="checkbox" name="game[]" value="Roulette">

      <label for="stud"><img src="img/stud.jpg" alt=""></label>
      <INPUT id="stud" type="checkbox" name="game[]" value="Stud Poker">

      <label for="holdem"><img src="img/holdem.jpg" alt=""></label>
      <INPUT id="holdem" type="checkbox" name="game[]" value="Holdem Poker">

      <label for="boule"><img src="img/boule.jpg" alt=""></label>
      <INPUT id="boule" type="checkbox" name="game[]" value="La Boule">

    <input type="button" value="Retour en arrière" onClick="self.history.back();">
    <input type="submit" name="submit" value="Poursuivre">
  </p>
</form>

查看我的数据库:(看看如何&#34; jeux&#34;复选框不会出现) PHPMyAdmin

end.php

<?php

include "connect.php";

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$tel = $_POST['tel'];
$mail = $_POST['mail'];
$adresse2 = $_POST['adresse2'];
$date = $_POST['date'];
$nb_invite = $_POST['nb_invite'];
$evenement = $_POST['evenement'];
$game = implode(',', $_POST['game']);

$sql = "INSERT INTO donnees (nom, prenom, adresse, tel, email, adresse2, date, nb_invite, evenement, jeux)
VALUES ('$nom', '$prenom', '$adresse', '$tel', '$mail', '$adresse2', '$date', '$nb_invite', '$evenement', '$game')";

if (mysqli_query($conn, $sql)) {
    echo "";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

1_我试过&#34; implode&#34;解决方案,但似乎没有效果。我能做什么? 2_回显$ sql变量给出:INSERT INTO donnees (nom, prenom, adresse, tel, email, adresse2, date, nb_invite, evenement, jeux) VALUES ('foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', 'foo', '') 复选框输入的结果为 NULL &#39;&#39; !为什么呢?

3 个答案:

答案 0 :(得分:0)

试试这个会起作用:

<?php
    // Get array
    $games = $_POST['game'];

foreach ($games as $game)
        {
        $sql = "INSERT INTO donnees (nom, prenom, adresse, tel, email, adresse2, date, nb_invite, evenement, jeux)
VALUES ('$nom', '$prenom', '$adresse', '$tel', '$mail', '$adresse2', '$date', '$nb_invite', '$evenement', '$game')";

if (mysqli_query($conn, $sql)) {
    echo "";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
        }

mysqli_close($conn);

?>

答案 1 :(得分:0)

您似乎需要检查数据库字段的类型,特别是jeux字段,如果您有大量数据,请确保将其设置为TEXTLONGTEXT要存储...如果这不是问题,请检查您的SQL查询周围没有随机空格,可能在VALUES区域附近。

答案 2 :(得分:-1)

使用foreach创建/连接$游戏字符串:

$game = "";
foreach($_POST['game'] as $g){
$game .= $g.", ";
}

然后你可以在你的SQL查询中使用$ game字符串。

$sql = "INSERT INTO donnees (nom, prenom, adresse, tel, email, adresse2, date, nb_invite, evenement, jeux)
VALUES ('$nom', '$prenom', '$adresse', '$tel', '$mail', '$adresse2', '$date', '$nb_invite', '$evenement', '$game')";