2016-08-14 2 views
0

안녕하세요 그래서 데이터베이스에서 들어오는 데이터를 필터링하고 표에 표시하려는 코드에 문제가 있습니다. 나는 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는 객체가 쿼리를 처리 할 것

+0

참고로, 문서 준비가 완료되기를 원하는 모든 것을 래핑하려면'$ (document) .ready (function() {') 만 필요합니다. – Rasclatt

+0

폼 안의 요소 대신에 온전한 옵저버를 폼에서 전체적으로 수행 할 수 있어야합니다. – Rasclatt

+0

또한 양식의 닫기 태그가 '