2014-06-26 145 views
2

我有一个数据库表While循环 - PHP - 关闭支架动态

Column1 | Column2 
----------------- 
    1 | Program1 
    2 | Program2 
    3 | Program3 

。 。 。

这些都是在网页中列为复选框.. 用户点击提交之前,我需要他在节目

ATLEAST选择这是我的javascript

var chkd = document.form1.Program1.checked 
     if (chkd) { 
     return true; 
     } else { 
     var chkd2 = document.form1.Program2.checked 
     if (chkd2) { 
      return true; 
     } else { 
      var chkd3 = document.form1.Program3.checked 
      if (chkd3) { 
       return true; 
      } else { 
       var chkd4 = document.form1.program4.checked 
       if (chkd4) { 
        return true; 
       } else { 
      var chkd5 = document.form1.Program5.checked 
        if (chkd5) { 
        return true; 
        } else {  
        alert ("Please select atleast one training program"); 
        return false; 
          } 
      } 
        } 
       } 
      } 

截至目前的节目数量现在需要动态地改变它们。新程序将被添加并删除旧程序。

把复选框从我已通过环使它的数据库,但我不能得到由环适当地呼应了JavaScript的(我不能得到关闭括号)

这里是我做的,到目前为止,

$sql=blah blah blah 
$result = mysqli_query($con, $sql); 
echo "<script>"; 
while($row = mysqli_fetch_array($result)) 
    { 
    if ($_SESSION["$row[1]"]=="Y") 
     { 
     echo " 
     var chkd$row[0] = document.form1.$row[1].checked 
     if (chkd$row[0]) { 
      return true; 
     } else { 
     "; 
     } 
    } 
echo "</script>"; 
?> 

此输出的

<script> 
var chkd1 = document.form1.Program1.checked 
if (chkd1) { 
    return true; 
} else { 

var chkd2 = document.form1.Program2.checked 
if (chkd2) { 
    return true; 
} else { 

var chkd3 = document.form1.Program3.checked 
if (chkd3) { 
    return true; 
} else { 

var chkd4 = document.form1.Program4.checked 
if (chkd4) { 
    return true; 
} else { 

var chkd6 = document.form1.Program5.checked 
if (chkd6) { 
    return true; 
} else { 
</script> 

现在怎么能为我的JavaScript已经打开我动态关闭尽可能多的括号.. 我是一个绝对的初学者,我仍然在学习,所以我不能正确的语法。 对于这么长的帖子道歉。 谢谢。

+0

你确定这是'document.form1'而不是'document.forms.form1'? –

回答

4

如果你回来了,你根本不需要其他的东西,Javascript会在它被告知返回时停止函数的执行。

var chkd1 = document.form1.Program1.checked 
    if (chkd1) { 
     return true; 
    } 

    var chkd2 = document.form1.Program2.checked 
    if (chkd2) { 
     return true; 
    } 

    var chkd3 = document.form1.Program3.checked 
    if (chkd3) { 
     return true; 
    } 
+0

是的,你说得对。现在我的支架问题已解决;)。谢谢 –

1

总是可以添加一个计数器,然后迭代通过多次关闭括号。

$count=0; 
while($row = mysqli_fetch_array($result)) 
{ 
    if ($_SESSION["$row[1]"]=="Y") 
    { 
     echo " 
      var chkd$row[0] = document.form1.$row[1].checked 
      if (chkd$row[0]) { 
       return true; 
      } else { 
      "; 
     $count++; 
    } 
} 
for($i=0;$i<$count;$i++) 
{ 
    echo "}"; 
} 
+0

虽然我的回答是你的问题,但听他的解决方案要合理得多。 –

+0

是的,你是对的,这种方式它的工作,但作为scragar指出,没有必要添加'其他',我会简单地删除它。谢谢。 –

1

你不需要循环输出任何东西。只需使用Javascript:

for (var key in document.forms.form1.children) // not just document.form1 
    if (document.forms.form1.children[key].name != undefined && document.forms.form1.children[key].name.substring(0,7) == "Program" && document.forms.form1.children[key].checked) 
     return true; 
alert ("Please select atleast one training program"); 
return false; 
+0

这段代码对于我来说太复杂了。但是,正如我可以理解的那样,假设有7个程序在我的场景中不起作用。谢谢。 –

+0

@huz_akh不,单词“程序”由7个字符组成。我正在检查儿童的姓名,看看前7个字符是否是“程序”。 –

+0

@huz_akh顺便说一句,我刚刚编辑我的答案,并已修复 –

0

用户选中或未选中使用Jquery的复选框即可轻松管理。为此,您不必动态生成JavaScript代码。

只是把这个代码,它会返回true,如果用户已经检查任何一个或多个复选框,并返回false是不支票checkbook。

if($("INPUT[checkbox]").is(':checked')) 
{ 
     return true; 
}else { 
     return false; 
} 

我希望这将帮助你..

+1

你假设使用jQuery –

+0

我建议你使用jQuery,因此它可以轻松管理。 –

+0

我不知道jquery ..对不起 –