За последние 24 часа нас посетили 18272 программиста и 1615 роботов. Сейчас ищут 1804 программиста ...

Help suggest скрипт прилогается

Тема в разделе "JavaScript и AJAX", создана пользователем HunterNomad, 26 июл 2009.

  1. HunterNomad

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

    С нами с:
    26 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    Доброго времени суток.
    Хочу привести листинг поиска в стиле Google. Сразу оговорюсь - идея не моя. Я только ее адаптировал под PostgreSQL.
    Я добавляю архив со всеми файлами (может кому пригодится).
    Во время выпадания предлагаемого списка показываться и user и id - и это правильно :).
    Когда выбор сделан видно только user - и это тоже то, что нужно.
    Но мне нужно, чтобы на сервер отправлялся не только user, но и в скрытом поле
    Код (Text):
    1. <input type="hidden" name="id" value="" />  
    на сервер отправлялся id.
    Можно ли ето сделать? И как?

    Всем за ранее спасибо за помощь.

    Скрипт http://sql.ru/forum/actualfile.aspx?id=7459980
     
  2. HunterNomad

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

    С нами с:
    26 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    Подскажите в каком направлении двигаться.
     
  3. vital

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

    С нами с:
    18 дек 2006
    Сообщения:
    162
    Симпатии:
    0
    Адрес:
    Минск
    [​IMG]
    покажите код
     
  4. HunterNomad

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

    С нами с:
    26 июл 2009
    Сообщения:
    3
    Симпатии:
    0
    Уже и не думал, что кто та ответит.
    Спасибо.
    Последний вариант.
    index.php
    HTML:
    1. <link rel="stylesheet" type="text/css" href="css/commons.css">
    2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    3. <script type="text/javascript" src="js/jquery.js"></script>
    4. <script type="text/javascript" src="js/jquery.autocomplete.js"></script>
    5. </head>
    6. <div style="margin:10px; padding:10px;">
    7. <h1> Поиск как в Google </h1><hr>
    8. <p style="MARGIN-TOP: 11px;">
    9.  <form action="cse" id="cse-search-box">
    10.   <div>Поиск:
    11.     <input type="text" name="q" size="50"/>
    12.     <input type="hidden" name="tests" id="tests" />    
    13.     <input type="submit" name="sa" value="&#x041f;&#x043e;&#x0438;&#x0441;&#x043a;" />
    14.   </div>
    15. </form>
    16. </p>
    17. <script type="text/javascript" src="js/suggest.js"></script></div>
    18.  
    19. </body>
    20. </html>
    find.php
    PHP:
    1. <?php
    2. header("Content-Type: text/html; charset=utf-8");
    3. if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
    4.  
    5. $host = "localhost";
    6. $user = "postgres";
    7. $pass = "postgres";
    8. $db = "users";
    9.  
    10. $connection = pg_connect ("host=$host dbname=$db user=$user password=$pass");
    11. if (!$connection)
    12. {
    13. die("Could not open connection to database server");
    14. }
    15.  
    16.  
    17. $q = addslashes($_GET["q"]);
    18. $limit = 10;
    19.  
    20. if ($q) {
    21. $query = "SELECT * FROM users WHERE user LIKE '$q%' LIMIT '$limit'";
    22. $result = pg_query($connection, $query) or die("Error in query: $query. " . pg_last_error($connection));
    23.  
    24.    $results = array();
    25.    while ($row = pg_fetch_assoc($result)) {
    26.       $word = $row["user"];
    27.       $lang = $row["id"];
    28.       $results[] = "$user:$id";
    29.    }
    30.  
    31.    for($i=0;$i<count($results);$i++){
    32.       $row_base = explode(":", $results[$i]);
    33.       $res = mb_strpos(mb_strtolower($row_base[0],"UTF-8"), mb_strtolower($_GET['q'],"UTF-8"));
    34.       if($res!==false&&$res==0) {
    35.         $row_base[3] = trim($row_base[3]);
    36.         print $row_base[0]."|".$row_base[1]."\n";
    37.       }
    38.     }
    39. }
    40.  
    41. pg_close($connection);
    42. }
    43.  
    44. ?>
    suggest.js
    [js]
    jQuery.noConflict();

    jQuery(document).ready(function(){


    function liFormat (row, i, num) {

    var result = row[0] + '<p class=qnt>' + row[1] + '</p>';
    return result;
    }


    function selectItem(li) {
    }


    jQuery("#cse-search-box input[name='q']").autocomplete("find.php", {

    delay:15,
    minChars:1,
    matchSubset:1,
    autoFill:true,
    matchContains:1,
    cacheLength:10,
    selectFirst:true,
    formatItem:liFormat,
    maxItemsToShow:10,
    onItemSelect:selectItem,
    });
    });
    [/js]

    commons.css
    [css]* {

    margin:0;
    padding:0;

    }

    html, body {
    background-color:#E2F2E2;
    font-family: "Trebuchet MS", Tahoma, Verdana, Arial, Helvetica, sans-serif;
    font-size: 8pt;
    }

    .ac_results {
    padding: 0px;
    border: 1px solid WindowFrame;
    background-color: Window;
    overflow: hidden;
    }



    .ac_results ul {
    width: 100%;
    list-style-position: outside;
    list-style: none;
    padding: 0;
    margin: 0;
    }


    .ac_results iframe {
    display:none;/*sorry for IE5*/
    display/**/:block;/*sorry for IE5*/
    position:absolute;
    top:0;
    left:0;
    z-index:-1;
    filter:mask();
    width:3000px;
    height:3000px;
    }


    .ac_results li {
    position:relative;
    margin: 0px;
    padding: 2px 5px;
    cursor: pointer;
    display: block;
    width: 100%;
    font: menu;
    font-size: 11px;
    overflow: hidden;
    }


    .ac_loading {
    background : Window url('autocomplete_indicator.gif') right center no-repeat;
    }


    .ac_over {
    background-color: Highlight;
    color: HighlightText;
    }

    #example {
    position:absolute;
    top:10px;
    left:10px;
    width:150px;
    font-family: "Trebuchet MS", Tahoma, Verdana, Arial, Helvetica, sans-serif;
    font-size: 10pt;
    }

    #example2 {
    position:absolute;
    top:10px;
    left:170px;
    width:240px;
    font-family: "Trebuchet MS", Tahoma, Verdana, Arial, Helvetica, sans-serif;
    font-size: 10pt;
    }

    .qnt {
    position:absolute;
    top:2px;
    right:10px;
    font-size:0.8em;
    color:#26A908;
    }[/css]

    Ну и Autocomplete - jQuery plugin 1.0.2 и jQuery JavaScript Library v1.3.2

    И еще впреть обещаю такую тупость как ссылка на ....... вышеуказанный сайт не делать. Еще раз сорри.
    JQuery не выкладываю в целях экономии пространства :)
    Из-за этого затыка вся работа стала.

    Еще раз спасибо.