[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск по базе
SunSet
Здраствуйте. Подскажите теорией, как организовать поиск по базе одновременно по строгому списку и/или по дополнительному пользовательскому. Например, вот по такой форме:
user posted image
То есть чтоб вывод производился даже если просто выбрать поле Марка, а остальные оставить пустыми. Или же только по цвету вывести все товары из базы, или по ключевому слову пользователя. Скрипты поиска посмотрел, там только на поиск по введенному слову или фразу. Тут, как понимаю, немного другое.



Спустя 1 час, 56 минут, 44 секунды (8.08.2009 - 06:51) Sylex написал(а):
1. Строятся списки SELECT и текстовые поля INPUT
2. Данные, пришедшие от пользователя, обрабатываются и попадают в запрос на выборку в WHERE и соединяются между собой логическим оператором AND

Спустя 5 часов, 24 минуты, 54 секунды (8.08.2009 - 12:16) SunSet написал(а):
Sylex
Хорошо. Скажи, подгрузка второго списка относительно что выбрано в первом осуществляется на яваскрипте или как такое на пхп делать? Вот когда в первом меню выбираешь, например, категорию "цвета" - то во втором меню появляются значения "черный, "белый", "зеленый", а если в первом "числа" - то во втором соответственно 1, 2 , 3.. Такое часто используют при регистрации на сайтах, где человек выбирает свою страну, а скрипт соответственно выбранной стране подставляет города для выбора.

Спустя 3 часа, 28 минут, 44 секунды (8.08.2009 - 15:44) Sylex написал(а):
SunSet
реализаций несколько:
1. с перезагрузкой страницы (делается редирект при выборе)
2. без перезагрузки с использованием чисто JS (описаны массивы)
3. без перезагрузки страницы с использованием технологии AJAX

тебя что интересует?

Спустя 27 минут, 20 секунд (8.08.2009 - 16:12) SunSet написал(а):
1 Первое пока отпадает, так как перезагрузка страницы не желательна.
2 При использовании JS получится какимто методом вытягивать значения из базы MySQL? Просто если это города стран, то представь какое их колличество прийдется описывать на Яве, места много.
3 А с AJAX не знаком sad.gif Не имею представления коим образом работае, потому проблемно будет там разбираться.

Спустя 1 час, 2 минуты, 16 секунд (8.08.2009 - 17:14) glock18 написал(а):
тогда только 2. тебе надо загрузить из базы все цвета, страны (и что там у тебя еще есть в списках) - сформировать из этого жс для инициализации соответствующих массивов. Потом просто заполнять дропдаун из соответствующего массива.

Спустя 39 минут, 17 секунд (8.08.2009 - 17:53) SunSet написал(а):
Спасибо. Мне бы хоть примитивный пример для наглядности, не могу запрос для гугла подобрать..

Спустя 1 час, 2 минуты, 25 секунд (8.08.2009 - 18:56) beginner написал(а):
Если делать с помощью javascript то примерно так:
пример где страна выбирается, а города переопределяются:
PHP должен сформировать на странице следующий код javascript

PHP
m=Array();
m['Украина']=new Array();
m['Украина'][0]='Киев';
m['Украина'][1]='не Киев';
...

т.е. при загрузке страницы в браузере все эти данные javascript определит в
виде массива
При onchange события элемента страна считываем новое значение страны и переделываем список городов.
Но только при интенсивной работе все эти данные при любой перезагрузке страницы сервер должен отправлять заново - может быть неадекватный трафик и скорость.
Конечно идеально данные загружать только по необходимости - с сервера как
AJAX запрос. Но я тоже не знаю пока AJAX.

Из этого вопрос экспертам :
сложно ли разобраться в AJAX на элементарном уровне (отправил строку ->получил строку) без разбора сотен тонкостей, всяких настроек, кучи разного кода, философских идей и т.д. и т.п.?

Спустя 2 часа, 16 минут, 34 секунды (8.08.2009 - 21:12) glock18 написал(а):
на таком уровне разобраться очень просто. используй библиотеки а-ля jquery, extjs и т.п. обращение делается одной функцией, которая имеет как правило необходимые опции для настройки.

Спустя 29 минут, 50 секунд (8.08.2009 - 21:42) SunSet написал(а):
Sylex
glock18


http://www.linkexchanger.su/2009/82.html
Вот подобное нашел. Правда, значения не из базы берутся... Так понимаю, форму можно же динамически строить при загрузке страницы + вытягивать инфу с БД?

Спустя 6 минут, 52 секунды (8.08.2009 - 21:49) glock18 написал(а):
Цитата (SunSet @ 8.08.2009 - 18:42)
Так понимаю, форму можно же динамически строить при загрузке страницы + вытягивать инфу с БД?


ссылку не смотрел, но как я понял, это и есть 2 вариант smile.gif юзай))

