AJAX で使用しようとしている複数選択フォームがあります。ドロップダウンは、画像のフィルターとして機能するはずです。
インデックス.php
<script>
function filterResults(str)
{
if (str=="")
{
document.getElementById("divResults").innerHTML="";
return;
}
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 (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("divResults").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","filter_ajax.php?filter="+str,true);
xmlhttp.send();
}
</script>
<form action="" class="css_form" id="picture_filter" name="picture_filter">
<select onchange="filterResults(this.value)" multiple="multiple" name="filter[]" id="filter">
<option value="filter_name_1">Filter name 1</option>
<option value="filter_name_2">Filter name 2</option>
<option value="filter_name_3">Filter name 3</option>
<option value="filter_name_4">Filter name 4</option>
</select>
<div id="divResults"></div>
およびfilter_ajax.php
<?php
include ("connect.php");
$filter = $_GET["filter"];
$filterIn = implode("','",$filter);
$result = mysql_query("SELECT * FROM edt_images
WHERE category1 IN ('$filterIn')
OR category2 IN ('$filterIn')
OR category3 IN ('$filterIn')
OR category4 IN ('$filterIn')
OR category5 IN ('$filterIn')
OR category6 IN ('$filterIn')")
or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
echo "<img src='files/small/thumb0_".$row['item_name'].".".$row['file_extension']."' border='0'/>";
}
?>
私のデータベースでは、各画像にはカテゴリに対応する 6 つのエントリがあり、サブカテゴリで満たされています。したがって、アイテムが「フィルター ドロップダウン」から選択されると、その情報について 6 つの列ごとにクエリを実行する必要があります。ただし、次のエラーと出力が表示されます。
implode(): 無効な引数が渡されました ... 行 6.
テスト用に、5 つのエントリがあります。3 つは 6 つのカテゴリ エントリのすべての情報が入力されており、2 つは空白のままです。
空白のままになっている 2 つは、常に上記のエラーと共に返されます。
なぜこれが起こっているのか、誰にも考えがありますか?
前もって感謝します