Bonjour à tous,

j'ai un souci avec une gestion de cases à cocher et la comparaison de valeurs récupérées d'une db.
Ce n'est pas évident à expliquer ??!!!

  1. affichage d'actions sous forme de cases à cocher

    <input type="checkbox" name="droits[1]]" value="7" /> Action 1
    <input type="checkbox" name="droits[1]]" value="9" /> Action 2
    <input type="checkbox" name="droits[1]]" value="10" /> Action 3
    <input type="checkbox" name="droits[7]]" value="16" /> Action 1
    <input type="checkbox" name="droits[7]]" value="17" /> Action 2
    <input type="checkbox" name="droits[7]]" value="19" /> Action 3
    <input type="checkbox" name="droits[7]]" value="20" /> Action 3

  2. je poste le formulaire et j'enregsitre le tableau (serialize) dans un champs

  3. Récupération des valeurs enregistrées comme ceci :

    Array
    (
    [1] => Array
    (
    [0] => 7
    [1] => 9
    )
    [7] => Array
    (
    [1] => 19
    [2] => 20
    )
    )

  4. comment faire pour effectuer une comparaison entre le tableau et les cases à cocher
    et associer la valeur checked="checked" si le cas.

merci

2 réponses


bagui
Auteur
Réponse acceptée

Merci beaucoup pour ton aide. Je vais tester ce code

tu peux utilise se code :p

<?php
$droits_db = 'a:2:{i:1;a:3:{i:0;s:1:"7";i:1;s:1:"9";i:2;s:2:"10";}i:7;a:2:{i:0;s:2:"17";i:1;s:2:"19";}}';
$droits_db = unserialize($droits_db);
function checked($array,$valeur){
    foreach($array as $k => $v){
        if($v == $valeur){
            return true;
        }
    }
    return false;
    unset($array);
}
if(isset($_POST)){
    $droits = $_POST"droits"];
    echo "<pre>";
    print_r($droits);
    echo "</pre>";
}
?>
<form method="post">
    <input type="checkbox" name="droits[1]]" value="7" 
    <?php 
    if(checked($droits_db[1],7)){
        echo "checked='checked'";
    } 
    ?>
    /> Action 1 
    <input type="checkbox" name="droits[1]]" value="9" 
    <?php 
    if(checked($droits_db[1],9)){
        echo "checked='checked'";
    } 
    ?>/> Action 2 
    <input type="checkbox" name="droits[1]]" value="10"<?php 
    if(checked($droits_db[1],10)){
        echo "checked='checked'";
    } 
    ?> /> Action 3 

    <input type="checkbox" name="droits[7]]" value="16" <?php 
    if(checked($droits_db[7],16)){
        echo "checked='checked'";
    } 
    ?>/> Action 1 
    <input type="checkbox" name="droits[7]]" value="17" <?php 
    if(checked($droits_db[7],17)){
        echo "checked='checked'";
    } 
    ?>/> Action 2 
    <input type="checkbox" name="droits[7]]" value="19" <?php 
    if(checked($droits_db[7],19)){
        echo "checked='checked'";
    } 
    ?>/> Action 3 
    <input type="checkbox" name="droits[7]]" value="20" <?php 
    if(checked($droits_db[7],20)){
        echo "checked='checked'";
    } 
    ?>/> Action 3
    <input type="submit">
</form>

le variable droits_db contient la valeur du base de données mysql