Показать сообщение отдельно
  #1 (permalink)  
Старый 23.04.2013, 09:33
Новичок на форуме
Отправить личное сообщение для wolfik Посмотреть профиль Найти все сообщения от wolfik
 
Регистрация: 22.04.2013
Сообщений: 2

Почему то дублируется вывод. Подскажите..
У меня проблема такого рода.. Вставил поиск на ajax по sql, вроде бы все нормально функционирует, кроме вывода поискового запроса. Скрипт правильно находит, формирует таблицу и выводит ее в диве. Но почему то вместо одного дива с таблицей, выводит 3 совершенно одинаковых дива с таблицами, друг за другом, с одинаковыми данными.
Вот index:

<script type="text/javascript"
src="js/jquery.min.js">
</script>
<script type="text/javascript">
$(function() {
$("#txtTitle").keyup(function() {
// получаем то, что написал пользователь
var searchString = $("#txtTitle").val();
// формируем строку запроса
var data = 'query='+ searchString;
// если searchString не пустая
if(searchString) {
// делаем ajax запрос
$.ajax({
type: "POST",
url: "db1.php",
data: data,
// выполнится до AJAX запроса
beforeSend: function(html) {
$("#divResult").html('');
$("#search").show();
$("#span").html(searchString);
},
// выполнится после AJAX запроса
success: function(html){
$("#divResult").show();
$("#divResult").append(html);
}
});
}
return false;
});
});
</script>

<div id="form">
<form method="post" action="db1.php" onsubmit="return false">
<fieldset class="field">
<legend align="center">Поиск по справочнику</legend><br />
<div>
<input id="txtTitle" type="text" maxlength="28" placeholder="Введите запрос" />
</div><br />
</fieldset>
</form>
<div id="search">Результаты для <span id="span"></span>:</div>
<div id="divResult"></div>
</div>


Вот обработчик:

<?php
$hostname = "localhost";
$username = "user";
$password = "123";
$dbName = "dbwork";
$link=mysql_connect($hostname,$username,$password) ;
mysql_select_db($dbName) or die(mysql_error());
mysql_query("set names utf8"); //Соединяемся с базой

/*Обработка поискового запроса*/
function search ($query) {
$text = '';
// Проводим фильтрацию данных
$query = trim($query); // Обрезаем пробелы и спецсимволы
$query = mysql_real_escape_string($query); // Фильтруем текст
$query = htmlspecialchars($query); // Переводим

//Поисковый запрос не пустой?
if (!empty($query)){
if (strlen($query) < 3) {
$text = '<p>короткий поисковый запрос.</p>';
} elseif (strlen($query) > 28) {
$text = '<p>длинный поисковый запрос.</p>';
} else {
//Формируем строку поискового запроса
$sql = "SELECT LastName, FirstName, MiddleName, Name, Phone, Office, Email, DepName FROM users_view WHERE LastName LIKE '%$query%'
OR FirstName LIKE '%$query%'
OR MiddleName LIKE '%$query%'
OR Phone LIKE '%$query%'
OR Office LIKE '%$query%'
OR Email LIKE '%$query%'
OR Name LIKE '%$query%'
";
// и выполняем его
$result = mysql_query($sql);
//Если число совпадений (строк результата запроса) больше 0
if ( $num = mysql_num_rows($result) > 0) {
//Получаем ассоциативный массив
$row = mysql_fetch_assoc($result);
//и начинаем формировать строку поисковой выдачи
do {
//Продолжаем формировать строку поисковой выдачи
$text .="<tr align=center><td width=25%>$row[LastName] $row[FirstName] $row[MiddleName]</td><td width=20%>$row[DepName]</td><td width=20%>$row[Name]</td><td width=150>$row[Phone]</td><td width=>$row[Office]</td><td><a href='mailto:$row[email]'>$row[email]</td></tr>";
// Делаем это пока у нас есть результаты
} while ($row = mysql_fetch_assoc($result));
// Выделяем поисковый запрос
$bold = $query;
$text = str_ireplace($query, $bold, $text);
} else {
// Найти совпадение не удалось
$text = '<p>По вашему запросу ничего не найдено.</p>';
}
}
} else {
$text = '<p>Задан пустой поисковый запрос.</p>';
}
//Возвращаем сформированную строку поисковой выдачи
return $text ;
}


if (isset ($_POST['query']) && !empty($_POST['query'])){
// Открываем соединение с базой данных
// и обращаемся к функции search()
$search_result = search ($_POST['query']);
print $search_result;
}
?>
Ответить с цитированием