PHP remeber选中复选框

I am trying to have a filter using checkboxes. Problem is when I unselect some boxes and submit values, all boxes are selected again. I think the problem can be here

if (isset($_POST['option_meno']))

What can be the problem? And yes Im new here, so any ideas hot to make my code simpler would help me also.

Thank you.

<?php

// Make a MySQL Connection
$query_o_meno = "SELECT meno FROM uctovnictvo GROUP BY meno ORDER BY meno"; 

$result_meno = mysql_query($query_o_meno) or die(mysql_error());



?>
<form method="post">
<?php


if (isset($_POST['Filtrovat'])) { 

    // Print checked checkboxes
        echo "<strong>Meno:</strong>";
        echo "<br />";
    while($row = mysql_fetch_array($result_meno)){
        //I believe the problem is line below ----------------------------- 
        if (isset($_POST['option_meno'])) {
            echo "<input type='checkbox' name='option_meno[]' value='".$row['meno']."' checked />" . $row['meno'];
            echo "<br />";
            //}
        }
        else{
            echo "<input type='checkbox' name='option_meno[]' value='".$row['meno']."' / >" . $row['meno'];
            echo "<br />";
        }

    }
    }

else{
    $option_meno = array();
        echo "<strong>Meno:</strong>";
        echo "<br />";
    while($row = mysql_fetch_array($result_meno)){
        echo "<input type='checkbox' name='option_meno[]' value='".$row['meno']."' checked />" . $row['meno'];
        echo "<br />";
        $option_meno[] = $row['meno'];
        }   
    }


?>
<input type="submit" name="Filtrovat" value="Filtrovat" />
</form>

This is not tested, but should work:

if (isset($_POST['Filtrovat'])) 
{ 
    // Print checked checkboxes
    echo "<strong>Meno:</strong>";
    echo "<br />";

    while($row = mysql_fetch_array($result_meno))
    {   
        $checked = "";
        if(isset($_POST['option_meno']))
        $checked = in_array($row['meno'],$_POST['option_meno'])?" 
                   checked = 'checked' ":"";

        echo "<input type='checkbox' name='option_meno[]' 
              value='".$row['meno']."' $checked / >" . $row['meno'];
        echo "<br />";
    }
}

Since you're doing name='option_meno[]', $_POST['option_meno'] will be an array. That array will always be set as long as at least one checkbox is checked. Try something like this:

<?php

// Make a MySQL Connection
$query_o_meno = "SELECT meno FROM uctovnictvo GROUP BY meno ORDER BY meno"; 

$result_meno = mysql_query($query_o_meno) or die(mysql_error());



?>
<form method="post">
<?php


if (isset($_POST['Filtrovat'])) { 

    // Print checked checkboxes
        echo "<strong>Meno:</strong>";
        echo "<br />";
    while($row = mysql_fetch_array($result_meno)){
        //I believe the problem is line below ----------------------------- 
        if (isset($_POST['option_meno'][$row['meno']])) {
            echo "<input type='checkbox' name='option_meno[".$row['meno']."]' value='".$row['meno']."' checked='checked' />" . $row['meno'];
            echo "<br />";
            //}
        }
        else{
            echo "<input type='checkbox' name='option_meno[".$row['meno']."]' value='".$row['meno']."' / >" . $row['meno'];
            echo "<br />";
        }

    }
    }

else{
    $option_meno = array();
        echo "<strong>Meno:</strong>";
        echo "<br />";
    while($row = mysql_fetch_array($result_meno)){
        echo "<input type='checkbox' name='option_meno[".$row['meno']."]' value='".$row['meno']."' checked />" . $row['meno'];
        echo "<br />";
        $option_meno[] = $row['meno'];
        }   
    }


?>
<input type="submit" name="Filtrovat" value="Filtrovat" />
</form>

This way you check for each checkbox individually.

Note: You should always fully declare the checked attribute, like so: checked='checked'