2014-06-04 4 views
0

아래에 작은 코드 스 니펫이 있습니다. jQueryUI의 자동 완성 기능을 사용하여 mySql 데이터베이스에서 데이터를 가져 와서 특정 사용자를 검색 할 때 사용자 이름을 검색 창에 채 웁니다. 검색 대상자의 성과 이름을 자동 완성하고 싶습니다. 예를 들어, 자동 완성 함수가 누군가가 Lebron James를 찾고 있다고 예측하면, 나는 그것이 성과 이름을 모두 반환하기를 원합니다. 현재는 이름 만 반환 할 수 있습니다. 문서를 보면서 여러 키와 값 쌍을 하나씩 추가하여 추가 할 수 있다고 생각했습니다. 이것은 나를 위해 오직 하나의 이름을 만들어 낸다. 두 번째 레이블/값 쌍 이름 뒤에 "2"를 추가하여 다른 이름을 지정하는 것이 도움이되는지 확인했습니다. 그것은 여전히 ​​이름 만 반환하고 성은 반환하지 않습니다. 내 자동 완성에서 성과 이름을 모두 반환하도록하려면 어떻게해야합니까?배열의 다중 키와 값 설정

내 index.php를

<?php 


// here we set the database information 
$SERVER = 'localhost'; 
$USER = 'user'; 
$PASS = 'password'; 
$DATABASE = 'database'; 

// we are instantiating the mysqli database object 
$db = new mysqli($SERVER, $USER, $PASS, $DATABASE); 

// error check 
if($db->connect_errno > 0){ 

     // report an error 
die('Unable to connect to database [' . $db->connect_error . ']'); 
} 



$sql = 'SELECT * FROM users WHERE user LIKE "' . $_REQUEST['term'] . '%"'; 


$result = $db->query($sql); 

$data = array(); 

    while ($row = $result->fetch_assoc()) 
    { 
     $data[] = array(
      'label' => $row['firstName'] , 
      'value' => $row['lastName'], 
      'label2' => $row['lastName'], 
      'value2' => $row['lastName'], 

     ); 
    } 


// jQuery wants JSON data 
echo json_encode($data); 
flush(); 

내 HTML과 JS

API documents에서 직접 찍은
<form id="searchbox" action=""> 
    <input id="search" type="text" placeholder="Search"> 
    <!--<input id="submit" type="submit" value="Search">--> 
</form> 


<script type="text/javascript" > 

//script for autocompleting usernames when being search 
$('#search').autocomplete(
    {source:'autosuggest.php', 
    minLength:2 
    }); 

</script> 

답변

1

:

여러 종류의 지원 : 배열 : 배열을 사용할 수 있습니다 로컬 데이터. 두 가지 지원되는 형식이 있습니다. 문자열 배열 : [ "Choice1", "Choice2"] 레이블 및 값 속성이있는 개체의 배열 : [{ 레이블 : "Choice1", 값 : "value1"}, .. .]

그들은 당신과 같은 정보를 제공 할 :

[ 
{'label': 'label', 'value': 'value'}, 
{'label': 'label', 'value': 'value'}, 
{'label': 'label', 'value': 'value'} 
....etc 
] 

그리고 당신은 이런 식으로 공급하고 있습니다 :

[ 
{'label': 'label', 'value': 'value', 'label1': 'label1', 'value1': 'value1'} 
....etc 
] 

나 자신이 PA를 사용하지 않은 rt의 jQuery UI에 대해 언급 할 수는 없지만, 전체 이름을 구문 분석하여 제안 할 수 있습니다. firstname_lastnamelabel이고 split()은 전체 이름을 나타낼 수 있습니다.

양자 택일로, 당신은 같은 당신의 PHP 파일을 통해 라벨을 전달할 수 :

while ($row = $result->fetch_assoc()) 
{ 
    $data[] = array(
     'label' => $row['firstName'] . ' '. $row['lastName'], 
     'value' => $row['firstName'] . ' '. $row['lastName'], 
    ); 
} 
+1

덕분에 많이. php 배열에 대한 설명서를 찾고있었습니다. 도와 줘서 고마워. – jonjon