http://htmlweb.ru/ajax/example/search.php did everything exactly as on the site. How to make it so that it would check how much is written in the search line and start the search only when there are more than 3 characters in the text field?

In the head tag:

<script language="javascript" src="ajax_framework.js"></script> 

In body:

 <h2>Ajax Search Engine</h2> <form id="searchForm" name="searchForm" method="post" action="javascript:insertTask();"> <div class="searchInput"> <input name="searchq" type="text" id="searchq" size="30" onkeyup="javascript:searchNameq()"/> <input type="button" name="submitSearch" id="submitSearch" value="Search" onclick="javascript:searchNameq()"/> </div> </form> <h3>Search Results</h3> <div id="msg">Type something into the input field</div> <div id="search-result"></div> 

ajax_framework.js:

 /* -------------------------- */ /* XMLHTTPRequest Enable */ /* -------------------------- */ function createObject() { var request_type; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer"){ request_type = new ActiveXObject("Microsoft.XMLHTTP"); } else { request_type = new XMLHttpRequest(); } return request_type; } var http = createObject(); /* -------------------------- */ /* SEARCH */ /* -------------------------- */ function searchNameq() { searchq = encodeURI(document.getElementById('searchq').value); document.getElementById('msg').style.display = "block"; document.getElementById('msg').innerHTML = "Searching for <strong>" + searchq+""; // Set te random number to add to URL request nocache = Math.random(); http.open('get', 'in-search.php?name='+searchq+'&nocache = '+nocache); http.onreadystatechange = searchNameqReply; http.send(null); } function searchNameqReply() { if(http.readyState == 4){ var response = http.responseText; document.getElementById('search-result').innerHTML = response; } } 

Search in the database in-search.php:

 include('config.php'); $searchq = $_GET['name']; $getName = mysql_query('SELECT * FROM USER WHERE name LIKE "%'.addslashes($searchq).'%"'); while ($row = mysql_fetch_array($getName)) echo $row['name'] . '<br/>'; 
  • use sphinx fast and easy search engine - Naumov
  • If you are given an exhaustive answer, mark it as correct (tick next to the selected answer) - Mihanik71

1 answer 1

In JS, add a check for the length of the search string:

 function searchNameq() { if(document.getElementById('searchq').value.length > 3){ .... } } 

In PHP, add a check for the length of a search string:

 if(strlen($_GET['name']) > 3 ){ $searchq = $_GET['name']; $getName = mysql_query('SELECT * FROM USER WHERE name LIKE "%'.addslashes($searchq).'%"'); while ($row = mysql_fetch_array($getName)) echo $row['name'] . '<br/>'; } 
  • Need to choose only one or you need both? - BedOmar
  • Well, it depends where you want to do the check, for good, and there and there you need to check - Mihanik71
  • Many thanks helped! Can you help with something else? With the same script - BedOmar
  • Create a question - Mihanik71 pm
  • Well, I'll take off your link, maybe you also know the answer - BedOmar