识别选中的复选框序列,然后保存到mysql数据库

时间:2012-08-30 02:44:04

标签: php javascript mysql checkbox sequence

我这里有一个代码,其中我有一个通过查询填充mysql数据的复选框数组。我可以成功地将已选中复选框的值提交到数据库中的表中。但我想要做的是根据用户检查复选框的顺序保存它。我被告知我可以通过javascript实现这一点但不幸的是,我根本不熟悉javascript。如果可能,您是否可以通过PHP提供实现此目的的步骤?如果没有,你可以指导我如何使用JavaScript实现这一点,因为我是一个新手。这是我的示例代码,让您想象我正在尝试做什么..

<?php
require("aacfs.php");
echo"<div align= center >
  <table width=300 border= 1 align= right><tr><th align=center bgcolor=silver><font face=consolas>Choose Itinerary</font></th></tr>
    <tr>
      <td></br>
      <form method=post>"; 


$result=mysql_query(" select * from itinerary group by location");
    $y=mysql_affected_rows();
    for($i=0;$i<$y;$i++)
    {$row=mysql_fetch_array($result);
        $pr=$row['icode'];
        $n=$row['location'];
        $l=$row['btime'];
echo"<table border=1 align=center width=250>
          <tr><td width=15><input name=prod[] type=checkbox value='$pr'></td><td>$n</td></tr>
          </table>";
        $t=$_POST[prod];

        }
echo"</td></tr></table>";

echo"      

    <table width= 664 border= 1  align= left >
    <tr><td height= 282 ><p align= center  class= style77>
<p align= right ><h4>$d</h4></p>
<p align= center ><font face=consolas><b>Itinerary List</b></font></p>
<p align=center><font face=consolas>To change your itinerary list, choose again.</font></p>

<br>
  <center><input name=add  type= submit  value='Add to Itinerary List'></center>
<br>  
<table width=654  border= 1>
  <tr bgcolor = silver align=center>
    <td>Itinerary</td>
    <td>Block Time</td>

 </tr></form>";


 if(isset($_POST['add']))
{           
if(isset($_POST[prod]))
 {  foreach($t as $k)
    {$result=mysql_query("select * from itinerary where icode='$k'");
    $y=mysql_affected_rows();

for($x=0;$x<$y;$x++)
{$row=mysql_fetch_array($result);
        $r=array($row['icode']);
        $n=$row['location'];
        $p=$row['btime'];   



    echo"<form method=post><tr>
<td>$n</td>
<td>$p</td>
 </tr>";

    $a=$_POST[pro];
    $stat1='Not Submitted';

foreach($r as $a=>$l)
{

$kdot=mysql_query("select max(reservno) as 'maxr' from reservation") or die(mysql_error());
$row2=mysql_fetch_array($kdot);
$fi=$row2['maxr'];
mysql_query("insert into location_list(reservno, icode, location, status) values('$fi', '$l', '$n', '$stat1')") or die(mysql_error());
}
}}}

}

非常欢迎澄清。希望你能帮我!非常感谢!

2 个答案:

答案 0 :(得分:1)

您使用自己的checbox创建隐藏输入,然后在提交表单时,您将$_POST['sequence']按顺序点击所有点击:

​<input id="sequence" name="sequence" />
<input type="checkbox" class="check" name="checkbox1" value="checkbox1"​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​>
<input type="checkbox" class="check" name="checkbox2" value="checkbox2">
<input type="checkbox" class="check" name="checkbox3" value="checkbox3">
<input type="checkbox" class="check" name="checkbox4" value="checkbox4">

然后,您在此示例中使用类check绑定每个复选框的点击次数

var windowOnload=window.onload||function(){};window.onload=function(){windowOnload();};
window.onload = function(){

    var all = document.getElementsByTagName("input");
    for (var i=0;i<all.length;i++) {
        if(all[i].className == 'check'){
            all[i].onclick = inputClickHandler;
        }             
    }
};

