1

I can't seem to get this done. I'm getting data from a table, if the value in the column = y then the checkbox must be checked, if the value in the column = n, the checkbox must not be checked, all the checkboxes stays checked, even though only the first row's column = y

<?php
session_start();
    include 'datalogin.php';
    $sel_course_id = 2;
    $sel_date_1    = '2012-05-21';
    $sel_date_2    = '2012-05-22';
    echo "<form action='' method='post'>";
    echo "<strong>Completed the course</strong>";

    $sql1 = "SELECT * FROM trn WHERE course_id = '$sel_course_id' AND date_1 = '$sel_date_1' and date_2 = '$sel_date_2'";
    $res1 = mysql_query($sql1);
    while ($row1 = mysql_fetch_assoc($res1)) {
        $rowid1           = $row1['id'];
        $uid1              = $row1['usr_id'];
        $certificate_name1 = $row1['certificate_name'];
        $course_completed1 = $row1['course_completed'];

            $sql2 = "SELECT * FROM ex_usrs WHERE id = '$uid1'";
            $res2 = mysql_query($sql2);
            while ($row2 = mysql_fetch_assoc($res2)) {
                $fn2 = $row2['firstname'];
                $ln2 = $row2['lastname'];
            } 
            $checked2 = "";
            if ($course_completed1 == y) {
                $checked2 = "checked";
            } 
            if ($course_completed1 == n) {
                $checked2 = "";
            } 
            echo "<input name='question[$rowid1][]' type='checkbox'  checked='$checked2' value='1' />$fn2 $ln2";
echo "</br>";
   } 
    echo "</form>";
?>

3 Answers 3

2

Use quotes for strings:

if ($course_completed1 == "y") {
    $checked2 = "checked";
} 
if ($course_completed1 == "n") {
    $checked2 = "";
} 
Sign up to request clarification or add additional context in comments.

Comments

1

checked='$checked2' should be plain $checked2, it is a boolean attribute.

(Unless you are writing XHTML in which case it should also be given the value 'checked="checked" after you test if ($course_completed1 == "y") {).

Your tests should also be checking strings ("y") and not constants (y).

Comments

0

Like mentioned, you need to quote y and n to compare string values. But even just having checked="" will result in your checkbox being checked. Try making your statements like this instead:

if ($course_completed1 == "y") {
    $checked2 = "checked='checked'";
} 
elseif ($course_completed1 == "n") {
    $checked2 = "";
}

echo "<input name='question[$rowid1][]' type='checkbox' $checked2 value='1' />$fn2 $ln2";

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.