2010-11-10 2 views
1

У меня есть HTML-страница с текстовым полем, в котором пользователь вводит страну, а затем AJAX и PHP будут запрашивать базу данных mysql из стран и печатать их в DIV ниже. Код работает отлично, кроме одного. Если я наберу «A» в текстовом поле, он напечатает только один результат на экране «Афганистан», тогда как он должен печатать каждую страну, начиная с «A». Я предполагаю, что ошибка связана с текстом ответа, но как я могу распечатать несколько ответов, или это даже имеет смысл: P Ниже приведен соответствующий код.Live Ajax Search не распечатывать все результаты

РНР запрос к базе данных

<?php 
$country=$_REQUEST['country']; //get the country sent by Ajax 
$connection = mysql_connect("localhost","MYUSERNAME","MYPASSWORD"); 
mysql_select_db("countrydb", $connection); 
$result=mysql_query("SELECT * FROM countries WHERE country LIKE '%$country%'",$connection); 
if($row = mysql_fetch_array($result)) 

echo $row['country']; 
else 
    echo "noresults"; 
mysql_close($connection); 
?> 

Это отношение Javascript

function showcountryStatus() { 
    if (request.readyState == 4) { 
    if (request.status == 200) { 
       if (request.responseText == "noresults") { 
    document.getElementById('results').innerHTML="No Results"; 
     } else { 
     document.getElementById('results').innerHTML=request.responseText; 
     } 
    } 
    } 
} 

Так в основном мой поиск возвращается только первый результат, в то время как он должен возвращать весь список. Заранее спасибо!

ответ

1

Как вы можете прочитать на странице about mysql_fetch_array, вы должны использовать его в петле, например.

while ($row = mysql_fetch_array($result)) { 
    echo $row['country']; 
} 

Теперь вы получаете только первый результат.

+2

Вы не должны просто «отгонять» все результаты один за другим. Рассмотрите возможность добавления результатов в массив, а затем с помощью 'json_encode'. Конечно, вам также придется адаптировать сторону JavaScript. [1]: http://www.php.net/manual/en/function.json-encode.php – Zecc

Смежные вопросы