2017-02-23 5 views
0

私はajax getリクエストで取得するデータをソートしようとしていますが、チェックされたカテゴリのみを取得するのではなく、2 /チェックされていますか?複数のカテゴリをAJAXで値で並べ替え

現在、「kategori」の下にデータベースに数字を挿入していますが、これらの数字を使ってソートする必要がありますか?

URLで両方のクエリを取得するにはどうすればよいですか?

ここで例:http://xch07.wi2.sde.dk/sandbox/SQL/

HTML

<form> 
    <input class="kategorier" type="checkbox" value="1">Kat 1<br> 
    <input class="kategorier" type="checkbox" value="2">Kat 2 <br> 
    <input class="kategorier" type="checkbox" value="3">Kat 3 
</form> 
<br> 
<div id="txtHint">Person info will be listed here... 
</div> 

JS/AJAX

var kategorier = document.getElementsByClassName("kategorier"); 
var kategorierLength = kategorier.length; 

for(let i=0; i < kategorierLength ;i++){ 
    kategorier[i].addEventListener('click', function(){ 
    showUser(this.value); 
    }); 
}; 

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; 
      } 
     }; 
     xmlhttp.open("GET","index.php?page=getuser&kategori="+str ,true); 
     xmlhttp.send(); 
    } 
} 

PHP

$kategori = intval($_GET['kategori']); 
mysqli_select_db($dbCon,"ajax_demo"); 
$sql="SELECT * FROM db_test WHERE kategori = $kategori "; 
$result = $dbCon->query($sql); 

echo "<table> 
<tr> 
<th>Id</th> 
<th>Navn</th> 
<th>Efternavn</th> 
<th>email</th> 
<th>Kategori</th> 
</tr>"; 
while($row = $result->fetch_object()) { 
    $id = $row->id; 
    $navn = $row->navn; 
    $efternavn = $row->efternavn; 
    $email = $row->email; 
    $kategori = $row->kategori; 

    echo "<tr>"; 
    echo "<td>" . $id . "</td>"; 
    echo "<td>" . $navn . "</td>"; 
    echo "<td>" . $efternavn . "</td>"; 
    echo "<td>" . $email . "</td>"; 
    echo "<td>" . $kategori . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 

答えて

2
<script type="text/javascript"> 
window.onload = function() { 

    var kategorier = document.getElementsByClassName("kategorier"); 
    var kategorierLength = kategorier.length; 

    for(var i=0; i < kategorierLength ;i++){ 
     kategorier[i].addEventListener('click', function(){ 

      var checked = ''; 

      for (var k = 0; k < kategorierLength; k++) { 

       if (checked) { 
        var separator = ','; 
       } else { 
        var separator = ''; 
       } 

       if (kategorier[k].checked) { 
        checked += separator+kategorier[k].value; 
       } 
      } 
      alert(checked); 
      if (checked) { 
       showUser(checked); 
      } 
     }); 
    } 
} 

その後、クエリを変更し、以下のようにIN文を使用する必要があります。

$kategori = $_GET['kategori']; 
mysqli_select_db($dbCon,"ajax_demo"); 
$sql="SELECT * FROM db_test WHERE kategori IN ($kategori)"; 
$result = $dbCon->query($sql); 
+0

このIN SQLには複数のカテゴリがあることがどのようにわかりますか?以前とまったく同じように動作するように見えますか? :) –

+0

$ _GET ['kategori']をPHPファイルで印刷できますか?カンマ区切りの文字列でなければなりません。 :) –

+0

確かに1秒ですが、この例ではJsを使用できますか?私はjQueryを使用しないでください:)更新する必要があります –

関連する問題