안녕하세요 그래서 데이터베이스에서 들어오는 데이터를 필터링하고 표에 표시하려는 코드에 문제가 있습니다. 나는 AJAX를 사용하여 PHP 페이지에 요청을 보낸다. 솔루션을 찾는 데 어떤 행운이 없었습니다. (사용자가 검색 상자에서 위치를 입력하고 검색 한 다음 2 개의 드롭 다운 메뉴를 사용하여 표시된 데이터를 필터링 할 수있는 일반 부동산 웹 사이트 또는 소매점과 유사합니다.입력 상자 및 드롭 다운 메뉴를 사용하여 데이터를 필터링하는 방법
내가 확신으로 내 index.php를 페이지, 다른 질문 이상 (아약스가 될 것입니다 3 개 입력 (텍스트 상자 및 2 드롭 다운)
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" class="searchForm" id="search" placeholder="Stuff" autocomplete="off">
<div id="here"></div>
<select class="orderType" name="type" id="orderByType" data-toggle="dropdown" onchange="displaySelection(this.value)">
<option value="" selected>--------</option>
<option value="dropdown1" selected>Dropdown1</option>
<option value="dropdown1" selected>Dropdown1</option>
</select>
<select class="order" name="order" id="orderBy" data-toggle="dropdown">
<option value="" selected>--------</option>
<option value="lowest">Lowest</option>
<option value="highest">Highest</option>
</select>
</form>
<div id="searchTable">
그 다음의 index.php 페이지 내 아약스 전화를 가지고)
function fill(Value)
{
$('#search').val(Value);
$('#here').hide();
}
$(document).ready(function(){
$("#search").keyup(function(){
var x = $('#search').val();
if(x==""){
$("#here").html("");
$('#searchTable').html("");
}
else{
$.ajax({
type:'POST',
url:'test.php',
data:'q='+x,
success:function(html){
$("#here").html(html).show();
}
});
}
});
$('.searchForm').change(function(){
var type = $('#search').val();
var city = $('#city').text();
$.ajax({
type: 'POST',
url: 'test.php',
data: { search : type, city : city },
success: function(response){
$("#searchTable").html(response);
$('#search').live("keypress",function(e){
var code = (e.keyCode ? e.keyCode : e.which);
if(code == 13){
e.preventDefault();
e.stopPropagation();
$('#searchTable').show();
}
});
}
});
});
$('.orderClass').change(function(){
var order = $('#orderBy').val();
var city = $('#city').text();
$.ajax({
type: 'POST',
url: 'test.php',
data: { orderBy : order, city : city },
success: function(response){
$("#searchTable").html(response);
}
});
});
$('.orderType').change(function(){
var type = $('#orderByType').val();
var city = $('#city').text();
$.ajax({
type: 'POST',
url: 'test.php',
data: { orderByType : type, city : city},
success: function(response){
$("#searchTable").html(response);
}
});
});
});
그리고 test.php (필자는 2 개 드롭 다운 메뉴를 이용해 데이터를 필터링 할 수 있습니다 그리고 그것은 잘 작동합니다,하지만 난 해요에서의 데이터를 전송하는 나는,이 것보다 더 좋은 방법이있다 검색 입력 상자에서 표시되는 데이터를 필터링하는 방법을 모릅니다.)
$stmt = "SELECT * FROM places";
if(isset($_POST['search'])){
$search = htmlspecialchars($_POST['search']);
$stmt .= " WHERE name = :search";
}
if(isset($_POST['orderByType'])){
$selection = $_POST['orderByType'];
$stmt .= " AND type = :selection";
}
if(isset($_POST['orderBy'])){
$order = $_POST['orderBy'];
$selection = $_SESSION['id'];
$stmt .= " ORDER BY".$order;
}
$stmt = $conn->prepare($stmt);
$search = "%".$search."%";
$stmt->bindValue(':search', $search, PDO::PARAM_STR);
$stmt->bindParam(":selection", $selection);
if($stmt->rowCount() > 0){
$result = $stmt->fetchAll();
foreach($result as $row){
echo $row['data'];
}
}
//Search input live search
if(!empty($_POST['q'])){
$name = $_POST['q'];
$name = htmlspecialchars($name);
$liveSearch = $conn->prepare("SELECT name, city FROM places WHERE name LIKE :name OR city LIKE :name");
$name = "%".$name."%";
$liveSearch->bindValue(':name', $name, PDO::PARAM_STR);
$result = $liveSearch->fetchAll();
if($liveSearch->rowCount() > 0){
foreach($result as $row){
echo $row['name'];
}
}
else{
echo "No results found";
}
}
사전에
감사합니다 (사용자 입력을 사용하여 검색 한 후 드롭 다운 메뉴를 사용하여 필터링 할 수 있습니다 장소에서 좋은 시스템이 있다면, 알려 주시기 바랍니다). 내가이 일을가는 경우에, 나는 아마 재사용 이유로 아약스 객체와 PHP는 객체가 쿼리를 처리 할 것
참고로, 문서 준비가 완료되기를 원하는 모든 것을 래핑하려면'$ (document) .ready (function() {') 만 필요합니다. – Rasclatt
폼 안의 요소 대신에 온전한 옵저버를 폼에서 전체적으로 수행 할 수 있어야합니다. – Rasclatt
또한 양식의 닫기 태그가 '