为了账号安全,请及时绑定邮箱和手机立即绑定

如何在php中显示数据库中选中的复选框?

如何在php中显示数据库中选中的复选框?

PHP
浮云间 2021-09-05 20:52:29
我想显示已选中的复选框,这些复选框作为值存储在 mysql 数据库中。现在,该表存储在数据库中选中的复选框的值。标题和第一列是从数据库中的三个不同表中获取的。选中复选框的值保存在同一个表中。这是插入数据的代码。$active = "CourseReport";require_once 'pages/header.php';require_once './functions/schema-functions.php';require_once './functions/report-functions.php';$course = Schema::getCourseReport();$objective = Schema::getObjective();$goals = Schema::getGoals();$mainobj = Schema::getMainObjectives();$subobj = Schema::getSubObjectives(); ?><form id="addReport" action ='./functions/report-functions.php' method="post"><table id="table1" class="table table-hover">    <thead>    <?php    echo '<tr><th>Goals</th>';    for ($i = 0; $i < count($course); $i++) {        echo '<th id = "rotate1">'. $course[$i]->commonName . '</th>';                }    echo '</tr>';       ?>    </thead>        <tbody>    <?php    for ($y = 0; $y < count($goals); $y++) {                   echo '<tr class="clickable"><th class="toggle">Goal#'.$goals[$y]['GoalId'].':'." " .' '.$goals[$y]['Goals'].'</th>        </tr>';              ?>    <?php    for( $z = 0; $z < count($mainobj); $z++){  if($mainobj[$z]['GoalId'] == $goals[$y]['GoalId']) {        echo '<tr class="expander"><th class=row-header>Objective#'.$mainobj[$z]['MainObjId'].':'." ".' '.$mainobj[$z]['MainObjectives'].'</th>    </tr>';     ?>    <?php    for ($j = 0; $j< count($subobj); $j++) {       if($mainobj[$z]['MainObjId'] == $subobj[$j]['MainObjId']){       echo '<tr class="expander"><td class=row-header>'.$subobj[$j]['SubObjId'].' ) '.$subobj[$j]['SubObjectives'].' </td>';   for ($x = 0; $x < count($course); $x++) {      echo "<td><input name='check[]' type=checkbox value=c".$course[$x]->courseId."-o".$subobj[$j]['SubObjId']." id=checked></td>";        }        echo '</tr>';    }   }  } }}           ?>               </tbody>       </table><button class="button" name= "submit" value= "Submit">Submit</button></form>
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

当您显示您的页面(在您的第一段代码中)时,您有时会这样做:


echo "<td><input name='check[]' type=checkbox value=c".$course[$x]->courseId."-o".$subobj[$j]['SubObjId']." id=checked></td>";

该值设置为:


value=c"c.$course[$x]->courseId."-o".$subobj[$j]['SubObjId']";

该值是您在评论中提到的选中或未选中的值(如c1-o1.1)。


对。所以在你这样做之前echo,添加一个新的if条件。


$value = "c$course[$x]->courseId" . "-o$subobj[$j]['SubObjId']";

if (verify_checked($value)) {

    $checked_code = "checked=\"checked\"";

}

else {

    $checked_code = "";

}

echo "<td><input name='check[]' type=checkbox value=$value id=checked $checked_code ></td>";

该verify_checked(value)函数执行(根据我对您的数据库的了解,您保留已检查元素的“网格位置”):


function verify_checked($value)

{

    // Connect to the database if needed

    // Perform: SELECT count($value) FROM Report

    // If the result is >0, return TRUE

    // Else return FALSE

}

这里的想法是在每次要回显<input>元素时查询数据库。

连接文本的注意事项,我发现在 周围放置空格.以清楚地分割文本的一部分和连接点是更清晰的。

如前所述,缩进对于理解不同的上下文至关重要。在我缩进你的代码之前,我还没有意识到不同的循环是如何与其他循环相关的。



查看完整回答
反对 回复 2021-09-05
  • 1 回答
  • 0 关注
  • 197 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信