function inputClickHandler(e){
    e = e||window.event;
    var inputElm = e.target||e.srcElement;
    var text = inputElm.value;
    var target = document.getElementById('sequence');
    if(inputElm.checked == true){
        if(target.value == ''){
            target.value = text;
        } else {
            target.value = target.value+','+text;
        }
    } else {
         var textToSearch = text+',';
         var textAlternative = ','+text;
         var regex = new RegExp( '\\b' + textToSearch + '\\b' );
         var regex2 = new RegExp( '\\b' + textAlternative + '\\b' );
         if(regex.test( target.value )){
             target.value = target.value.replace(textToSearch, '');
         } else if(regex2.test( target.value )){
             target.value = target.value.replace(textAlternative, '');
         } else {
             target.value = target.value.replace(text, '');
         }
    }
}​

您也可以使用jQuery来实现这一目标(它更清洁可靠):

$(window).load(function(){
    $('.check').on('click', function(){
        if($(this).attr('checked')){
            if($('#sequence').val() == ''){
                $('#sequence').val($(this).val());
            } else {
                $('#sequence').val($('#sequence').val()+','+$(this).val());
            }
        } else {
             var targetValue = $('#sequence').val();
             var textToSearch = $(this).val()+',';
             var textAlternative = ','+$(this).val();
             var regex = new RegExp( '\\b' + textToSearch + '\\b' );
             var regex2 = new RegExp( '\\b' + textAlternative + '\\b' );
             if(regex.test( targetValue )){
                 $('#sequence').val(targetValue.replace(textToSearch, ''));
             } else if(regex2.test( targetValue )){
                 $('#sequence').val(targetValue.replace(textAlternative, ''));
             } else {
                 $('#sequence').val(targetValue.replace($(this).val(), ''));
             }
        }
    });
});​

答案 1 :(得分:0)

通过以下代码检测到已检查的复选框序列:

<script type="text/javascript"> 
<!--

$(document).ready(function(){

    var array = [];


    $("input[type=button]").click(function(){
    for (var i = 0; i < array.length; i++){  
    if (array[i] == $(this).attr('value')){  
    array.splice(i, 1);  
    }  
    }  
    alert(array.length);
    });




    $('input[type="checkbox"]').click(function(){

    if ($(this).attr('checked')){
    // Add the new element if checked:  
    array.push($(this).attr('value'));
    //alert(array2.push($(this).attr('name')));
    }

    else{ 
    // Remove the element if unchecked:  
    for (var i = 0; i < array.length; i++){  
    if (array[i] == $(this).attr('value')){  
    array.splice(i, 1);
    }
    }
    }






        $("#result").show(function(){
        $(this).val("");
        for (var i = 0; i < array.length; i++){
    $(this).val($(this).val() + " " + array[i]+ "\n");
        }
        });

    });

}); 
//--> 
</script>

我在我的复选框中绑定它。

$result=mysql_query(" select * from itinerary group by location");
    $y=mysql_affected_rows();
    for($i=0;$i<$y;$i++)
    {$row=mysql_fetch_array($result);
        $pr=$row['icode'];
        $n=$row['location'];
        $l=$row['btime'];
echo"<table border=1 align=center width=250>
          <tr><td width=15>
          <input type='checkbox' value='$n -> $l' id='cb1'>
</td><td>$n</td><td width=4>$l</td></tr>
          </table>";

然后在textarea输出。

<textarea name=resulta id='result' style='height:200px; width:350px' disabled='disabled'></textarea>

我可以通过以下方式将其保存在我的数据库中:

echo "<form><center><input type=submit name='pindot' value='Gora Men~'></center></form>";
$val=$_POST['resulta'];
if (isset($_POST['pindot']))
{
$lines = explode("\n", $val);

foreach ($lines as $line) {
    // $line here is a string
    // build a query based on it and execute it
    mysql_query("insert into postflight (sample_lang) values ('$line')") or die(mysql_error());

};
}

谢谢大家的帮助!上帝保佑!