0

ここに、クエリを介して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());
}
}}}

}

明確化は大歓迎です。あなたが私を助けてくれることを願っています!どうもありがとう!

4

2 に答える 2

1

チェックボックスで非表示の入力を作成すると、フォームを送信する$_POST['sequence']と、すべてのクリックが順番に表示されます。

​&lt;input id="sequence" name="sequence" />
<input type="checkbox" class="check" name="checkbox1" value="checkbox1"​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​&gt;
<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(), ''));
             }
        }
    });
});​
于 2012-08-30T03:15:39.800 に答える
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 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());

};
}

ご協力ありがとうございました!神のご加護を!

于 2012-08-31T01:46:00.917 に答える