форма автоматически предлагает значения взятые из базы данных

Тема в разделе "Как сделать...", создана пользователем OffSpEEd, 7 июл 2012.

  1. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    Например, есть простая форма:

    HTML:
    <form action="notebook.php" method="post">
    <input name="name" type="text" /> Название:<br>
    <input name="type" type="text" /> Тип ноутбука:<br>
    <input name="brand" type="text" /> Фирма производитель<br>
    <input name="submit" type="submit" value="add" />
    </form>
    Уже введено много товаров в базу.
    Как сделать чтобы при вводе данных в форму, она автоматически предлагала данные из mysql которые уже занесены (например, начиная с 3 символа).

    Т.е. допустим в поле "Фирма производитель" начинаем вводить son и вниз спадающим списком нам предложили бы выбрать Sony или Sony-Ericsson.

    Есть ли какое то готовое решение по этому вопросу?
    Переместите тему если не по адресу пожалуйста..
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
  3. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    нашел решение здесь:



    очень удобное и классно подгружает данные с mysql


    [​IMG][​IMG][​IMG][​IMG]
     
  4. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Недавно тоже столкнулся с подобным, решил так:
    HTML:
    
    <script type="text/javascript">
    function lookup(inputString) {
        if(inputString.length < 3) {
            $('#suggestions').fadeOut();
        } else {
                $.post("/modules/recom/ajaxsearch.php?search="+inputString, {queryString: ""+inputString+""}, function(data) {
                $('#suggestions').fadeIn();
                $('#suggestions').html(data);
            });
        }
     
        $("input").blur(function(){
            $('#suggestions').fadeOut();
        });
    }
    </script>
    
    ajaxsearch.php получает ввод из input и делает выборку.
    Сам input
    HTML:
    <input type="text" onkeyup="lookup(this.value);" class="search-input" id="inputString" name="cntnt01searchinput" size="20" maxlength="50" value="Поиск по сайту" onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;" AUTOCOMPLETE="off"/>
     
  5. OffSpEEd

    OffSpEEd

    Регистр.:
    17 авг 2007
    Сообщения:
    159
    Симпатии:
    19
    ну и как эта схема берет данные из mysql? где сам запрос и логин к базе? не очень понятно...
     
  6. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    здесь задействован ajax, а он подразумевает взаимодействие со сторонним файлом, в данном случае это /modules/recom/ajaxsearch.php вот в нем как раз все запросы к БД и реализованы. Возвращается от него в яваскрипт, массив слов (фраз), содержащих, вводимые в поисковое поле, символы...
     
  7. zaxap83

    zaxap83 Постоялец

    Регистр.:
    6 дек 2010
    Сообщения:
    87
    Симпатии:
    28
    Подключение к базе не является чем-то сверхъестественным, думаю самому можно реализовать при любом уровне знаний, если хоть какой-то уровень имеется, а выборка дело сугубо индивидуальное, все зависит от движка и от того, что именно нужно искать. В моем случае дело было так
    PHP:
    if(isset($_GET['search']))
        {
            
    $query mysql_query("select parent_id, content_name, hierarchy_path from cms_content where content_name like '%".$_GET['search']."%' or menu_text like '%".$_GET['search']."%' order by content_name ASC");
            while(
    $row mysql_fetch_array($query))
                {
                    
    $query_par mysql_query("select content_name from cms_content where content_id ='".$row['parent_id']."'");
                    if(
    $res_par mysql_fetch_assoc($query_par))
                        {
                            
    $parrent $res_par['content_name'];               
                            
    $parrent_title '('.$parrent.')';
                        }
                    else
                        {
                            
    $parrent_title '';
                        }
     
                    
    preg_match('#'.$_GET['search'].'#isu'$row['content_name'], $matches);
                    
    $res_out preg_replace('#'.$_GET['search'].'#isu''<span style="color:#FE7E0C">'.$matches[0].'</span>'$row['content_name']);
                   
                    
    $res_arr[] =  '<a class ="srch_a" href="/'.$row['hierarchy_path'].'">'.$res_out.' '.$parrent_title.'</a>';
     
                }
            
    $res array_unique($res_arr);
            foreach(
    $res as $a)
                    {
                        echo 
    $a;
                    }
        }
    Верно, только в данном случае нужно передавать готовый html код, т.к. он сразу выносится на страницу как есть.