我这里有一个代码,其中我有一个通过查询填充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());
}
}}}
}
非常欢迎澄清。希望你能帮我!非常感谢!
答案 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());
};
}
谢谢大家的帮助!上帝保佑!