在复选框选中时,foreach重复循环html表多次

时间:2014-07-09 08:40:52

标签: php loops checkbox foreach

您好我有复选框并在表格中提交按钮。一切都运行良好。我可以在提交按钮后选中/取消选中复选框事件。唯一的问题是我的foreach循环执行多次,我得到多个表执行复选框与每个选中的选项。我正在做的一个小错误。 这是我的代码:

$html = '<table width="538" cellspacing="0" cellpadding="0" border="0">
        <tr>
            <td>
                <div>'.CreateRegister($page['register-fahrzeuge']).'</div>
                '.CreateMessage().'
                <div class="cont-liste-verlauf register">';
                if($row = mysql_fetch_assoc($result)) 
                {                       
                    $val= unserialize($row['configuration']);                                           
                    $html .= '<table id="FAHRZEUGE" >
                        <tr>
                        <td>';
                        foreach($val as $config){
                        $html .= ' <input type="checkbox" name="Anzahl_Fahrzeuge_ohne_Bilder" id="Anzahl_Fahrzeuge_ohne_Bilder" '.($config=='Anzahl_Fahrzeuge_ohne_Bilder' ? 'checked="checked"' : '').' />
                       <label for="Anzahl_Fahrzeuge_ohne_Bilder">Anzahl_Fahrzeuge_ohne_Bilder</label><br>

                       <input type="checkbox" name="Fahrzeuge_ohne_Preis" id="Fahrzeuge_ohne_Preis" value="Fahrzeuge_ohne_Preis" '.($config=='Fahrzeuge_ohne_Preis' ? 'checked="checked"' : '') .'/>
                       <label for="Fahrzeuge_ohne_Preis">Fahrzeuge_ohne_Preis</label><br>

                       <input type="checkbox" name="Fahrzeuge_mit_Fehlern" id="Fahrzeuge_mit_Fehlern" value="Fahrzeuge_mit_Fehlern" '.($config=='Fahrzeuge_mit_Fehlern' ? 'checked="checked"' : '') .' />
                       <label for="Fahrzeuge_mit_Fehlern">Fahrzeuge_mit_Fehlern</label><br>

                       <input type="checkbox" name="Herausforderungen" id="Herausforderungen" value="Herausforderungen" '.($config=='Herausforderungen' ? 'checked="checked"' : '') .' />
                       <label for="Herausforderungen">Herausforderungen</label><br><br>';                                           
                    }
                    $html .= '</td>
                </tr>
                    </table>';
                }
                    $html .= ' '.CreateButton($page['button']).'
                </div>
        </td>
    </tr>
</table>';

2 个答案:

答案 0 :(得分:0)

首先,如果必须更改视图后会出现问题,因为您必须进行复制和粘贴,否则您可能会犯一些错误。

尝试更改为代码,仅使用一个html输入复选框,如果值在数组中,则添加选中的值

EX

<?php
some code php.... 
?>
<input type="checkbox" name="Anzahl_Fahrzeuge_ohne_Bilder" id="Anzahl_Fahrzeuge_ohne_Bilder"
<?php if($config == "Anzahl_Fahrzeuge_ohne_Bilder")  echo "checked"; ?> />
<label for="Anzahl_Fahrzeuge_ohne_Bilder">Anzahl_Fahrzeuge_ohne_Bilder</label><br>
<?php                            
other code php...

你的另一个问题可能是因为你的sql中有多个结果,请看你的sql请求并修改为只有一个结果(使用“where”带有一些独特的条件或“limit 0,1”)

另一个问题是我没有承担你的代码,因为你有if和else每个地方和每个值你将拥有一个选中的输入的所有复选框,而其他人一遍又一遍地取消选中

答案 1 :(得分:0)

我认为你有$ val数组,其元素用于检查值。 像$val = array('Fahrzeuge_ohne_Preis','Herausforderungen');之类的东西 并且您希望打印表单一次,并检查这两个。 如果我的猜测是正确的,那么你必须完全重做你的算法。

$html .= ' <input type="checkbox" name="Anzahl_Fahrzeuge_ohne_Bilder" id="Anzahl_Fahrzeuge_ohne_Bilder" '.(in_array('Anzahl_Fahrzeuge_ohne_Bilder',$val) ? 'checked="checked"' : '').' />
                           <label for="Anzahl_Fahrzeuge_ohne_Bilder">Anzahl_Fahrzeuge_ohne_Bilder</label><br>

                           <input type="checkbox" name="Fahrzeuge_ohne_Preis" id="Fahrzeuge_ohne_Preis" value="Fahrzeuge_ohne_Preis" '.(in_array('Fahrzeuge_ohne_Preis',$val) ? 'checked="checked"' : '') .'/>
                           <label for="Fahrzeuge_ohne_Preis">Fahrzeuge_ohne_Preis</label><br>

                           <input type="checkbox" name="Fahrzeuge_mit_Fehlern" id="Fahrzeuge_mit_Fehlern" value="Fahrzeuge_mit_Fehlern" '.(in_array('Fahrzeuge_mit_Fehlern',$val) ? 'checked="checked"' : '') .' />
                           <label for="Fahrzeuge_mit_Fehlern">Fahrzeuge_mit_Fehlern</label><br>

                           <input type="checkbox" name="Herausforderungen" id="Herausforderungen" value="Herausforderungen" '.(in_array('Herausforderungen',$val) ? 'checked="checked"' : '') .' />
                           <label for="Herausforderungen">Herausforderungen</label><br><br>'; 

删除循环。