email - PHP - Display checkbox label instead of its value in E-mail

Solution:

HTML:

<form method="post" action="test.php">
    
    <p class="center">Vyberte školenie</p>
    <label  class="container riadok"><p for="document1" class="dolava">§20 Poučená osoba</p>
    <input type="checkbox"  name="document[1]" value="document1" id="document1">
    <span class="checkmark"></span>
    </label>
    <label class="container riadok"><p for="document" class="dolava">Aktualizácia: §21 AŽ §24</p>
    <input type="checkbox"  name="document[2]" value="document2" id="document2">
    <span class="checkmark"></span>
    </label>
    <label class="container riadok"><p for="document" class="dolava">§21 Elektrotechnik</p>
    <input type="checkbox"  name="document[3]" value="document3" id="document3">
    <span class="checkmark"></span>
    </label>
    <label class="container riadok"><p for="document" class="dolava">§24 Revízny technik</p>
    <input type="checkbox"  name="document[4]" value="document4" id="document4">
    <span class="checkmark"></span>
    </label>
    <p class="center">Vyplňte osobné údaje</p>
    <input type="text" name="name" id="name" class="form-control" placeholder="Meno">
    <input type="text" name="email" id="email" class="form-control" placeholder="Email">
    <input type="tel" name="phone" id="phone" class="form-control" placeholder="Telefónne číslo" pattern="[0-9]+"  title="Zadajte iba čísla." required="required">
                            
<input type="hidden" name="send" value="1" />
 <button type="submit" value="SEND" id="submit" class="btn btn-primary"> ODOSLAŤ PRIHLÁŠKU</button>
</form>

PHP:

<?php
   $translation_table = array(1 => '§20 Poučená osoba', 2 => 'Aktualizácia: §21 AŽ §24'); // fill it yourself, I am not going to do that, just add another numbers and labels
   if(isset($_POST['document'])){
      foreach($_POST['document'] as $id => $val){
         echo $translation_table[$id] . " = " . $val . "<br />";
      }
   }
?>

That should help you in your problem.

Answer

Solution:

Labels aren't sent automatically in form submissions.

You could change your HTML so you include the label in the checkbox value.

    <label  class="container riadok"><p for="document1" class="dolava">§20 Poučená osoba</p>
    <input type="checkbox"  name="document[document1]" value="§20 Poučená osoba<" id="document1">

Then in PHP you do:

foreach ($documents as $key => $label) {
    if (isset($documents[$key])) {
        $message = "ŠKOLENIE: $label";
    }
}

Also, you're overwriting $message each time through the loop. You should be appending to it, not replacing it.

    $message .= "
        ŠKOLENIE: $label
        ";

Source