За последние 24 часа нас посетили 73284 программиста и 18252 робота. Сейчас ищут 2056 программистов ...

Привет мастерам.Очень нужен скрипт расширенного поиска,хелп(

Тема в разделе "PHP и базы данных", создана пользователем Dr_Ceferov, 5 фев 2010.

  1. Dr_Ceferov

    Dr_Ceferov Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    12
    Симпатии:
    0
    Привет всем,пожалуста помогите,очен срочно нужен скриптик расширенного поиска по категориям.Спасибо заранее всем кто отпишется.
    Пример скрипта можете посмотрет на http://www.be-in.ru/search .Нужен такойже( . Я из базы данных должен вывести тип , виды s chechkboxom ,пол s chechkboxom и т.д.

    например баз данных такой :

    1.Tovar

    id
    name
    tip_id
    sort_id
    pol_id


    2.Pol:
    id
    name

    3.Sort
    id
    name

    Teper po otdelnosti poluchaetsyai resultat...naprimer esli ya napishu kod vivesti vse tovari gde kakoyto Pol.id vibran
    a kak vizvat odnovremenno? Esli vibran i Pol i Sort. Ya v prinsipe napisal kod s While-mi...kod ochen bolshoy... 100% est kakoyto prostoy sposob,,,mne stidno daje pokazat takoy kod) no rabotaet...

    Буду очен признателен тому кто поможет мне.Код нужен на завтра;(( .Всем удачи
     
  2. Dr_Ceferov

    Dr_Ceferov Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    12
    Симпатии:
    0
    10 просмотров и никто не поможет?(((
     
  3. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    делаем запрос к базе:
    [sql]select
    tov.id
    tov.name as tovar_name
    tov.tip_id
    tov.sort_id
    tov.pol_id
    p.name as pol_name
    t.name as tip_name,
    s.name as sort_name
    from
    tovar tov
    join
    pol p on p.id=tov.pol_id
    join
    sort s on s.id=tov.sort_id
    join
    tip t on t.id=tov.tip_id
    [/sql]

    затем
    блин
    ты хочешь, чтоб тебе готовый скрипт написали?
     
  4. Dr_Ceferov

    Dr_Ceferov Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    12
    Симпатии:
    0
    болшое спсшто отписалис.мне б толко 1 пример показали б :( например : если клиент выбрал пол и тип - как сделат выборку с помошю chechkbox-ов? если толко 1 пример будет я самдоделаю.пожалусто это очень важно
     
  5. Dr_Ceferov

    Dr_Ceferov Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    12
    Симпатии:
    0
    можно я тебе пошлю свой сгл и код?там работает если выбрат и пол и сорт,а если не выбрат пол то не работает.можеш посмотрет?
     
  6. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    Ну для примера держи рабочий скрипт:
    PHP:
    1. <html>
    2. <body>
    3.   <?php if (isset($_POST['btnSearch']) ) { ?>
    4.      Пользователь натыкал: <br/>
    5.         <div class="fast_search_title"><strong><big>Город:</big></strong></div>
    6.     <?php if (isset($_POST['search_city'])) foreach($_POST['search_city'] as $city) echo($city . ' '); ?>
    7.         <div class="fast_search_title"><strong><big>Тип одежды:</big></strong></div>
    8.     <?php if (isset($_POST['search_type'])) foreach($_POST['search_type'] as $city) echo($city . ' '); ?>
    9.         <div class="fast_search_title"><strong><big>Пол:</big></strong></div>
    10.     <?php if (isset($_POST['search_sex'])) foreach($_POST['search_sex'] as $city) echo($city . ' '); ?>
    11.         <div class="fast_search_title"><strong><big>Цена:</big></strong></div>
    12.     <?php if (isset($_POST['search_place'])) foreach($_POST['search_place'] as $city) echo($city . ' '); ?>
    13.         <div class="fast_search_title"><strong><big>Продается:</big></strong></div>                   
    14.  
    15.   <?php } else { ?>
    16.     <form name="fast_search_form" method="POST">
    17.         <div class="fast_search_title"><strong><big>Город:</big></strong></div>
    18.         <div class="clear"></div>
    19.         <label><input type="checkbox" name="search_city[]" id="city_0" value="102" >Москва</label>
    20.         <label><input type="checkbox" name="search_city[]" id="city_1" value="101" >Петербург</label>
    21.         <div class="clear"></div>
    22.  
    23.         <div class="fast_search_title"><strong><big>Тип одежды:</big></strong></div>
    24.  
    25.         <div class="clear"></div>
    26.         <p><br/>УЛИЦА:</p>
    27.         <label><input type="checkbox" name="search_type[]" id="type_0" value="15" >Дубленки</label>
    28.         <label><input type="checkbox" name="search_type[]" id="type_1" value="13" >Куртки</label>
    29.         <label><input type="checkbox" name="search_type[]" id="type_2" value="11" >Пальто</label>
    30.         <div class="clear"></div>
    31.         <p><br/>ВЕРХ:</p>
    32.         <label><input type="checkbox" name="search_type[]" id="type_6" value="22" >Блузки</label>
    33.         <label><input type="checkbox" name="search_type[]" id="type_7" value="98" >Боди</label>
    34.         <label><input type="checkbox" name="search_type[]" id="type_8" value="23" >Джемперы</label>
    35.         <div class="clear"></div>
    36.         <p><br/>ВЕРХ + НИЗ:</p>
    37.         <label><input type="checkbox" name="search_type[]" id="type_23" value="55" >Домашняя одежда</label>
    38.         <label><input type="checkbox" name="search_type[]" id="type_24" value="74" >Карнавальные костюмы</label>
    39.         <label><input type="checkbox" name="search_type[]" id="type_25" value="40" >Комбинезоны</label>
    40.         <div class="clear"></div>
    41.  
    42.         <div class="fast_search_title"><strong><big>Пол:</big></strong></div>
    43.  
    44.         <label><input type="checkbox" name="search_sex[]" id="sex_0" value="1" >женский</label>
    45.         <label><input type="checkbox" name="search_sex[]" id="sex_1" value="2" >мужской</label>
    46.         <label><input type="checkbox" name="search_sex[]" id="sex_2" value="4" >unisex</label>
    47.                    
    48.         <div class="fast_search_title"><strong><big>Цена:</big></strong></div>
    49.         <div class="search_price">
    50.             <label><input type="radio" name="search_price" id="price_0" value="0;3000">меньше 3000 руб.</label>
    51.             <label><input type="radio" name="search_price" id="price_1" value="3000;8000">от 3000 до 8000 руб.</label>
    52.         </div>
    53. <div style="display:none;">    
    54.         <div class="fast_search_title"><strong><big>Продается:</big></strong></div>                   
    55.         <label><input type="radio" name="search_place" id="place_0" value="1" >online</label>
    56.         <label><input type="radio" name="search_place" id="place_1" value="2" >offline</label>
    57.         <label><input type="radio" name="search_place" id="place_2" value="0" >неважно</label>
    58. </div>
    59.         <div class="clear"></div>
    60.         <input type='submit' value='Искать' name='btnSearch'/>
    61.     </form>
    62. <?php
    63.     }
    64. ?> 
    65. </body>
    66. </html>
    67.  
     
  7. Dr_Ceferov

    Dr_Ceferov Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    12
    Симпатии:
    0
    engager
    Sps tebe bolshoe za tvoy trud ,za vse...blogadoryu...hm teper nado tvoy skript soedinit v BD.наверное отныне ябуду тут.яновичок в этом деле.поэтому тут могу многому научится.
    я сам писалкод таким образом:

    search.php

    <form action="form.php" method=post>
    <table align=center bgcolor=f1f1f1><tr><td>
    <?PHP
    include('inc/config.php');
    $a='Select * from tip';
    $result=mysql_query($a);
    while($netice=MYSQL_FETCH_ARRAY($result))
    {
    echo '<b>'.$netice['ad'].' :</b><br>';
    $b='Select * from nov where tip_id="'.$netice['id'].'"';
    $result2=mysql_query($b);
    while($netice=mysql_fetch_array($result2))
    {
    echo $netice['ad'].' <input type=checkbox name=nov_'.$netice['id'].' value='.$netice['id'].'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ';
    }
    echo '<br><br>';
    }

    echo '<b>Pol :</b><br>';

    $c='Select * from cins';
    $result3=mysql_query($c);
    while($netice3=MYSQL_FETCH_ARRAY($result3))
    {

    echo $netice3['ad'].' <input type=checkbox name=cins_'.$netice3['id'].' value='.$netice3['id'].'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ';
    }



    echo '<br><br>';


    echo ' &nbsp;&nbsp;&nbsp; <input type=reset value=steret>';
    echo '&nbsp;&nbsp;&nbsp; <input type=submit value=iskat>';
    ?>
    </td></tr></table>
    </form>







    form.php


    <?PHP
    include('inc/config.php');

    $c='Select * from cins';
    $result3=mysql_query($c);
    while($netice3=MYSQL_FETCH_ARRAY($result3))
    {

    if(isset($_POST['cins_'.$netice3['id']]))
    {
    $a='Select * from tip';
    $result=mysql_query($a);
    while($netice=MYSQL_FETCH_ARRAY($result))
    {
    $netice['ad'];
    $b='Select * from nov where tip_id="'.$netice['id'].'"';
    $result2=mysql_query($b);
    while($netice=mysql_fetch_array($result2))
    {
    if(isset($_POST['nov_'.$netice['id']]))
    {
    $nov_id=$_POST['nov_'.$netice['id']];
    $cins_id=$_POST['cins_'.$netice3['id']];
    $g='select * from tovar where nov_id='.$nov_id.' and cins_id='.$cins_id;
    $n=MYSQL_QUERY($g);
    while($pp=MYSQL_FETCH_ARRAY($n))
    {
    echo $pp['ad'].'<br>';
    }
    }
    }

    }

    }

    }

    ?>



    poetomu i vivodit tolko esli vibrat oboix odnovremmenno.i pol + odin iz tovarov.
     
  8. Dr_Ceferov

    Dr_Ceferov Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    12
    Симпатии:
    0
    Вот и СГЛ.правда не всезаполнил.толко Cinsi.mayki.sviteri i yubki...ostalnie pustie. mojete esli netrudno posmotret mojno li kakto ispravitmoy kod?shtob skript rabotal?ili etot sposob oshibochniy,?

    -- phpMyAdmin SQL Dump
    -- version 2.11.7
    -- http://www.phpmyadmin.net
    --
    -- Хост: localhost
    -- Время создания: Фев 05 2010 г., 14:43
    -- Версия сервера: 5.0.51
    -- Версия PHP: 5.2.6

    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

    --
    -- База данных: `shop`
    --

    -- --------------------------------------------------------

    --
    -- Структура таблицы `cins`
    --

    CREATE TABLE IF NOT EXISTS `cins` (
    `id` int(2) NOT NULL auto_increment,
    `ad` varchar(10) collate utf8_unicode_ci NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;

    --
    -- Дамп данных таблицы `cins`
    --

    INSERT INTO `cins` (`id`, `ad`) VALUES
    (1, 'kishi'),
    (2, 'qadin');

    -- --------------------------------------------------------

    --
    -- Структура таблицы `nov`
    --

    CREATE TABLE IF NOT EXISTS `nov` (
    `id` int(7) NOT NULL auto_increment,
    `ad` varchar(35) collate utf8_unicode_ci NOT NULL,
    `tip_id` varchar(32) collate utf8_unicode_ci NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ;

    --
    -- Дамп данных таблицы `nov`
    --

    INSERT INTO `nov` (`id`, `ad`, `tip_id`) VALUES
    (1, 'Yubki', '4'),
    (2, 'Bryuki', '4'),
    (3, 'Shorti', '4'),
    (4, 'Cinsi', '4'),
    (5, 'Svitera', '2'),
    (6, 'Mayki', '2'),
    (7, 'Rubashki', '2'),
    (8, 'Bluzki', '2'),
    (9, 'Dublenki', '1'),
    (10, 'Shubi', '1'),
    (11, 'Palto', '1'),
    (12, 'Kurtki', '1'),
    (13, 'Sarafani', '3'),
    (14, 'Platya', '3'),
    (15, 'Kostyumi', '3'),
    (16, 'Kombinezoni', '3');

    -- --------------------------------------------------------

    --
    -- Структура таблицы `tip`
    --

    CREATE TABLE IF NOT EXISTS `tip` (
    `id` int(7) NOT NULL auto_increment,
    `ad` varchar(35) collate utf8_unicode_ci NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;

    --
    -- Дамп данных таблицы `tip`
    --

    INSERT INTO `tip` (`id`, `ad`) VALUES
    (1, 'Ulitsa'),
    (2, 'Verx'),
    (3, 'verx+niz'),
    (4, 'niz');

    -- --------------------------------------------------------

    --
    -- Структура таблицы `tovar`
    --

    CREATE TABLE IF NOT EXISTS `tovar` (
    `id` int(7) NOT NULL auto_increment,
    `ad` text collate utf8_unicode_ci NOT NULL,
    `shekil` text collate utf8_unicode_ci NOT NULL,
    `cins_id` int(2) NOT NULL,
    `qiymet` int(7) NOT NULL,
    `nov_id` int(4) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;

    --
    -- Дамп данных таблицы `tovar`
    --

    INSERT INTO `tovar` (`id`, `ad`, `shekil`, `cins_id`, `qiymet`, `nov_id`) VALUES
    (1, 'Cins Shalvar', '1.jpg', 1, 100, 4),
    (2, 'Cins shalvar 2', '2.jpg', 2, 100, 4),
    (3, 'cins shalvar 3', '3.jpg', 1, 150, 4),
    (4, 'CINS SHALVAR 4', '4.jpg', 2, 170, 4),
    (5, 'cins shalvar 5', '5.jpg', 1, 270, 4),
    (6, 'cins shalvar 6', '6.jpg', 2, 214, 4),
    (7, 'Yubka 1', '', 2, 150, 4),
    (8, 'yubka2', '', 2, 35, 4),
    (9, 'sviter1', '', 1, 111, 2),
    (10, 'sviter2', '', 2, 333, 2),
    (11, 'mayka1', '', 1, 131, 2),
    (12, 'mayka2', '', 2, 221, 2);
     
  9. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    ну собственно, дело осталось за немногим.
    то, что приезжает в пост-запросе - это ни что иное, как идентификаторы соответствующих атрибутов товара (город, тип итд). нужно составить на основе этих параметров селект. нечто:
    [sql]select
    id,
    ad,
    shekil
    from
    tovar
    where
    ...
    [/sql]
    теперь составляем условие для запроса.
    например, отфильтруем по типу одежды, на основании того, что выбрал пользователь.

    PHP:
    1.   if (isset($_POST['search_type']))  $where = 'nov_id in (' . implode($_POST[',', $_POST['search_city'])) . ')'
    потом делаем так, чтоб вместо ... было значение перменной $where
    этот запрос вернет весь товар с заданным типом.
     
  10. Dr_Ceferov

    Dr_Ceferov Активный пользователь

    С нами с:
    5 фев 2010
    Сообщения:
    12
    Симпатии:
    0
    sps.ya nepolnostyu ponel...dodelal svoim putem :

    form.php

    <?PHP
    include('inc/config.php');
    $maxx=$_POST['max'];
    $minn=$_POST['min'];
    if(empty($maxx)){$maxx=1000000;}
    if(empty($minn)){$minn=0;}
    $netice['ad'];
    $b='Select * from nov';
    $result2=mysql_query($b);
    while($netice=mysql_fetch_array($result2))
    {
    if(isset($_POST['nov_'.$netice['id']]))
    {
    $nov[].=$_POST['nov_'.$netice['id']];
    }
    }
    if(count($nov)==0)
    {
    $b='Select * from nov';
    $result2=mysql_query($b);
    while($netice=mysql_fetch_array($result2))
    {

    $nov[].=$netice['id'];
    }
    }
    $c='Select * from cins';
    $result3=mysql_query($c);
    while($netice3=MYSQL_FETCH_ARRAY($result3))
    {
    if(isset($_POST['cins_'.$netice3['id']])){$cins[]=$_POST['cins_'.$netice3['id']];}

    }
    /*for($x=0;$x<count($cins);$x++)
    {
    echo $cins[$x].'<br>';
    }*/
    if(count($cins)==0)
    {
    $c='Select * from cins';
    $result3=mysql_query($c);
    while($netice3=MYSQL_FETCH_ARRAY($result3))
    {
    $cins[]=$netice3['id'];

    }
    /*for($x=0;$x<count($cins);$x++)
    {
    echo $cins[$x].'<br>';
    } */
    }
    for($x=0;$x<count($cins);$x++)
    {
    for($y=0;$y<count($nov);$y++)
    {
    $sql='select * from tovar where nov_id='.$nov[$y].' and cins_id='.$cins[$x].' and qiymet<'.$maxx.' and qiymet>'.$minn;
    $net=MYSQL_QUERY($sql);
    while($tovar=MYSQL_FETCH_ARRAY($net))
    {
    echo $tovar['ad'].'<br>';
    }
    }
    }
    /* $c='Select * from cins';
    $result3=mysql_query($c);
    while($netice3=MYSQL_FETCH_ARRAY($result3))
    {

    if(isset($_POST['cins_'.$netice3['id']]))
    {
    $a='Select * from tip';
    $result=mysql_query($a);
    while($netice=MYSQL_FETCH_ARRAY($result))
    {
    $netice['ad'];
    $b='Select * from nov where tip_id="'.$netice['id'].'"';
    $result2=mysql_query($b);
    while($netice=mysql_fetch_array($result2))
    {
    if(isset($_POST['nov_'.$netice['id']]))
    {
    $nov_id=$_POST['nov_'.$netice['id']];
    $cins_id=$_POST['cins_'.$netice3['id']];
    $g='select * from tovar where nov_id='.$nov_id.' and cins_id='.$cins_id;
    $n=MYSQL_QUERY($g);
    while($pp=MYSQL_FETCH_ARRAY($n))
    {
    echo $pp['ad'].'<br>';
    }
    }
    }

    }

    }

    }*/

    ?>


    vse rabotaet... vserovno ogromnoe sposibo za vnimanie .Ochen blogadoryu.mojno uje zakrit forum.