Спустя 4 минуты, 12 секунд (8.08.2009 - 21:53) SunSet написал(а):
Благодарю за помощь всем отписавшимся тут.





П.С. Я скоро вернусь... laugh.gif

Спустя 3 минуты, 14 секунд (8.08.2009 - 21:56) Sylex написал(а):
glock18
не... там запросы к серверу smile.gif

Спустя 2 минуты, 8 секунд (8.08.2009 - 21:58) glock18 написал(а):
Sylex
Ач-черт. Не угадал)))

Спустя 2 часа, 50 минут, 41 секунда (9.08.2009 - 00:49) SunSet написал(а):
Беда.. я вернулся))
Вышеуказанный образец вовсе не подошел, там половину переделывать нужно. Поискал, нашел второй, но тоже требует доработки. В нем как раз из базы mysql идет выборка городов и стран, но внешний вид сделан немного не так как хотелось бы. Там автоматом добавляются вложенные меню. А как сделать чтоб они по дефолту были все 3, просто остальные изначально неактивны, а после загружаются нужной инфой?

Вот код пхп
PHP
<?php 
header
("Content-Type: text/html; charset=utf-8"); 
include (
"connect.php"); 
function 
region() 

$country_id = isset($_POST['country_id'])?$_POST['country_id']:NULL
$query "SELECT * FROM `".PREFIX."region` WHERE `country_id`='".(int)$country_id."'"
$res mysql_query($query); 
$select "<select id=\"region_id\" name=\"region_id\" onchange=\"Region()\" > 
<option  value='0'>- Выберите pегион -</option>"


    while(
$row mysql_fetch_array($res)) 
    { 
    
$select .= "<option value='".$row['region_id']."'>".$row['name']."</option>\r\n"
    } 
$select .= "</select>";     
return     
$select


function 
city() 

$region_id = isset($_POST['region_id'])?$_POST['region_id']:NULL
$query "SELECT * FROM `".PREFIX."city` WHERE `region_id`='".(int)$region_id."'"
$res mysql_query($query); 
$select "<select id=\"city_id\" name=\"city_id\" > 
<option  value='0'>- Выберите город -</option>"

    while(
$row mysql_fetch_array($res)) 
    { 
    
$select .= "<option  value='".$row['city_id']."'>".$row['name']."</option>\r\n"
    } 
$select .= "</select>";     
return  
$select


if(isset(
$_POST['country_id'])) 
echo 
region(); 

if(isset(
$_POST['region_id'])) 
echo 
city(); 



Но само построение вывода менюшек, как понимаю, в аяксфайле, вот:

PHP
var document
var 
div_select
var 
req Create(); 

function 
Country() 

div_select "region";     
d.getElementById('city').innerHTML ''
var 
d.getElementById('country_id').value
query "country_id="+a
Request(query); 


function 
Region() 
{     
div_select "city";     
var 
d.getElementById('region_id').value
query "region_id="+a
Request(query); 


function 
Create(){  
    if(
navigator.appName == "Microsoft Internet Explorer"){  
        
req = new ActiveXObject("Microsoft.XMLHTTP");  
    }else{  
        
req = new XMLHttpRequest();  
    }  
    return 
req;  
}  
function 
Request(query

req.open('post''selects.php' true ); 
req.onreadystatechange Refresh
req.setRequestHeader("Content-Type""application/x-www-form-urlencoded; charset=utf-8"); 
req.send(query);              
}  
function 
Refresh() 

var 
a,b;
req.readyState
    if( 
== 
    {
    
req.responseText;  
    
    
d.getElementById(div_select).innerHTML b
    }
}


Помогите с аяксом, в пхп хоть както могу прочитать, а в этом вообще ноль.. unsure.gif
Вот пример его работы, twin писал кстати)
http://test.inkz.ru/select/

Спустя 15 часов, 57 минут, 56 секунд (9.08.2009 - 16:47) SunSet написал(а):
Кто бы мне еще помог sad.gif


_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.