如何在PHP中以检查顺序获取复选框值

时间:2015-01-14 09:35:12

标签: php checkbox

在注册部分会有一些图像,每次刷新都会自动进行随机播放。用户应该选择一个或多个图像(勾选相应的复选框),它将存储在数据库中而不是密码。它将正常工作,问题出现在登录页面中。我希望按顺序检查复选框的值。这意味着如果我选中了第二个复选框,然后是第一个框,则值将获得相同的顺序。

这是代码

<?php
include("config.php");
if(isset($_POST['s'])){
$username=$_POST['username'];
if(isset($_POST['chk1']))
{
 $t1=implode(',', $_POST['chk1']);
}
echo $t1;
$query=mysql_query("select *from register where username='$username' and password='$t1'");
$res=mysql_num_rows($query);
if($res>0)
{
session_start();
$_SESSION['usr']=$username;
header("location:userhome.php");
}
else
{
 echo mysql_error();
 }
 }
 ?>

<body>
<form action="" method="post">
<table width="200" border="0">
<th colspan="2" scope="row"><a href="register.php">
<font color="#FF0000">New Registration</font>      </a></th>
</tr>
<tr>
<th scope="row">Username</th>
<td><label for="username"></label>
<input type="text" name="username" id="username" /></td>
</tr>
<tr>
<th colspan="2" scope="row"><u>Choose Password</u></th>
</tr>
<tr>
<th scope="row">&nbsp;</th>
<td>&nbsp;</td>
</tr>
</table>
<div align="center">
<?php
$images = array(
'<input name="chk1[]" type="checkbox" value="1" />
<img src="images/images (4).jpg" alt="" width="234" height="212" />',
'<input name="chk1[]" type="checkbox" value="2"  />
<img src="images/images (6).jpg" alt="" width="234" height="212" />',
'<input name="chk1[]" type="checkbox" value="3" />
<img src="images/images (5).jpg" alt="" width="234" height="212" />', 
'<input name="chk1[]" type="checkbox" value="4" />
 <img src="images/drt.jpg" alt="" width="234" height="212" />',
'<input name="chk1[]"   type="checkbox" value="5" />
 <img src="images/rf.jpg" alt="" width="234" height="212" />',
'<input name="chk1[]" type="checkbox" value="6" />
<img src="images/yu.jpg" alt="" width="234" height="212" />', 
'<input name="chk1[]" type="checkbox" value="7" />
 <img src="images/ed.jpg" alt="" width="234" height="212" />'
  );
shuffle($images); // Randomize images array;
echo $images[0];
echo $images[1];
echo $images[2];
echo $images[3];
echo $images[4];
echo $images[5];
echo $images[6];
?>



       

1 个答案:

答案 0 :(得分:1)

PHP无法实现,您需要在JavaScript中实现它 使用JS创建内部aray以存储复选框检查顺序并发送 它到PHP目标文件。

在这里,我写了一个&#34; easy&#34;但不是优雅的解决方案,例如:

<form name="myform">

    <input id="chk1" name="chk1" type="checkbox" onclick="validate1()" /> test 1

    <input id="chk2" name="chk2" type="checkbox" onclick="validate2()" /> test 2

    <input id="chk3" name="chk3" type="checkbox" onclick="validate3()" /> test 3

    <input type="hidden" name="order"/>

    <input type="button" value="Click me" onclick="fin()">
</form>

    <script>
    var arrChecks = [];
    function validate1(){
        if (document.getElementById('chk1').checked) arrChecks.push( 1 );
    }

    function validate2(){
        if (document.getElementById('chk2').checked) arrChecks.push( 2 );
    }

    function validate3(){
        if (document.getElementById('chk3').checked) arrChecks.push( 3 );
    }

    function fin(){

        alert(arrChecks); // Show order, only for debug

       document.myform.order.value = arrChecks.toString(); // Array of checked options order
       document.myform.submit();                           // Send to php file
    }
    </script>

为了使其更优雅和优化,需要动态迭代。但是这段代码可行。

问候