开发者

Dynamicly creating and checking checkboxes in php

开发者 https://www.devze.com 2023-02-26 01:40 出处:网络
I am trying to dynamically create php check-boxes li开发者_StackOverflow社区nked to an MSSQL-Database. The idea is to List every item in the table, with a check box. From there the user will be able t

I am trying to dynamically create php check-boxes li开发者_StackOverflow社区nked to an MSSQL-Database. The idea is to List every item in the table, with a check box. From there the user will be able to check the check-boxes and click submit to change the value in 1 field of the Database to "A". I have the database linked to the php and It outputs the check-checkboxes and table values, however I do not know from there how to dynamically check the check-boxes to see if they are checked, or to use it from there.


This is roughly the approach you want to take to dynamically create checkboxes. There are of course prettier ways to accomplish this (i.e. Smarty templates).

<html>
...
<form method="post" action="submit.php">
<?php
// connect to DB here

$result = mysql_query("SELECT l.id, l.name, u.checked FROM List l LEFT JOIN UserAnswers u ON l.id = u.list_id WHERE u.user_id = 5");
while ($row = mysql_fetch_assoc($result))
{
    echo '<input type="checkbox" name="cb_' . $row['id'] . '" ' .
        'id="cb_' . $row['id'] . '" ';
    if($row['checked'])
        echo 'checked';
    echo " />\n"
    echo '<label for="cb_' . $row['id'] . '">' . $row['name'] . "</label><br />\n";
}
?>

<input type="submit" value="Submit" />
</form>
...
</html>

submit.php is a bit trickier. When a checkbox is checked, it will set a post item. However if it's unchecked, you won't get ANYTHING back, so you need to check your database for all the items you'll be expecting.

<?php

// connect to DB here
$result = mysql_query("SELECT id, name, checked FROM things");
$answers = Array();
while ($row = mysql_fetch_assoc($result))
{
    $checked = isset($_POST['cb_' + $row['id']]);
    $answers[$row['id']] = $checked;
}

// update your database here using $answers
foreach ($answers as $id => $checked)
{
    $query = "REPLACE INTO UserAnswers SET user_id=5, list_id=" . $id . ", checked=";
    if($checked)
        $query .= "1";
    else
        $query .= "0";
    mysql_query($query);
}

This is all off the top of my head, there are better ways to do most of this. It's just a general direction. I make no guarantees about any of this. Oh and it looks quite vulnerable to SQL injection, watch out for that.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号