1

I need to set the state of a checkbox using bootstrap-switch based on values from a mysql database.

I am trying to do it with PHP like this but it doesn't seem to work, the code is an excerpt:

while ($row = $result->fetch_assoc()) {

    $checkdevicestate = $row["devicestatus"];
    if ($checkdevicestate == "false") {
        $devstatus = "";
    } else if ($checkdevicestate == "true") {
        $devicestatus = "checked";
    }   

    $devicecontent .= '<tr><td style="width:60%"><span data-icon="7" class="linea-icon linea-basic fa-fw"></span>'. $row["devicename"] .'</td><td style="width:100%"><input type="checkbox" id="' . $row["devicecode"].'" '.$devicestatus.' class="devicebtn"data-on-color="info" data-size="small"data-off-color="danger"></td></tr>';
}

The switch check-state seems random and not based on the values I am receiving from the DB.

borracciaBlu
  • 4,017
  • 3
  • 33
  • 41
Bruno
  • 511
  • 2
  • 6
  • 19

1 Answers1

0

The code seems fine I would just fix the comparison operator to === to be sure about the type.

while ($row = $result->fetch_assoc()) {
    $checkdevicestate = $row["devicestatus"];
    if ($checkdevicestate === "false") {
        $devstatus = "";
    } else if ($checkdevicestate === "true") {
        $devicestatus = "checked";
    }   

    $devicecontent .= '<tr><td style="width:60%"><span data-icon="7" class="linea-icon linea-basic fa-fw"></span>'. $row["devicename"] .'</td><td style="width:100%"><input type="checkbox" id="' . $row["devicecode"].'" '.$devicestatus.' class="devicebtn"data-on-color="info" data-size="small"data-off-color="danger"></td></tr>';
}

If you don't have any strange state in $row["devicestatus"] you can even just use a ternary operator.

$devicestatus = ($checkdevicestate === "true") ? "checked='checked'" : '';
Community
  • 1
  • 1
borracciaBlu
  • 4,017
  • 3
  • 33
  • 41