0

チェックボックスとラジオボタンのはい/いいえの回答などをフォームから収集してmysqlに保存する基本的なコードがいくつかありますが、一部のmysql送信は機能します(つまり、SQL列に「はい」または「いいえ」を入力します)が、一部はSQL列に次のように表示されます「配列」 - これはコードのサンプルです。$repeat は 'array' として表示され、$inter は yes または no として表示されます。mysql の列は構造が同じで、フォーム HTML は両方で同じ構文です。$_POST 配列はコンマで区切られています。これは、値もメールで送信し、メールに回答が正しく表示されるためです。これは奇妙なことです。

<?php
$repeat = "";
foreach ($_POST['repeat'] as $key => $value) {
$repeat.= ",$value ";
}
$repeat = substr($repeat,1);

$inter = "";
foreach ($_POST['intermitant'] as $key => $value) {
$inter.= ",$value ";
}
$inter = substr($inter,1);

//other posts all looped though etc
//then the sql - log on etc

$sql="INSERT INTO faults (repeat_visit,intermitant) VALUES ('$repeat','$inter')";

これはHTMLです-私が見ることができることについて奇妙なことは何もありません、私はあなたが上で説明したことを理解しています-しかし、なぜ一方が機能し、もう一方が同じコードで機能しないのですか、同じメソッドがチェックボックスに適用され、他の人は'配列を配置します' SQL で

<label>Repeat Visit:</label>
<input type="radio" name="repeat[]" value="Yes" />Yes
<input type="radio" name="repeat[]" value="No" />No

<label>Intermitant Fault:</label>
<input type="radio" name="intermitant[]" value="Yes" />Yes
<input type="radio" name="intermitant[]" value="No" />No   
4

1 に答える 1

0

popnoodles が述べたように、フォームの HTML を見ると役立つでしょうが、これは $_POST['repeat'] と $_POST['intermitant'] の各要素が実際には配列であるかのように見えるため、foreach() の $value は「配列」を返す

チェックボックスの配列が 1 次元のみであることを確認してください。そうでない場合は、多次元である必要がありますか?

もしそうなら、おそらく値を内破するための再帰関数またはネストされたループが必要です

$repeat = "";
foreach ($_POST['repeat'] as $k => $v)
{
    foreach ($v as $kInner => $vInner)
    {
         $repeat .= ",$vInner ";
    }
}
于 2013-02-15T04:59:45.533 に答える