2015-04-14 5 views
0

J'ai des titres d'utilisateur, qui sont stockés dans la base de données de cette manière. 1,2,6,10 et etc. Je veux vérifier si l'utilisateur a déjà ce titre et s'il le fait, cochez la case.Cocher si la case est cochée

<?php 
    $user_titles = explode(',', $user['titles']); 
    //foreach($user_titles as $uTitles){ 
     //echo $uTitles; 
    //} 
?> 
<input type="checkbox" name="title[]" value="1">Test1<br/> 
<input type="checkbox" name="title[]" value="2">Test2<br/> 
<input type="checkbox" name="title[]" value="3">Test3<br/> 

Répondre

0

Vous devez ajouter l'attribut checked à ceux vérifiés.

<input type="checkbox" name="title[]" value="1" <?php if(in_array(1, $user_titles) echo 'checked="checked"'; ?>>Test1<br/>

+0

Merci, je ne connaissais pas l'in_array. –

0

Si je comprends bien, vous avez les valeurs stockées dans une chaîne délimitée par une virgule.

Utilisez une méthode itération, par exemple:

<?php $checked = ''; ?> 
<?php for($i = 1; $i <= count($posibble_checkbox); $i++) { 
    if(in_array($user_titles, $i)) { $checked = 'checked'; } else {$checked = '' } 
?> 
    <input type="checkbox" value="<?php echo $i; ?>" name="title[]" <?php echo $checked; ?> /> 
<?php } ?> 

Hope it helps.

0

Déplacez les titres vers un nouveau tableau et parcourez-les. Dans la boucle, vérifiez si la valeur est dans le tableau $ user_titles et ajoutez "checked" à la balise d'entrée.

<?php 
$titles = [ 
    1 => "Test1", 
    2 => "Test2", 
    3 => "Test3", 
]; 

foreach ($titles as $value => $title) { 
    $checked = in_array($value, $user_titles) ? 'checked' : ''; 
    echo '<input type="checkbox" name="title[]" value="' . $value . '" ' . $checked . '>' . $title . '<br/>'; 
} 
?>