4

私の Web サイトには、配列を使用してチェックボックス データを送信するフォームがあります。次に、そのデータを foreach ループで操作して、各チェックボックス データに「:」を追加し、それをデータベースに挿入できる単一の文字列にしたいと考えています。

これは私のHTMLコードです:

while($row = $result->fetch_assoc())
{
echo '<tr><td><input type="checkbox" name="pluginlist[]" value="'.$row['plugin'].'" /></td><td> '.$row['plugin'].'</td></tr>';
}

$row['plugin'] は、データベース内の別のテーブルからのデータです。

これは、データを $_POST してから foreach ループを実行する私の PHP コードです。

if(!empty($_POST['pluginlist'])) {
        foreach($_POST['pluginlist'] as $plugins) {
            $plugins1 = $plugins.":";
            }
            echo $plugins1;
}

echo $plugins1 は、最後に「:」が付いた最後のチェックボックス データのみをエコーし​​ます。

すべてのチェックボックス データを一度にデータベースに挿入できるようにするにはどうすればよいですか?

4

3 に答える 3

3

あなたserializeはデータを得ることができます、私はそれがはるかに便利だと思います!

または、試すことができます

$plugins1 = implode(":" , $_POST['pluginlist']);
于 2013-03-27T00:03:35.187 に答える
3

値を連結します。$plugins1それ以外の場合は、反復ごとに新しい値を割り当てています。

$plugins1 .= $plugins.':'; // Correct - note the extra dot before the equal sign

そしてそうではありません

$plugins1 = $plugins.':'; // Incorrect - would "reset" the value each time

implodeまたは、すべての配列値を 1 つの文字列に連結するために使用することもできます。

$plugins1 = implode(':', $_POST['pluginlist'])
于 2013-03-27T00:03:40.830 に答える
1

これはあなたがやろうとしていることですか?私はあなたの問題を理解していなかったかもしれません。等号の前のドットは連結しますが、内破したいだけかもしれません。

$plugins1 = '';
if(!empty($_POST['pluginlist'])) {
        foreach($_POST['pluginlist'] as $plugins) {
            $plugins1 .= $plugins.":";
            }
echo $plugins1;
echo "<br />or<br/ >";
$plugins2 = implode ($_POST['pluginlist'], ':');
echo $plugins2;
于 2013-03-27T00:09:51.940 に答える