猿问

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

我想显示已选中的复选框,这些复选框作为值存储在 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>


浮云间
浏览 198回答 1
1回答

慕田峪4524236

当您显示您的页面(在您的第一段代码中)时,您有时会这样做: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)) {&nbsp; &nbsp; $checked_code = "checked=\"checked\"";}else {&nbsp; &nbsp; $checked_code = "";}echo "<td><input name='check[]' type=checkbox value=$value id=checked $checked_code ></td>";该verify_checked(value)函数执行(根据我对您的数据库的了解,您保留已检查元素的“网格位置”):function verify_checked($value){&nbsp; &nbsp; // Connect to the database if needed&nbsp; &nbsp; // Perform: SELECT count($value) FROM Report&nbsp; &nbsp; // If the result is >0, return TRUE&nbsp; &nbsp; // Else return FALSE}这里的想法是在每次要回显<input>元素时查询数据库。连接文本的注意事项,我发现在 周围放置空格.以清楚地分割文本的一部分和连接点是更清晰的。如前所述,缩进对于理解不同的上下文至关重要。在我缩进你的代码之前,我还没有意识到不同的循环是如何与其他循环相关的。
随时随地看视频慕课网APP
我要回答