對不起,長標題。它花了我一個小時,但我終於得到了這個工作。我的問題是,如果有更快,更有效的方式來做我在這裏做的事情。從MySQL查詢到PHP陣列的jQuery自動完成/ Typeahead
基本上,我有一個HTML文本輸入字段,它使用jQuery來填充自動完成下拉答案(在這種情況下,藝術家爲我已收藏的歌曲列表)。我之前的工作一直很順利,直到我發現它顯示了一些我曾收藏過多首歌曲的藝術家的複製品。所以我需要使用array_unique()來擺脫重複。
不幸的是,我的列表不是MySQL結果的數組形式,而是一個字符串。在擺弄了一段時間之後,我將它顯示在一個數組中,但是現在這弄亂了我對jQuery列表的格式。 array_walk()幫助我格式化數組中的每個項目,然後將其轉換爲一個字符串。它看起來像很多工作。我可以用更少的步驟做到嗎?
這裏是我的代碼:
<input type="text" class="span3" style="margin: 0 auto; " autocomplete="off" name="artist" data-provide="typeahead" data-items="4" data-source='[<?
$artistlist = "SELECT * FROM songs where id >= 0";
$result = $mysqli->query($artistlist);
while($row = mysqli_fetch_assoc($result)) {
$artists[] = "\"".$row['artist']."\",";
//have to format this way for the jQuery results.
$artists = array_unique($artists);
}
function formatArtists(&$artists) {
$artists = str_replace("'", "'", $artists);
//have to do this because of "O'" names.
}
array_walk($artists, "formatArtists");
foreach($artists as $artist) {
$artistSelect .= $artist;
}
$artistSelect = substr(trim($artistSelect), 0, -1);
//I have to convert the array to a string so that I can trim the final comma from the list of artists. Otherwise the autocomplete breaks.
echo $artistSelect;
?>]'>
感謝您的幫助,如果你發現任何其他低效,我還在學習,所以我不會介意指正!
在第一次嘗試使用SELECT DISTINCT藝術家詩經其中id> = 0 - 此查詢將爲您提供藝術家名單沒有重複。 –