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

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

问题描述:

Hello I have checkboxes and submit button inside table. Everything is running fine. I can get the checkbox event checked/unchecked after submit button. The only problem is my foreach loop is executing multiple times and i am getting multiple table executing checkbox with each checked option. Just a small mistake i am doing. Here is my code:

$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>';

I think you have $val array with elements for checked values. Something like $val = array('Fahrzeuge_ohne_Preis','Herausforderungen'); And you want to print the form once, with these two checked. If my guess is right, then you have to redo your algorithm completely.

$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>'; 

Remove the loop.

First you will have some problem if after you have to change the view, because you will have to do copy and paste and you will probably do some mistake.

Try to change to the code and only use one html for input checkbox and add the value checked if the value is in the array

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...

Your other problem is probably because in your sql you have more than one result, see you sql request and modify to only have one result (use "where" with some unique condition or "limit 0,1")

And other problem is that i dont undertand your code, because you have if and else every where and for each value you will have all the checkbox with one checked input and the others unchecked over and over again