【问题标题】:Dynamically Checking Checkboxes from Array动态检查数组中的复选框
【发布时间】:2014-05-19 03:35:54
【问题描述】:

给定 varchar mysql 字段 1,3,6 中的数据

我有 7 个用于 SUN MON TUE WED WED THU FRI SAT 的复选框 我已经存储了需要检查的日期,但我想显示所有未选中和选中的框

所以对于我的示例输出将是 SUN(checked) MON TUE(checked) WED THU FRI(checked) SAT 这 7 个词代表复选框。假设数据是 varchar mysql 字段 1,3,6

我的代码部分工作,因为它只会显示需要检查的第一天,而不是其他天。它确实显示了未选中的复选框,这很好。

这是我的代码: 顺便说一句,如果格式很奇怪,对不起!我是新来的。

 <? php
  $RecurringDays = explode(",", $recur['weekday']);
 for ($i = 1; $i <= count($RecurringDays) - 1; $i++) {
     if ($RecurringDays[$i - 1] == "1") {
         echo "<td><input type='checkbox' name='0' id='0' checked='checked' />";
         echo "<label for='0'>Sun </label></td>";
         continue;
     } else {
         echo "<td><input type='checkbox' name='0' id='0' />";
         echo "<label for='0'>Sun </label></td>";
     }
     if ($RecurringDays[$i - 1] == "2") {
         echo "<td><input type='checkbox' name='1' id='1' checked='checked' />";
         echo "<label for='0'>Mon </label></td>";
         continue;
     } else {
         echo "<td><input type='checkbox' name='1' id='1'  />";
         echo "<label for='0'>Mon </label></td>";
     }
     if ($RecurringDays[$i - 1] == "3") {
         echo "<td><input type='checkbox' name='2' id='2' checked='checked' />";
         echo "<label for='0'>Tue </label></td>";
         continue;
     } else {
         echo "<td><input type='checkbox' name='2' id='2' />";
         echo "<label for='0'>Tue </label></td>";
     }
     if ($RecurringDays[$i - 1] == "4") {
         echo "<td><input type='checkbox' name='3' id='3' checked='checked' />";
         echo "<label for='0'>Wed </label></td>";
         continue;
     } else {
         echo "<td><input type='checkbox' name='3' id='3' />";
         echo "<label for='0'>Wed </label></td>";
     }

【问题讨论】:

  • 如果选中框和未选中框的区别只是“选中”属性,最好删除所有“ifs”并执行以下操作: >.
  • 和... 为什么不使用数组并循环遍历它,而不是对每个值进行硬编码? $ar = array('0' => 'Sun', '1' => 'Mon' ...) 然后 foreach ($ar as $id => $day) ...
  • 好的,我有一个数组,我循环遍历它我已经完成了 > 但是每次没有更好的方法时我都必须通过数组?

标签: javascript php html date


【解决方案1】:

根据您的代码(因为它们在 for 循环中),您的代码只会回显 varchar 中的天数。我推荐以下编辑。

<?php
//The days in the database
//$recurringDays = explode(",", $recur['weekday']); //expected an array(1,3,6) 
$recurringDays = array(1,3,6) ;
//The days in a the week    
$days = array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
for($i = 1; $i < 7; $i++ ){
    if(in_array($i,$recurringDays)){
     echo "<td><input type='checkbox' name='0' id='".$i."' checked='checked' />";
         } else {
             echo "<td><input type='checkbox' name='0' id='".$i."' />";             
         }
     echo "<label for='".$i."'>".$days[$i]." </label></td>";
    }

【讨论】:

  • 我必须修复一些错误,但这里是工作代码 //数据库中的天数 $recurringDays = explode(",", $recur['weekday']); //需要一个数组(1,3,6) //一周中的天数 $dayss = array("Sun","Mon","Tue","Wed","Thu","Fri","星期六"); for ($i = 0; $i "; } else { echo " "; } echo " "; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-09
相关资源
最近更新 更多