Rozwiązało to tylko część problemu.
Teraz już lista się rozwija ale nie wyświetla żadnych wartości ale lista dopasowuje swoją długość do ilości wyników, więc coś działa tylko nie wyświetla dostępnych opcji ale wie ile ich jest.
To oryginalny kod index.php
<script>
function suggest(inputString){
if(inputString.length == 0) {
$('#suggestions').fadeOut();
} else {
$('#country').addClass('load');
$.post("autosuggest.php", {queryString: ""+inputString+""}, function(data){
if(data.length >0) {
$('#suggestions').fadeIn();
$('#suggestionsList').html(data);
$('#country').removeClass('load');
}
});
}
}
function fill(thisValue) {
$('#country').val(thisValue);
setTimeout("$('#suggestions').fadeOut();", 600);
}
</script>
<body>
<form id="form" action="#">
<div id="suggest">Start to type a country: <br />
<input type="text" size="25" value="" id="country" onkeyup="suggest(this.value);" onblur="fill();" class="" />
<div class="suggestionsBox" id="suggestions" style="display: none;"> <img src="arrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />
<div class="suggestionList" id="suggestionsList"> </div>
</div>
</div>
</form>
</body>
</html>
A to oryginalny kod sugestera:
<?php
$db = new mysqli('localhost', 'root' ,'', 'kraje');
if(!$db) {
echo 'Could not connect to the database.'; } else {
if(isset($_POST['queryString'])) { $queryString = $db->real_escape_string($_POST['queryString']);
$query = $db->query("SELECT country FROM countries WHERE country LIKE '$queryString%' LIMIT 10");
if($query) {
while ($result = $query ->fetch_object()) {
echo '<li onClick="fill(\''.addslashes($result->country).'\');">'.$result->country.'</li>'; }
} else {
echo 'OOPS we had a problem :('; }
} else {
// do nothing
}
} else {
echo 'There should be no direct access to this script!'; }
}
?>
Nie wiem dlaczego ale każda niewielka zmiana w tym kodzie powoduje to że lista nie wyświetla dostępnych wartości tylko oryginalny kod działa. Problem jest nawet jak próbowałem zmienić bazę żeby mi szukało np adresów IP