【PHP】使いやすいcheckbox送受信

基礎的ですが、これを覚えておけば困らなさそうだったのでまとめておきます。

使いやすいcheckbox送受信

inputタグの面倒な記述からけっこう解放された感じがします。

配列にまとめる

まず、<input type="" name="" value=""> のvalueに入れたい値を配列に格納します。

$contents= ['title', 'logo', 'header', 'footer', 'main', 'nav', 'side'];

foreachでinputタグを並べる

inputタグを並べるときはforeach構文を使います。このとき、endforeachの扱いを知っていると捗ります。

<?php foreach ($contents as $key => $value): ?>
    <input type="checkbox" name="parts[]" value="<?= $value ?>">
  <?php endforeach; ?>

ここで重要なのがname属性の値を「配列名[]」にすることです。こうすることでチェックされた値を配列形式で取り出すことができます。

もしformがひとつだけなら「配列名[]」ではなく「$key」または「$values」でも構いません。

<input type="checkbox" name="<?= $key ?>" value="<?= $value ?>">
または
<input type="checkbox" name="<?= $value ?>" value="<?= $value ?>">

keyを使いたい場合があれば必ず$keyにしておくのがベターです。

$_GET($_POST)配列の中のparts[]配列

あとは受け取り側ですが、こちらもforeachで回します。

name属性の値に「配列名[]」をいれるとcheckboxでチェックされた値が配列として送られてきます。

なので「$_POST['parts’]」配列のなかの値を取り出せばOKです。

<?php
foreach ($_GET['parts'] as $key => $value) {
  print $key. $value. '<br>';
}

完成形

こんな感じです。

 <?php
$contents= ['title', 'logo', 'header', 'footer', 'main', 'nav', 'side'];
  ?>
<form class="" action="checkbox-test.php" method="get">
  <?php foreach ($contents as $key => $value): ?>
    <input type="checkbox" name="parts[]" value="<?= $value ?>">
  <?php endforeach; ?>
  <input type="submit" name="" value="送信">
</form>

<?php
foreach ($_GET['parts'] as $key => $value) {
  print $key. $value. '<br>';
}
 ?>