2017-10-21 87 views
1

这似乎是一个解决的问题,但我已经通过对此进行了几个小时的研究,但是我尝试的所有解决方案都不适用于我。请帮助我我 内爆和疲倦...我只想保留提交表单或发生错误后检查的选中的人。 这是我的问题。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> 
+0

我的解决方案是如果复选框不为空创建一个cookie然后读取cookie如果存在复选框 – Pedram

回答

-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> 
+0

感谢您的关注,我真的很感激它。但是..它仍然没有工作,它提交表格后丢失数据 – nubies

+0

它似乎工作正常。我不知道你在说什么。提交后,它会保留您选择的值。 – Ashok

0

有一个在id="top3">额外>防止你的代码的正常运行。它应该是阅读id="top3"

纠正错误后,当您在同一页面上发布时,您的代码可能会有效。如果您正在离开页面并返回,则将使用$_SESSION变量而不是$_GET