2

チェックされたチェックボックスのすべての値を取得し、これらすべてをデータベースに挿入したかったのです。

<form action="test.php" id="poll" name="poll" method="post">
    <input type="checkbox" class='lol' name="lol[]" value="cake">Cake :D
    <br>
    <input type="checkbox" class='lol' name="lol[]" value="pie">Pie
    <br>
    <input type="checkbox" class='lol' name="lol[]" value="cupcakes">Cupcakes ^O^
    <br>
    <input type="checkbox" class='lol' name="lol[]" value="brownies">Brownies :D
    <br>
    <input type="submit" value="Vote">
</form>

これは私のphpコードです。

$checkBox = $_POST['lol'];

for ($i=0; $i< sizeof($checkBox); $i++) {
    $query = "INSERT INTO castvote (candidate) VALUES ('".$checkBox[$i]."')";
    mysql_query($query) or die(mysql_error());
}
4

6 に答える 6

3
<?php
if(isset($_POST['lol'])){
  if (is_array($_POST['lol'])) {
    foreach($_POST['lol'] as $value){
      query here
    }
  } else {
      echo "nothing checked";
  }
}
?>
于 2013-05-16T10:16:58.437 に答える
2

あなたのphpコードはこのようにする必要があります。

<?php

$data     = "";
$checkBox = $_POST['lol']; 

foreach($_POST['lol'] as $value) {
    $data .= "(\"".$value."\"),"; // concatenate your checked values
}

$data = substr($data,0,strlen($data)-1); // for removing the `,` symbol
$query = "INSERT INTO castvote (candidate) VALUES ". $data. ";";

mysql_query($query) or die(mysql_error());

?>

「一度に複数の行を挿入するには、複数の VALUES リストを含む INSERT ステートメントを使用します。これは、個別の単一行の INSERT ステートメントを使用するよりもかなり高速です (場合によっては何倍も高速です)。」参照

于 2013-05-16T10:31:04.177 に答える
1

SQL クエリは次のようになります。つまり、値の間にコンマ (,)INSERT INTO castvote (candidate) VALUES ("value","value2");を挿入する必要があります。また、チェックボックスで別の名前を使用します。

編集:

<?php
$array = array("foo", "bar", "hallo", "world"); //your array will be different
$text = "(";
for($i = 0;$i<count($array);$i++)
{
    if($i == count($array)-1)
    {
        $text .= '"'.$array[$i].'"';
    }
    else
    {
        $text .= '"'.$array[$i].'", ';
    }
}
$text .= ");";

$query = "INSERT INTO castvote (candidate) VALUES ".$text;
echo $query;
?>
于 2013-05-16T10:15:23.107 に答える
1

foreach ループを使用して、このような単一のクエリを作成してみてください

INSERT INTO tablename(
`id` ,
`provider_id` ,
`service_id` ,
`voucher_id`
)
// your loop goes here
VALUES (
NULL , '78', '90', '94'
), (
NULL , '67', '78', '89'
);
于 2013-05-16T10:15:36.993 に答える
0

これはコードです:

for ($j=0; $j < count($_POST['lol']);$j++) 
{
    $insert=mysql_query("INSERT INTO castvote (candidate) VALUES '".$_POST['lol'][$j]."')");
}
于 2013-05-16T10:32:26.297 に答える