以下のテキストボックスを使用してタグを追加しています。
任意のタグ(ここでは「Java」と入力)を入力してEnterキーを押すと、jqueryのtagit()が呼び出されます。
$(function () {
var availableTagname = [<?=$testTagname?>];
$('#demo4').tagit({tagSource:availableTagname, sortable:true, tagsChanged:function (a) {
Counttagname(a);
} });
「a」はテキストボックスの値です。a = Java ここ。次に Counttagname() が呼び出されます。
function Counttagname(value)
{
if(value!="")
{
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("divcounttagname").innerHTML="";
document.getElementById("divcounttagname").innerHTML=xmlhttp.responseText;
}
}
// alert(value);
xmlhttp.open("GET","<?=base_url()?>index.php/admins/joborders/bindcounttagname/"+value,true);
xmlhttp.send();
}
else
{
document.getElementById("divcounttagname").innerHTML='';
document.getElementById("divcounttagname").innerHTML='<div>There are no Candidate</div>';
}
}
その値 (つまり 'java') は "xmlhttp.open("GET","index.php/admins/joborders/bindcounttagname/"+value,true);" で渡されます。
これで、controllder で bindcounttagname() が呼び出されます。
function bindcounttagname($value)
{
$this->load->model('mjoborders');
$data['counttagname'] = $counttagname = $this->mjoborders- >Getcounttagname($value);
次に、モデルで Getcounttagname() が呼び出されます。
function Getcounttagname($value)
{
$data = array();
$Q = $this->db->select('*,count(candidateid) as countcandidate FROM tbl_candidatetag where tagname = "'.$value.'"');
$Q = $this->db->get();
if ($Q->num_rows() > 0)
{
foreach ($Q->result_array() as $row)
{
$data[] = $row;
}
}
$Q->free_result();
return $data;
}
タグは上記のクエリでパラメータとして渡されます。
しかし、2番目のタグを入力すると、そのタグは以前のタグ、つまり IN ('java','css3'); を使用してクエリにも渡される必要があります。
ただし、パラメーターとして複数の値を取ることはありません。
以下のリンクのようなクエリでより多くのタグを渡すために配列を使用しようとしましたが、クエリは行をフェッチしません..1.「WHERE句を使用して配列をクエリに渡す」2.クエリでも静的な2つの値を渡しましたが、行をフェッチしません。
クエリで複数のタグをパラメータとして渡す方法を教えてください。