-1

現在、4つのチェックボックスを表示し、ユーザーがチェックボックスを選択して送信をクリックできるようにするコードがあります.POSTメソッドを介してデータがデータベース(「スプレッドシート」と呼ばれる)に送信され、そこに保存されます.

通常、ラジオ ボタンでは、格納されるデータは 1 つの要素のみです。しかし、チェックボックスを使用すると、要素 (特に私の場合) が 0 から 4 項目の範囲になることに気付きました。私のコードの問題は、4つすべてを押しても、1つの要素しか保存されないことです。アイテムを配列として保存する必要があると思いますが、データベースとの間でアイテムを保存および取得するにはどうすればよいですか?

以下は私のコードです:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html> <!--  tells browser this is an HTML document -->
<head> <!-- container of all head elements --> </head>
<body> <!-- Begin the content of the document -->

<?

if (isset($_POST['formSubmit2'])){
    $category = $_POST['category'];
    $accountID = $_POST['accountID']; 

mysql_query("UPDATE Spreadsheet SET category='$category' WHERE accountID='$accountID'");
}

while($row = mysql_fetch_array($query)){  

$values = array('0 - Luxury','1 - Brand','2 - Retailer','3 - B2B'); 

?>

<form name ="category" method ="POST" action ="" >

<?

echo "<input type = 'hidden' name = 'accountID' value = '" . $row['accountID'] . "' >";
 for($i = 0; $i < count($values); $i++){
?>
 <input type="checkbox" name="category" value="<?php echo $values[$i]; ?>" id="rbl_0" <? if($row['category'] == $i) echo "checked='checked'"; ?>/>
 <? echo $values[$i] ?><br>

 <? } ?>

        <input type ="Submit" name ="formSubmit2" value ="Submit" />
        </form>

</body>
</html>
4

4 に答える 4

0

name="category" を渡す代わりに、"$category[]" に設定します。

$_POST から取得し、新しい変数に設定して、必要に応じて操作できるはずです。

if (isset($_POST['formSubmit2'])){

   $submitted_category = $_POST['$category'];
   $accountID = $_POST['accountID']; 

   // rest of your code...

}

それが役に立ったことを願っています。

于 2012-12-12T17:05:56.460 に答える
0

配列をシリアル化し、DB の varchar 列に格納できます

保存:

$values = array(...);
$data = serialize($values);
// Store data in your database

取得:

// $data should come from your DB
$values = unserialize($data);
// Now values holds your array
于 2012-12-12T16:56:38.033 に答える
0

フォーム送信時に HTTP POST リクエストで複数の値を送信するには、HTML 配列を定義する必要があります。

以下のコードスニペットを参照してください

    <input type="checkbox" name="category[]" value="0"/>Luxury 
    <input type="checkbox" name="category[]" value="1"/> Brand
    <input type="checkbox" name="category[]" value="2"/> Retailer
    <input type="checkbox" name="category[]" value="3"/> B2B

チェックボックスの POST 値は、スーパーグローバル変数 $_POST['category'] からアクセスできます

ここで S_POST['category'] は配列としてアクセスできます。例: $_POST['category'][0]$_POST['category'][1]$_POST['category'][2]$_POST['category'][3] したがって、反復する必要がありますチェックボックスの個々の値を挿入するための配列。

于 2012-12-12T17:03:23.240 に答える
0

checkboxそうでない場合は値を上書きするため、それぞれに異なる名前を付ける必要があります。

次のような配列名を付けることもできますcategory[]

<input type="checkbox" name="category[]" value="value 1"/> value 1<br/>
<input type="checkbox" name="category[]" value="value 2"/> value 2<br/>
<input type="checkbox" name="category[]" value="value 3"/> value 3<br/>

そして、それらを次のように取得します。

$categories = $_GET['category'];

foreach($categories as $category){
    echo "Selected " . $category . "<br/>";
}

も参照してください: HTML で配列を作成するにはどうすればよいですか? ドキュメント

于 2012-12-12T16:47:15.167 に答える