2つのHTMLドロップダウン、名前と日付があります。名前を選択すると、その名前に対応する日付のみの日付ドロップダウンがフィルタリングされます。選択後、結果はフィルタリングされ、テーブルに表示されます。複数のドロップダウン選択に基づくテーブル結果のフィルタリング
たとえば、Name A
を選択すると、テーブルにはName A
のすべての結果が表示されます。その後、Date A
を選択すると、Date A
のすべての結果が表に表示されます。しかし、名前を最初に選択した後に日付を選択すると、テーブル結果の両方にフィルタが適用されるようにフィルタ処理します。このよう
: Name A
が選択されている場合は、その後、Date A
が選択され、テーブルにはName A
とDate A
のためのすべての結果を表示します。
現在、変数$q
を使用して、現在のドロップダウンリストのみを保存しています。複数選択で結果をフィルタリングできるようにするにはどうすればよいですか?
HTMLドロップダウン:
<form name="testForm" action="">
<select id="collector" onchange="showUser(this.value)">
<option value="" selected="selected" disabled="disabled">Collector Name</option>
<?php foreach($collect->fetchAll() as $name) { ?>
<option class="choice" value="<?php echo htmlspecialchars($name['Collector Name']);?>"><?php echo $name['Collector Name'];?></option>
<?php } ?>
</select>
<select id="date" onchange="showUser(this.value)">
<option value="" selected="selected" disabled="disabled">Bill Date</option>
<?php foreach($bill_date->fetchAll() as $date) { ?>
<option class="choice" value="<?php echo $date['Date'];?>"><?php echo $date['Date'];?></option>
<?php } ?>
</select>
</form>
JavaScriptの名前の選択が行われた後、日付のドロップダウンフィルタselectタグとのonchange内のJavaScript関数の外でのonchangeと呼ばれているhead
タグ内:
function showUser(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
var newTableObject = document.getElementById('billing_table');
sorttable.makeSortable(newTableObject);
}
}
xmlhttp.open("GET","dropdown-display.php?q="+str,true);
xmlhttp.send();
document.getElementById('billing_table').style.display = 'none';
}
}
$(document).ready(function(){
$("#collector").change(function(e){
$.post('index-ajax.php',{filter:'Name',by:$(this).val()},function(data){
$("#date .choice").hide();
$.each(data, function(key,row) {
// $("#date option[value='"+ row.item +"']").show();
$("#date option").filter(function(i){
return $(this).attr("value").indexOf(row.item) != -1;
}).show();
});
},"JSON");
});
});
を
そして最近選択したドロップダウンアイテムの値はdropdown-display.php
で$q
になります。これをクエリに使用してテーブル結果をフィルタリングします:
$q = ($_GET['q']);
これは私が必要としているものです。助けてくれてありがとう! – Rataiczak24
ねえ、私があなたがこれで私を助けてくれて以来、私が持っていたこの問題に関連するものであなたを助けてくれるかどうか、私は疑問に思っていました。行を保存するたびに、テーブルに結果を再度フィルタリングして、最新の結果を表示し、編集して保存した行が表示されないようにします。基本的にajaxが完了するたびに再実行するためのクエリが必要です。これは私がonchangeイベントを持っていたときに働いていましたが、今は持っていないので、この問題を解決する解決策を見つけることはできませんでした。私はここに投稿しています。 – Rataiczak24
https://stackoverflow.com/questions/47265342/running-sql-query-after-ajax-completes/47266435#47266435 – Rataiczak24