Использование PHP, MSSQL, Jquery для мгновенного поиска
Я пытаюсь реализовать функцию мгновенного поиска с использованием PHP, jQuery и базы данных MS SQL. Я не уверен, в чем заключается проблема, если честно. Я не получаю никаких ошибок PHP, и единственное, что я мог бы подумать, это то, что есть некоторая путаница в связи с базой данных. У меня есть файлы в Windows Server 2003, и я пытаюсь получить доступ к базе данных MSSQL на другом сервере, работающем под управлением Windows Server 2008. Я совершенно новичок в работе с этими серверами и программирую на них вот так. (Я ИТ-стажер.) Вот код, который я использую, он был изменен из учебника для создания мгновенного поиска. Это код, который у меня есть на данный момент.
Файл PHP:
<?php
if(!empty($_GET['q'])) {
search();
}
function search() {
$server = 'Windows2008ServersName';
$con = mssql_connect($server, 'username', 'password')
or die("Couldn't connect to SQL Server on $server");
mssql_select_db('dbname', $con);
$q = str_replace("'","''",$_GET['q']);
$sql = mssql_query("
SELECT
db.First_Name, SUBSTR(db.Last_Name,1,300)
FROM db
WHERE db.First_Name LIKE '%{$q}%' OR db.Last_Name LIKE '%{$q}%'
")
or die ( 'Query Error' );
//Create an array with the results
$results=array();
while($v = mssql_fetch_object($sql)){
$results[] = array(
'title'=>$v->title,
'post'=>$v->post
);
}
//using JSON to encode the array
echo json_encode($results);
}
?>
Файл Javascript:
var runningRequest = false;
var request;
//Identify the typing action
$('input#q').keyup(function(e){
e.preventDefault();
var $q = $(this); //get the letter
//if it's not a search term return false
if($q.val() == ''){
$('div#results').html('');
return false;
}
//Abort opened requests to speed it up
if(runningRequest){
request.abort();
}
runningRequest=true;
request = $.getJSON('search.php',{
q:$q.val()
},function(data){
showResults(data,$q.val());
runningRequest=false;
});
//Create HTML structure for the results and insert it on the result div
function showResults(data, highlight){
var resultHtml = '';
$.each(data, function(i,item){
resultHtml+='<div class="result">';
resultHtml+='<h2><a href="#">'+item.title+'</a></h2>';
resultHtml+='<p>'+item.post.replace(highlight, '<span class="highlight">'+highlight+'</span>')+'</p>';
resultHtml+='<a href="#" class="readMore">Read more..</a>'
resultHtml+='</div>';
});
$('div#results').html(resultHtml);
}
$('form').submit(function(e){
e.preventDefault();
});
});
HTML-файл:
<html>
<head>
<title>Instant Search</title>
<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/search.js"></script>
<style> /*css*/ </style>
</head>
<body>
<form method="get" action="">
<input type="text" id="q" name="q" />
<input type="submit" value="Search" />
</form>
<div id="results"></div>
</body>
</html>
PHP установлен на веб-сервере, но я не уверен, что он установлен на сервере MSSQL, может ли это быть проблемой? Я не очень знаком с тем, как настроить серверы для работы друг с другом. Особенно в такой ситуации.
1 ответ
Не думайте, что вам нужен символ '$' для q var в javascript; это может быть разрешено (я не думаю, что это так, но я не пробовал это), но это не обязательно, и это сбивает с толку.
Там может быть больше, но это выскочило на меня, как плохо.