Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2012, 13:50   #1
Drac0Sha
Пользователь
 
Регистрация: 29.02.2012
Сообщений: 20
По умолчанию AJAX поиск по БД

Здравствуйте, столкнулся с такой проблемой как поиск по Базе Данных на AJAX
ну про проблемы с кириллицей, я думаю никого не удивлю, пока ещё не решил, но это напоследок

Сейчас больше меня волнует...что при поиске
http:/васьки.рф/shit/index.php

у меня если вводить латинские буквы (к примеру, Ang) то выводит две позиции (но не видно их), проверяю в БД, всё верно, два имени.

в ответе приходит
<li onClick="fill('');"></li><li onClick="fill('');"></li>
(если в чарлес смотреть)
Drac0Sha вне форума Ответить с цитированием
Старый 02.08.2012, 14:05   #2
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

код в студию!

Цитата:
ну про проблемы с кириллицей, я думаю никого не удивлю
в UTF8 нет проблем с киррилицей

для Windows-1251 вот костыль
Lesha вне форума Ответить с цитированием
Старый 02.08.2012, 14:27   #3
Drac0Sha
Пользователь
 
Регистрация: 29.02.2012
Сообщений: 20
По умолчанию

index.php
Код HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">



<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<title>Ajax Auto Suggest</title>



<script type="text/javascript" src="jquery-1.2.1.pack.js"></script>

<script type="text/javascript">

	function lookup(inputString) {

		if(inputString.length == 0) {

			// Hide the suggestion box.

			$('#suggestions').hide();

		} else {

			$.post("rpc.php", {queryString: ""+inputString+""}, function(data){

				if(data.length >0) {

					$('#suggestions').show();

					$('#autoSuggestionsList').html(data);

				}

			});

		}

	} // lookup

	

	function fill(thisValue) {

		$('#inputString').val(thisValue);

		setTimeout("$('#suggestions').hide();", 200);

	}

</script>



<style type="text/css">

	body {

		font-family: Helvetica;

		font-size: 11px;

		color: #000;

	}

	

	h3 {

		margin: 0px;

		padding: 0px;	

	}



	.suggestionsBox {

		position: relative;

		left: 30px;

		margin: 10px 0px 0px 0px;

		width: 200px;

		background-color: #212427;

		-moz-border-radius: 7px;

		-webkit-border-radius: 7px;

		border: 2px solid #000;	

		color: #fff;

	}

	

	.suggestionList {

		margin: 0px;

		padding: 0px;

	}

	

	.suggestionList li {

		

		margin: 0px 0px 3px 0px;

		padding: 3px;

		cursor: pointer;

	}

	

	.suggestionList li:hover {

		background-color: #659CD8;

	}

</style>



</head>



<body>





	<div>

		<form>

			<div>

				Введи имя друга:

				<br />

				<input type="text" size="30" value="" id="inputString" onkeyup="lookup(this.value);" onblur="fill();" />

			</div>

			

			<div class="suggestionsBox" id="suggestions" style="display: none;">

				<img src="upArrow.png" style="position: relative; top: -12px; left: 30px;" alt="upArrow" />

				<div class="suggestionList" id="autoSuggestionsList">

					&nbsp;

				</div>

			</div>

		</form>

	</div>



</body>

</html>

rpc.php
PHP код:
<?php
    
    
// PHP5 Implementation - uses MySQLi.
    // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
    
