Intereting Posts

Определите проверенную последовательность флажков, затем сохраните ее в базе данных mysql

У меня есть код, в котором у меня есть массив checkbox, заполненный данными 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()); } }}} } 

Пояснения приветствуются. Надеюсь, ты поможешь мне! Большое спасибо!

    Вы создаете скрытый ввод с вашими чекбоксами, а затем, когда вы отправляете форму, вы будете иметь $_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 с 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(), '')); } } }); });​ 

    Получено обнаружение проверенной последовательности флажков с помощью этого кода:

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

    Спасибо за вашу помощь! Бог благословил!