【问题标题】:Identify checked checkbox sequence then save to mysql database识别选中的复选框序列然后保存到mysql数据库
【发布时间】:2012-08-24 17:24:43
【问题描述】:

我在这里有一个代码,其中我有一个复选框数组,通过查询填充了 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());
}
}}}

}

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

【问题讨论】:

    标签: php javascript mysql checkbox sequence


    【解决方案1】:

    您使用复选框创建一个隐藏输入,然后当您提交表单时,您将按顺序获得$_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(), ''));
                 }
            }
        });
    });​
    

    【讨论】:

    • 这对我来说有点复杂。正如我告诉过你的,我是 javascript 或 jQuery 的新手。难道没有更简单的方法来实现这一点吗?非常感谢您的回复。
    • 我尝试运行您提供的代码以及 jQuery 代码,但它所做的只是显示一个文本框和四个复选框。它没有做更多的事情。我很抱歉我的缺乏,但我真的不明白。 :( 不过还是谢谢你的回复。:)
    • @xjshiya 当然显示四个复选框;这就是示例被编码的目的。这是一个示例,并不意味着完全复制;如果不进行修改,它将无法与您的代码一起使用。
    • 那么 jQuery 代码应该如何处理 html 代码呢?他们是什么关系?
    • 这里,在JSFiddle上举个例子你会更好理解
    【解决方案2】:

    通过此代码检测到选中的复选框序列:

    <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 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());
    
    };
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2015-10-25
      相关资源
      最近更新 更多