$db = new mysqli('localhost''yourUsername' ,'yourPassword''yourDatabase');
    
    if(!
$db) {
        
// Show error if we cannot connect.
        
echo 'ERROR: Could not connect to the database.';
    } else {
        
// Is there a posted query string?
        
if(isset($_POST['queryString'])) {
            
$queryString $db->real_escape_string($_POST['queryString']);
            
            
// Is the string length greater than 0?
            
            
if(strlen($queryString) >0) {
                
// Run the query: We use LIKE '$queryString%'
                // The percentage sign is a wild-card, in my example of countries it works like this...
                // $queryString = 'Uni';
                // Returned data = 'United States, United Kindom';
                
                // YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
                // eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10
            
                
$query $db->query("SELECT `name` FROM `user` WHERE `name` LIKE '$queryString%' LIMIT 10");
                if(
$query) {
                    
// While there are results loop through them - fetching an Object (i like PHP5 btw!).
                    
while ($result $query ->fetch_object()) {
                        
// Format the results, im using <li> for the list, you can change it.
                        // The onClick function fills the textbox with the result.
                        
                        // YOU MUST CHANGE: $result->value to $result->your_colum
                         
echo '<li onClick="fill(\''.$result->value.'\');">'.$result->value.'</li>';
                     }
                } else {
                    echo 
'ERROR: There was a problem with the query.';
                }
            } else {
                
// Dont do anything.
            
// There is a queryString.
        
} else {
            echo 
'There should be no direct access to this script!';
        }
    }
?>

Также используется jquery-1.2.1.pack.js
но его я даже не трогал) только подключил)
Drac0Sha вне форума Ответить с цитированием
Старый 02.08.2012, 14:38   #4
Drac0Sha
Пользователь
 
Регистрация: 29.02.2012
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Cronos20 Посмотреть сообщение
double post
if(isset($_POST['queryString'])) {
$queryString = $db->real_escape_string($_POST['queryString']);

Вы имеете это ввиду!? А как правильно!?
Drac0Sha вне форума Ответить с цитированием
Старый 02.08.2012, 14:51   #5
Drac0Sha
Пользователь
 
Регистрация: 29.02.2012
Сообщений: 20
По умолчанию

В Charles выдаёт

в ответе
<li onClick="fill('');"></li>
Drac0Sha вне форума Ответить с цитированием
Старый 02.08.2012, 15:21   #6
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

Код:
echo '<li onClick="fill(\''.$result->name.'\');">'.$result->name.'</li>';
курите мануал по MYSQL fetch object
Lesha вне форума Ответить с цитированием
Старый 02.08.2012, 15:26   #7
Drac0Sha
Пользователь
 
Регистрация: 29.02.2012
Сообщений: 20
По умолчанию

Всё разобрался )
проблема была в том, что я не выбрал колонку)

Сейчас займусь кириллицей, надеюсь, ваша ссылка мне поможет)
Drac0Sha вне форума Ответить с цитированием
Старый 02.08.2012, 15:28   #8
Drac0Sha
Пользователь
 
Регистрация: 29.02.2012
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Lesha Посмотреть сообщение
Код:
echo '<li onClick="fill(\''.$result->name.'\');">'.$result->name.'</li>';
курите мануал по MYSQL fetch object

да, вы правы, именно в этом, просто забыл указать) спасибо)
Drac0Sha вне форума Ответить с цитированием
Старый 02.08.2012, 16:03   #9
Drac0Sha
Пользователь
 
Регистрация: 29.02.2012
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Lesha Посмотреть сообщение
код в студию!



в UTF8 нет проблем с киррилицей

для Windows-1251 вот костыль
всё же есть проблема с кириллицей и у utf-8
тут вообще советуют на windows-1251
http://easywebscripts.net/ajax/ajax_rus.php

однако, у меня всё равно не получается
ни так, ни так)
не подскажите, в чём может быть проблема!?
Drac0Sha вне форума Ответить с цитированием
Старый 02.08.2012, 16:41   #10
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

костыль над другим костылем

вы хоть скачали бы пример и просмотрели ли бы как все гладко работает с Windows-1251

http://jqbook.narod.ru/files/ajax_win/ajax_win.zip

Цитата:
всё же есть проблема с кириллицей и у utf-8
я вас уверяю. НЕТУ все нормально работает без костылей
Lesha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IE, Ajax piv199 HTML и CSS 1 19.07.2012 18:11
Ajax G-leb JavaScript, Ajax 3 20.01.2012 16:50
AJAX Mortimoro HTML и CSS 0 13.01.2011 18:52
AJAX prizrak1390 Свободное общение 10 08.06.2010 16:01