Почему то дублируется вывод. Подскажите..
У меня проблема такого рода.. Вставил поиск на 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; } ?> |
Хотел добавить, что в базе я делал представление из 3х таблиц, что бы ajax работал, может там что то, не знаю. Посмотрите, что можете сказать?
|
откройте для себя инструменты разработчика и отлаживайте с помощью их свой код. или с помощью тех же алертов. или вы считаете что код отлаживается поиском кем то левым ошибок в нём?
в статьях есть даже статья о них |
Часовой пояс GMT +3, время: 08:48. |