TMNuclear
TMNuclear

Reputation: 1175

PHP MYSQL checkbox checked

With this line of code, I add every selected checkbox's value into the database:

    // ADD ALL TYPES TO PRODUCTIONLOG_TYPE TABLE
    $x=1;
    $values=array();
    foreach($_POST['id'] as $x)
    {
        $AddToListQuery = "
                        INSERT INTO
                        productionlog_type
                       (productionlogid, typeid)
                        VALUES
                       ('" . mysql_real_escape_string($_GET['productionlog']) . "', '". mysql_real_escape_string($x) ."')
                       ";
        mysql_query($AddToListQuery)or die("query fout " . mysql_error() );
    }

I do this so I can echo out the checkbox checked if this is alreayd in the database.

The problem now is, when the user unchecks the checkbox and sends the form, it's not passing any value, right? So I can't delete it from the database...means that the checkbox remains checked.

What can I do about this?

Upvotes: 1

Views: 2311

Answers (1)

ndsmyter
ndsmyter

Reputation: 6605

If you know which of the checkboxes will be returned, you can filter out the ones you know something about and only the checkboxes that are not checked remain then.

You can also have a look at some processing of your page before you send the request, with JavaScript for example.

Or you can pass another hidden variable in your form that contains all the checkboxes you should receive in your PHP script. For example:

<input type="hidden" value="id_1,id_2,id_3" />

If you then receive this in your PHP script, you can see which of the ids (of the checkboxes) are expected.


EDIT

If you have:

<form method="POST">
    <input type="hidden" name="checks" value="id1,id2" />
    <input type="checkbox" name="id1" checked="checked" />
    <input type="checkbox" name="id2" />
</form>

And then in PHP:

$arr = split(",", $_POST["checks"]);
foreach ($arr as $x){
    if(isset($_POST[$x])){
        // Add or update
    }else{
        // Remove
    }
}

Note: I haven't tested the code, but it you just to get an idea on how it works

Upvotes: 2

Related Questions