2016-05-28 3 views
0

Это мое кодирование. Это кодирование позволяет мне искать ключевое слово в моей базе данных, и оно отлично работает. Но как я могу найти ключевое слово без нажатия кнопки поиска? То, что я хочу, такое же, как функция поиска в поиске Google. Он может автоматически помочь вам искать и просматривать без нажатия любой кнопки.автоматический поиск по ключевому слову в textarea

<html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Search Contacts</title> 
    </head> 
    <p><body> 
    <h3>Search Contacts Details</h3> 
    <p>You may search either by first or last name</p> 
    <form method="post" action="search.php?go" id="searchform"> 
     <input type="text" name="question"> 
     <input type="submit" name="submit" value="Search"> 
    </form> 

    <?php 
    if(isset($_POST['submit'])){ 
    if(isset($_GET['go'])){ 
    if(preg_match("/^[ a-zA-Z]+/", $_POST['question'])){ 
    $question=$_POST['question']; 

    $con = mysqli_connect("localhost","root",""); 
    mysqli_select_db($con,"search")or die(mysqli_error($con));; 


    $sql="SELECT id , question FROM question WHERE question LIKE '%" . $question . "%'"; 
    //-run the query against the mysql query function 
    $result=mysqli_query($con, $sql); 

    while ($row=mysqli_fetch_array($result)){ 
      $question =$row['question']; 
      $id=$row['id']; 

    echo "<ul>\n"; 
    echo "<li>" . " " . $question . "</li>\n"; 
    echo "</ul>"; 
    } 
    } 
    else{ 
    echo "<p>Please enter a search query</p>"; 
    } 
    } 
    } 
?> 
    </body> 
</html> 
</p> 

ответ

0

Ну, как это делает Google, это немного отличается. Однако, что вы можете сделать, это использовать JavaScript (jQuery, вероятно, проще всего для вас здесь), чтобы отправить XHR, который будет извлекать результаты. Это будет выглядеть как этот

$('input[name="question"]').on('keyup', function (e) { 
    $.ajax({ 
     url: "search.php?go", 
     method: 'post', 
     data: { 
      query: e.target.val() 
     } 
    }).done(function(data) { 
     // Output your data however you want 
    }); 
} 

Конечно, можно также использовать метод GET HTTP, что все ваши предпочтения.

Теперь, кроме этого, выглядит, так как у вас есть уязвимость в SQL-инъекции в вашем запросе. По сути, если бы я ввел 'DROP DATABASE question в качестве своего поискового запроса, это приведет к потере базы данных. Что вы должны делать, так это использование подготовленных инструкций с использованием Mysql::prepare, см. Документы here.


Заключительное примечание: Google не делает этого таким образом. Лучший способ добиться быстрых результатов поиска - использовать WebSockets для поддержки подключения сокета к вашему серверу и разрешения поиска через базу данных документов, такую ​​как Elasticsearch, которая оптимизирована для полнотекстового поиска.

0

Шаг 1:

дать идентификатор вашего поля ввода ...

<div class="content"> 
<input type="text" class="search" id="searchid" placeholder="Search Here" /> 
<div id="result"></div> 
</div> 

Шаг 2:

На переменной поиска KeyUp является cathed в vaiable и передается через AJAX в «FINDit. PHP»

<script type="text/javascript" src="jquery-1.8.0.min.js"></script> 
<script type="text/javascript"> 
$(function(){ 
$(".search").keyup(function() 
{ 
var searchid = $(this).val(); 
var dataString = \'search=\'+ searchid; 
if(searchid!=\'\') 
{ 
    $.ajax({ 
    type: "POST", 
    url: "findit.php", 
    data: dataString, 
    cache: false, 
    success: function(html) 
    { 
    $("#result").html(html).show(); 
    } 
    }); 
}return false;  
}); 

jQuery("#result").on("click",function(e){ 
    var $clicked = $(e.target); 
    var $name = $clicked.find(\'.name\').html(); 
    var decoded = $("<div/>").html($name).text(); 
    $(\'#searchid\').val(decoded); 
}); 
jQuery(document).live("click", function(e) { 
    var $clicked = $(e.target); 
    if (! $clicked.hasClass("search")){ 
    jQuery("#result").fadeOut(); 
    } 
}); 
$(\'#searchid\').click(function(){ 
    jQuery("#result").fadeIn(); 
}); 
}); 
</script> 

Шаг 3:

Теперь создайте файл PHP, имеющий имя «findit.php» и используйте код ниже

include('conn.php'); //this is your DB connection file 
if($_POST) 
{ 
    $q = mysqli_real_escape_string($connection,$_POST['search']); 
    $qry = mysqli_query($connection,"select col_name from tbl_name where col_name like '%$q%' order by col_name LIMIT 7"); 
    while($row=mysqli_fetch_array($qry)) 
    { 
     $col_name = $row['col_name']; 
     $b_res = '<strong>'.$q.'</strong>'; 
     $final_res = str_ireplace($q, $b_res, $col_name); 
     ?> 
     <?php 
    } 
} 
?> 
+0

может я спросить, что является результатом этого кодирования? Нужно ли что-либо делать или просто вводить ключевое слово внутри текстового поля? потому что он не реагирует, когда я пытаюсь. – coco

+0

вам нужно заменить имя столбца, соединение db и соответствующий id ..thats all.And он должен работать после этого – Kunal

+0

ya. я заменил уже .. – coco

Смежные вопросы