PHP如何在提交后检查复选框数组

时间:2017-10-21 09:58:30

标签: php

这似乎是一个已解决的问题,但我已经通过对此进行了数小时的研究,但我尝试过的所有解决方案对我都没有用。请帮帮我 在提交表格或发生任何错误后,我只想检查已检查的那些。 这是我的问题。

<input name="toppings" type="checkbox" value="pepperoni" id="top1"><label 
for="top1">Pepperoni</label>
<input name="toppings" type="checkbox" value="bacon" id="top2"><label 
for="top2">Canadian Bacon</label>
<input name="toppings" type="checkbox" value="sausage" id="top3"><label 
for="top3">Sausage</label>
<input name="toppings" type="checkbox" value="mushrooms" id="top4"><label 
for="top4">Mushrooms</label>
<input name="toppings" type="checkbox" value="pineapple" id="top5"><label 
for="top5">Pineapple</label>
<input name="toppings" type="checkbox" value="peppers" id="top6"><label 
for="top6">Peppers</label>

这就是我试过的

$toppingArr=array();
if(!empty($_GET["toppings"]))
    {
            foreach($_GET['toppings'] as $tops)
        {
            array_push($toppingArr,$tops);
        }
    }
<input name="toppings[]" type="checkbox" value="pepperoni" id="top1"
            <?= (in_array("pepperoni", $toppingArr)) ? 'checked' : ''; ?>>
            <label for="top1">Pepperoni</label>
            <input name="toppings[]" type="checkbox" value="bacon" id="top2"
            <?= (in_array("bacon", $toppingArr)) ? 'checked' : ''; ?>>
            <label for="top2">Canadian Bacon</label>
            <input name="toppings[]" type="checkbox" value="sausage" id="top3">
            <?= (in_array("sausage", $toppingArr)) ? 'checked' : ''; ?>>
            <label for="top3">Sausage</label>
            <input name="toppings[]" type="checkbox" value="mushrooms" id="top4"
            <?= (in_array("mushrooms", $toppingArr)) ? 'checked' : ''; ?>>
            <label for="top4">Mushrooms</label>
            <input name="toppings[]" type="checkbox" value="pineapple" id="top5"
            <?= (in_array("pineapple", $toppingArr)) ? 'checked' : ''; ?>>
            <label for="top5">Pineapple</label>
            <input name="toppings[]" type="checkbox" value="peppers" id="top6"
            <?= (in_array("peppers", $toppingArr)) ? 'checked' : ''; ?>>
            <label for="top6">Peppers</label>

2 个答案:

答案 0 :(得分:0)

>处有一个额外的id="top3">,阻止您的代码正常运行。它应该是阅读id="top3"

更正错误后,当您在同一页面上发布时,您的代码可以正常工作。如果您要离开该页面并返回,则可以使用$_SESSION个变量而不是$_GET

答案 1 :(得分:-1)

试试这个

<!DOCTYPE html>
  <html>
  <head>
    <title></title>
  </head>
  <body>
    <?php
      $toppingArr=array();
      if(!empty($_GET["toppings"]))
      {
          foreach($_GET['toppings'] as $tops)
          {
              array_push($toppingArr,$tops);
          }
      }
    ?>
    <form>
      <input name="toppings[]" type="checkbox" value="pepperoni" id="top1" <?php if(in_array('pepperoni', $toppingArr)) echo 'checked'; ?> ><label
      for="top1">Pepperoni</label>
      <input name="toppings[]" type="checkbox" value="bacon" id="top2" <?php if(in_array('bacon', $toppingArr)) echo 'checked'; ?>><label
      for="top2">Canadian Bacon</label>
      <input name="toppings[]" type="checkbox" value="sausage" id="top3" <?php if(in_array('sausage', $toppingArr)) echo 'checked'; ?>><label
      for="top3">Sausage</label>
      <input name="toppings[]" type="checkbox" value="mushrooms" id="top4" <?php if(in_array('mushrooms', $toppingArr)) echo 'checked'; ?>><label
      for="top4">Mushrooms</label>
      <input name="toppings[]" type="checkbox" value="pineapple" id="top5" <?php if(in_array('pineapple', $toppingArr)) echo 'checked'; ?>><label
      for="top5">Pineapple</label>
      <input name="toppings[]" type="checkbox" value="peppers" id="top6" <?php if(in_array('peppers', $toppingArr)) echo 'checked'; ?>><label
      for="top6">Peppers</label>
      <input type='submit' value='Submit' />
    </form>

  </body>
  </html>