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

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

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2011, 20:02   #1
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию php поиск по базе Mysql

всех с выходными!
знаю, что вопрос избит, но поиск поиска ни к чему толковому пока не привел, кое-что получается, но не до конца...

суть: есть база данных на несколько 10ков тысяч объектов...
нужно реализовать поиск по БД по принципу "яндекса", то есть начиная вводить первые буквы начинало отображение подходящих значений... с лимитов в 15-20 значений... поиск будет по русским названиям. Клик по нужному название и переход на динамически генерируемую страницу по идее $_POST из окошка поиска и дальше уже все понятно как...

прошу помощи в направлении где почитать, если есть готовые рецепты буду признателен.
Dmitry1983 вне форума Ответить с цитированием
Старый 25.06.2011, 20:47   #2
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

Главное спросить, и дело пошло
часть решения уже есть
Код:
<div align="center">
<form name="form1" method="post" action="">
  <input name="search" type="text" id="search"> 
  <input name="Submit" type="submit" value="Поиск">
</form>
<?php
$search = $_POST['search'];
$query = "SELECT name_rus FROM geo_base WHERE  name_rus like '%$search%'";
$result = mysql_query($query); 
 
if (!$result){
	echo "Ошибка при запросе";
	exit(mysql_error());
}
 
$myarray = array(); // создаем пустой массив, страховка
$n = mysql_num_rows($result); // Узнаем количество элементов в выборке
 
for($i = 0; $i < $n; $i++){
	$myarray[] = mysql_fetch_array($result);
}
 
foreach($myarray as $value){
	echo $value['tip'].'<br/>';
	echo $value['name_rus'].'<hr/>';
}
 mysql_free_result($result)
 
 ?>
</div>
Dmitry1983 вне форума Ответить с цитированием
Старый 26.06.2011, 06:06   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Dmitry1983 Посмотреть сообщение
начиная вводить первые буквы начинало отображение подходящих значений
Если я Вас правильно понял, то вам нужно копать в сторону AJAX.
То есть при изменении поля с поиском выполняется асинхронный запрос к серверу и далее опять JavaScript обрабатывает полученные результаты.
Код, приведенный Вами, выполняться будет один раз при загрузке страницы.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 26.06.2011, 11:09   #4
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,603
По умолчанию

по onkeypress инпута аяксом делаете выборку из базы, формируете и обновляете див с результатами поиска
Gorychev вне форума Ответить с цитированием
Старый 26.06.2011, 16:12   #5
Dmitry1983
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 80
По умолчанию

Цитата:
Сообщение от Gorychev Посмотреть сообщение
по onkeypress инпута аяксом делаете выборку из базы, формируете и обновляете див с результатами поиска
если бы я из этого еще что-нить понял бы
Dmitry1983 вне форума Ответить с цитированием
Старый 27.06.2011, 15:10   #6
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

смотри тут -> http://dklab.ru/lib/JsHttpRequest/manual.html
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 27.06.2011, 15:59   #7
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Готовый плагин:
http://habrahabr.ru/blogs/jquery/24364/
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 27.06.2011, 16:12   #8
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Gorychev Посмотреть сообщение
по onkeypress инпута аяксом делаете выборку из базы, формируете и обновляете див с результатами поиска
Цитата:
Сообщение от Dmitry1983 Посмотреть сообщение
если бы я из этого еще что-нить понял бы
При наступлении события "onkeypress" (нажата клавиша клавиатуры) элемента "input" (поле для ввода), посредством технологии AJAX делаете асинхронный запрос к серверному скрипту, который делает выборку из базы данных необходимых элементов, а при получении ответа от сервера формируете полученные данные в HTML-формат, и записываете в качестве содержимого в тег "div".
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 27.06.2011, 18:01   #9
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

вот небольшой скрипт. можно попробовать прикрутить к ajax.

PHP код:
<?php 
$str
="$_POST[name]";
if(
eregi("[a-zA-z0-9]"$str)){
$search="$str";
}else{
include(
"functions.php");
$search="$vivod";
}
//Проверяем, на пустоту поле формы 
$error ""
 if(empty(
$search))     

$error .=  "<p>Не введено искомое слово. Введите поисковое слово и повторите поиск.</p>"

else 

//обрабатываем на предмет sql инъекций 
if (!get_magic_quotes_gpc()) 

$name mysql_escape_string($search); 

else 

$name="$search"

//формируем поисковый запрос , в логическом режиме 
$query "SELECT * FROM new WHERE MATCH (name, kratko)  AGAINST ('$name' IN BOOLEAN MODE)"
$post mysql_query($query); 
if(
$post

$numtot mysql_num_rows($post); 
if(
$numtot>0

$rezult ""

while(
$posts mysql_fetch_array($post)) 

$rezult =  "    вывод результата  ";

$rezult .=  "</table>"
$res="$numtot";
}
//если результата нет, выводим сообщение 
else 

$error .=  "<p>По поисковому запросу: $_POST[name] ничего не найдено. Попробуйте изменить поисковое слово.</p>"



?>

<?php 
if($_POST[send]==ok
{  
if(isset(
$error)) 
print 
$error
print 
$rezult;
  

?> 

<center><b><?php echo"Нашлось: $res"?></b></center></div>
для поиска нужно использовать индексацию для полей по которым будет вестись поиск. в моём варианте используются "name, kratko"

PHP код:
//формируем поисковый запрос , в логическом режиме 
$query "SELECT * FROM new WHERE MATCH (name, kratko)  AGAINST ('$name' IN BOOLEAN MODE)"

Последний раз редактировалось dem66; 27.06.2011 в 18:04.
dem66 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо разработать веб портал на базе PHP и MySQL Стоянова Фриланс 3 07.05.2011 02:03
Поиск PHP, MySQL, flash программистаов Milevshi Фриланс 4 14.05.2010 14:49
PHP. Как изменить значение записи в MySQL базе данных SeRhy PHP 4 18.06.2009 12:21
MySql - перемешать варианты в базе Shadow_Wind PHP 9 17.10.2008 09:55
PHP Поиск в MySQl LeoN PHP 10 08.07.2008 07:10