Тема: Швидкий пошук (PHP,PDO-MySQL,JS)
Потрібно було написати швидкий пошук,який видає результат запиту на льоту..
Мабуть є готові рішення.. але мені було цікаво написати самому.
Тут типу пошук нікнеймів.. ось що вийшло. Тут все в одному файлі,за гк не сваріть).
<html>
<head>
<?php
if(isset($_GET['query'])) {
//Підключення до БД
$host = 'localhost'; //хост БД
$dbname = 'vitamin'; //імя БД
$user = 'root'; //користувач БД
$password = 'vitamin'; //пароль БД
$driver = 'mysql'; //драйвер для БД
try {
$db = new PDO("$driver:host=$host;dbname=$dbname", $user, $password); //створюємо обєкт класу PDO
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //вивід помилок
$db->exec("SET names utf8"); //ставимо кодування в UTF8
}
catch(PDOException $e) {
echo $e->getMessage(); //викидаємо помилки
}
$search = $db->prepare('SELECT id,user FROM users WHERE user LIKE ?'); //підготовлюємо запит
$search->execute(array('%'.$_POST['search'].'%')); //обробляємо його
while($result = $search->fetch(PDO::FETCH_OBJ))
{
echo 'ID:'. $result->id.' Користувач '.$result->user.'<br>'; //виводимо дані пошуку ($result як обєкт,id,user як властивості обєкту)
}
$db = null; //звільняємо память
exit; //закриваємось
}
?>
<input type="text" name="SearchNick" id="SearchNick" placeholder=" Введіть нік..." style="width: 10%;">
<script>
function SearchNick()
{
var xmlhttp;
var nick = document.getElementById("SearchNick").value; //витягуємо нік з форми
if (window.XMLHttpRequest)
{// код для IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// код для IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) //якщо отримали відповідь
{
document.getElementById("Result").innerHTML = xmlhttp.responseText; //результат повертаємо в id Result
}
}
xmlhttp.open("POST","?query",true); //POST запит
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); //заголовки
xmlhttp.send("search="+encodeURIComponent(nick)+""); //відправка даних
}
</script>
<script>
setInterval("SearchNick();",1000); //оновлюємо результат
</script>
<div id = "Result"></div>
</body>
</html>