아마도 최악의 질문 일지 모르지만 그 밖의 구문을 어떻게 알지는 못합니다.jQuery tag-it을 사용하여 PHP, mysqli, json으로 2 개의 다른 필드에 2 개의 변수를 반환 할 것입니다.
기본적으로 jQuery tag-it을 제 코드에 구현했습니다. 그러나 필자는 다른 사용자가 제공 한 솔루션을 사용하고 있습니다. 원하는 데이터를 가져 와서 필요한 입력으로 덤프하는 한 작동합니다.
내가있어 솔루션
따라서이다 :jQuery를 :
$(document).ready(function(){
var availableTags = <?php include("ajax-search.php"); $english = search();?>;
$("#livesearch").tagit({
autocomplete: {
source: availableTags
}
});
});
PHP/MySQLi :
function search() {
include("dbconnect.php"); //Including our DB Connection file
$sql = "SELECT * FROM animals";
$query = mysqli_query($db, $sql);
while ($result = mysqli_fetch_assoc($query)){
$english[] = $result['eng_names'];
}
echo json_encode($english);
}
은 기본적으로 내가 3 개 변수를 반환합니다. 영어, 라틴어 및 상태.
그래서, 전제는 이것이다 :
Status = English == Latin
그래서 상태에서 나는 그러나 어떤 동물이 목록의에없는 등, 야생에서 멸종, 멸종 위기, 멸종 있습니다. 이 동물들은 공통적 일 수 있으므로 특수 라벨이 필요하지 않지만 모두 라틴어 이름이 필요합니다.
사용자가 '멸종'을 입력하면 죽은 동물의 목록이 나타납니다.
왜 태그를 사용합니까? 그들이 보고서이기 때문입니다. 사용자는 보고서를 작성하고 관련 보고서를 표시합니다. 동물의 이름 (라틴어 및 영어)은 반환해야하지만 상태는 반환하지 않아야합니다.
json이 어떻게이 작업을 수행 할 수 있는지 이해합니다. 필드를 상태 열에 텍스트가 없으면 무시하십시오. 그러나 mysqli 검색에서 반환하는 방법을 모르겠습니다. 나는 방법은 .MAP 생각()하지만 난() (검색 기능 바꿈을 .MAP 사용할 때마다 모든 생물을 나열하지만, 당신이 검색을 깔때기하지 않는 입력하면 같이
편집 :. .
기쁨 그래서, 나는에 대해 혼란스러워했다 두 개의 매개 변수와 일치하는 방법을 알아 내기 위해 관리
을 내가 원래 jQuery를 수정하여 이런 짓을 :. 내가 추가 한 HTML에 다음
<script>
$(document).ready(function(){
$("#livesearch").tagit({
autocomplete: {
source: 'ajax-search.php',
minLength:1
}
});
});
</script>
을 게시 방법 :
<form method="post">
<input name="tags" id="latin" size="100%" disabled="true">
<ul id="livesearch"></ul>
<input type="submit" value="Submit" />
</form>
는하지만 검색은 모든 PHP/MySQLi 쿼리에 일어난 :
if (!isset($_REQUEST['term']))
exit;
$keyword = trim($_REQUEST['term']);
$keyword = mysqli_real_escape_string($db, $keyword);
$query = "SELECT * FROM animals WHERE english LIKE '%$keyword%' OR status LIKE '%$keyword%'";
$result = mysqli_query($db, $query); //Run the Query
$data = array();
if ($result && mysqli_num_rows($result)){
while($row = mysqli_fetch_assoc($result)){
$data[] = array(
'label' => $row['english'],
'value' => $row['english'],
'latin' => $row['latin']
);
}
}
echo json_encode($data);
flush();
을 그래서, 상태 (멸종, 멸종 위기에 처한 등) 올바른 동물을 반환를 검색합니다.
아이디어/코드는 these guys입니다.
그래서 저는 지금 두 개의 다른 분야에서 라틴어와 영어를 보여줄 필요가있는 부분에 붙어 있습니다. 그러나 나는 tag-it.js 소스를 무언가로해야한다는 것을 알았습니다. 나는 그것을 알아 내야한다.
편집 2 :
좋아, 나는이 두 개의 서로 다른 텍스트 필드에 두 개의 서로 다른 결과를두고 작업 할 수있었습니다. 그러나 태그 입력을 닫지는 않습니다.
다음은 수정 된 jQuery의 :
$("#livesearch").tagit({
autocomplete: {
source: "ajax-search.php",
select: function(evt, ui){
this.form.latin.value = ui.item.latin;
}
}
});
그것은 라틴어 텍스트 입력에 라틴어를 박았에서 작동합니다. 그러나 이제는 이전처럼 입력을 깔끔한 작은 태그로 감싸지 않습니다.
편집 3 나는 지금까지 내가 할 수있는,하지만 소용 여부에 갔어요
.
는// Autocomplete.
if (this.options.availableTags || this.options.tagSource || this.options.autocomplete.source) {
var autocompleteOptions = {
select: function(event, ui) {
that.createTag(ui.item.value);
that.createTag(ui.item.latin); //custon input?
// Preventing the tag input to be updated with the chosen value.
return false;
}
};
$.extend(autocompleteOptions, this.options.autocomplete);
않는 모든 그러나,의 정규 영어 이름을 모두 추가 할 수 있습니다 :
는 기본적으로 나는 같은 자동 완성 필드를 확장하여 태그 it.js 자체에 변수 호출을 추가 한 동물 및 동시에 동물의 라틴어 이름. 그 다음에 영어 이름을 삭제할 수는 있지만 너무 길어집니다.
나는 작동하는 것처럼 보이는 this.form.latin.value = ui.item.latin;
을 사용해 보았습니다. 그러나 여러 개의 태그를 추가하거나 하나를 삭제하면 전체 코드가 손상됩니다. 일방적 인 것으로 보이므로 좋은 해결책은 아닙니다.
질문을 간소화하려고하면 더 많은 답변을 얻을 수 있습니다. 귀하가 적극적으로 해결하려고 노력하는 것은 대단한 일이지만, 귀하의 질문은 현재 사람들이 당신이 요구하는 것을 말하기 전에 몇 페이지의 정보를 읽어야한다는 것을 요구합니다. –
@SamDufel 새로운 질문을하겠습니다. 새로운 질문은 이제 간단합니다. '2 개의 다른 결과가있는 2 개의 필드에 tagit을 어떻게 출력합니까?' 내가 이것을 묻기 시작했을 때 나는 정말로 붙어 있었지만, 나는 원래의 질문 대부분을 풀었다. – deathtap