{"id":394,"date":"2023-01-17T05:41:06","date_gmt":"2023-01-17T05:41:06","guid":{"rendered":"https:\/\/randomlinuxnotes.d13.com\/?p=394"},"modified":"2023-01-17T05:41:06","modified_gmt":"2023-01-17T05:41:06","slug":"dynamic-live-search-box-with-php-javascript-mysql","status":"publish","type":"post","link":"https:\/\/randomlinuxnotes.d13.com\/?p=394","title":{"rendered":"dynamic\/live search box with php, javascript, mysql"},"content":{"rendered":"<p>I went through a bunch of iterations with this a couple years ago and didn&#8217;t get it working.<\/p>\n<p>This is the second one I tried recently and was able to get what I wanted for hyperlinked results.<\/p>\n<pre>https:\/\/www.codingcage.com\/2016\/12\/autocomplete-search-with-href-link-php.html\n\n<\/pre>\n<p>code blobs for posterity:<\/p>\n<p>database:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-sql\">--\n-- Database: `codingcage`\n--\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `tbl_posts`\n--\n\nCREATE TABLE IF NOT EXISTS `tbl_posts` (\n  `postID` int(11) NOT NULL AUTO_INCREMENT,\n  `postTitle` varchar(255) NOT NULL,\n  `postUrl` varchar(255) NOT NULL,\n  PRIMARY KEY (`postID`)\n) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;\n\n--\n-- Dumping data for table `tbl_posts`\n--\n\nINSERT INTO `tbl_posts` (`postID`, `postTitle`, `postUrl`) VALUES\n(1, 'Simple jQuery Add, Update, Delete with PHP and MySQL', 'http:\/\/goo.gl\/IL6NTr'),\n(2, '15 Free Bootstrap Admin Themes Demo and Download', 'http:\/\/goo.gl\/1dBwEy'),\n(3, 'Easy Ajax Image Upload with jQuery, PHP', 'http:\/\/goo.gl\/jXZ6LY'),\n(4, 'How to Send HTML Format eMails in PHP using PHPMailer', 'http:\/\/goo.gl\/kQrzJP'),\n(5, 'Ajax Bootstrap Signup Form with jQuery PHP and MySQL', 'http:\/\/goo.gl\/yxKrha'),\n(6, 'Submit PHP Form without Page Refresh using jQuery, Ajax', 'http:\/\/goo.gl\/14vlBe'),\n(7, 'How to Convert MySQL Rows into JSON Format in PHP', 'http:\/\/goo.gl\/qgOiwB'),\n(8, 'Designing Bootstrap Signup Form with jQuery Validation', 'http:\/\/goo.gl\/nECERc'),\n(9, 'Upload, Insert, Update, Delete an Image using PHP MySQL', 'http:\/\/goo.gl\/HRJrDD'),\n(10, 'Login Registration with Email Verification, Forgot Password using PHP', 'http:\/\/goo.gl\/O9FKN1');<\/code><\/pre>\n<p>php:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\">&lt;?php\n \n $DBhost = \"localhost\";\n $DBuser = \"root\";\n $DBpass = \"\";\n $DBname = \"codingcage\";\n \n try {\n  $DBcon = new PDO(\"mysql:host=$DBhost;dbname=$DBname\",$DBuser,$DBpass);\n } catch(PDOException $ex){\n  die($ex-&gt;getMessage());\n }<\/code><\/pre>\n<pre class=\"line-numbers\"><code class=\"language-php\">$keyword = trim($_REQUEST['term']); \/\/ this is user input\n\n $sugg_json = array();    \/\/ this is for displaying json data as a autosearch suggestion\n $json_row = array();     \/\/ this is for stroring mysql results in json string\n \n\n $keyword = preg_replace('\/\\s+\/', ' ', $keyword); \/\/ it will replace multiple spaces from the input.\n\n $query = 'SELECT postID, postTitle, postUrl FROM tbl_posts WHERE postTitle LIKE :term'; \/\/ select query\n \n $stmt = $DBcon-&gt;prepare( $query );\n $stmt-&gt;execute(array(':term'=&gt;\"%$keyword%\"));\n \n if ( $stmt-&gt;rowCount()&gt;0 ) {\n  \n  while($recResult = $stmt-&gt;fetch(PDO::FETCH_ASSOC)) {\n      $json_row[\"id\"] = $recResult['postUrl'];\n      $json_row[\"value\"] = $recResult['postTitle'];\n      $json_row[\"label\"] = $recResult['postTitle'];\n      array_push($sugg_json, $json_row);\n  }\n  \n } else {\n     $json_row[\"id\"] = \"#\";\n     $json_row[\"value\"] = \"\";\n     $json_row[\"label\"] = \"Nothing Found!\";\n     array_push($sugg_json, $json_row);\n }\n \n $jsonOutput = json_encode($sugg_json, JSON_UNESCAPED_SLASHES); \n print $jsonOutput;<\/code><\/pre>\n<p>html:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-php\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=utf-8\" \/&gt;\n&lt;meta name=\"viewport\" content=\"initial-scale=1.0, maximum-scale=2.0\"&gt;\n&lt;title&gt;AutoComplete Example in PHP MySQL&lt;\/title&gt;\n&lt;link rel=\"stylesheet\" href=\"bootstrap\/css\/bootstrap.min.css\"&gt;\n&lt;link rel=\"stylesheet\" href=\"http:\/\/code.jquery.com\/ui\/1.12.1\/themes\/base\/jquery-ui.css\"&gt;\n&lt;\/head&gt;\n\n&lt;body&gt;\n\n &lt;div class=\"container\"&gt;\n    \n     &lt;div class=\"page-header\"&gt;\n        &lt;h3 style=\"color:#00a2d1; font-size:30px; font-family: Impact, Charcoal, sans-serif; text-align: center;\"&gt;AutoComplete Search with Href Link in PHP MySQL&lt;\/h3&gt;\n        &lt;\/div&gt;\n         \n        &lt;div class=\"row\"&gt;\n        \n         &lt;div class=\"col-lg-12 text-center\"&gt;\n          \n         &lt;div class=\"col-lg-offset-2\"&gt;\n             &lt;form&gt;\n             &lt;div class=\"form-group\"&gt;\n             &lt;div class=\"input-group\"&gt;\n             &lt;input id=\"txtSearch\" class=\"form-control input-lg\" type=\"text\" placeholder=\"Search for PHP, MySQL, Ajax and jQuery\" \/&gt;\n             &lt;div class=\"input-group-addon\"&gt;&lt;i class=\"glyphicon glyphicon-search\"&gt;&lt;\/i&gt;&lt;\/div&gt;\n             &lt;\/div&gt;\n             &lt;\/div&gt;\n             &lt;\/form&gt;  \n             &lt;\/div&gt; \n                \n            &lt;\/div&gt;\n        \n        &lt;\/div&gt;\n        \n    &lt;\/div&gt;\n\n&lt;script src=\"https:\/\/code.jquery.com\/jquery-1.12.4.js\"&gt;&lt;\/script&gt;\n&lt;script src=\"https:\/\/code.jquery.com\/ui\/1.12.1\/jquery-ui.js\"&gt;&lt;\/script&gt;\n&lt;script src=\"bootstrap\/js\/bootstrap.min.js\"&gt;&lt;\/script&gt;\n\n&lt;script&gt;\n$(document).ready(function(){\n \n $('#txtSearch').autocomplete({\n     source: \"post_search.php\",\n     minLength: 2,\n     select: function(event, ui) {\n         var url = ui.item.id;\n         if (url != '#') {\n             location.href = url\n         }\n     },\n     open: function(event, ui) {\n         $(\".ui-autocomplete\").css(\"z-index\", 1000)\n     }\n })\n \n}); \n&lt;\/script&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<hr \/>\n<p>This site was the first one that I got working &#8211; but I wasn&#8217;t happy with using it for hyperlinked results.<\/p>\n<pre>https:\/\/codeforgeek.com\/ajax-search-box-php-mysql\/<\/pre>\n<p>code blobs for posterity:<\/p>\n<p>&nbsp;<\/p>\n<p>WARNING: sanitize your input and prevent code injection attacks<\/p>\n<p>html file:<\/p>\n<div class=\"codecolorer-container html4strict twitlight\">\n<pre class=\"html4strict codecolorer\"><span class=\"sc2\">&lt;<span class=\"kw2\">html<\/span>&gt;<\/span>\n\u00a0 <span class=\"sc2\">&lt;<span class=\"kw2\">head<\/span>&gt;<\/span>\n\u00a0 \u00a0 <span class=\"sc2\">&lt;<span class=\"kw2\">title<\/span>&gt;<\/span>Ajax Search Box using PHP and MySQL<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><span class=\"kw2\">ti<\/span><span class=\"kw2\">tle<\/span>&gt;<\/span>\n\u00a0 \u00a0 <span class=\"sc2\">&lt;<span class=\"kw2\">script<\/span><span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">\"http:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/1.11.1\/jquery.min.js\"<\/span>&gt;<\/span> \u00a0 \u00a0 \u00a0 \u00a0<span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><span class=\"kw2\">script<\/span>&gt;<\/span>\n\u00a0 \u00a0 \u00a0<span class=\"sc2\">&lt;<span class=\"kw2\">script<\/span> <span class=\"kw3\">src<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">\"typeahead.min.js\"<\/span>&gt;&lt;<span class=\"sy0\">\/<\/span><span class=\"kw2\">script<\/span>&gt;<\/span>\n\u00a0 <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><span class=\"kw2\">head<\/span>&gt;<\/span>\n\u00a0 <span class=\"sc2\">&lt;<span class=\"kw2\">body<\/span>&gt;<\/span>\n\u00a0  <span class=\"sc2\">&lt;<span class=\"kw2\">input<\/span><span class=\"kw3\">type<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">\"text\"<\/span> <span class=\"kw3\">name<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">\"typeahead\"<\/span>&gt;<\/span>\n\u00a0 <span class=\"sc2\">&lt;<span class=\"sy0\">\/<\/span><span class=\"kw2\">body<\/span>&gt;<\/span>\n\n\n<span class=\"sy0\">  &lt;<\/span>script<span class=\"sy0\">&gt;<\/span>\n\u00a0 \u00a0 $<span class=\"br0\">(<\/span>document<span class=\"br0\">)<\/span>.<span class=\"me1\">ready<\/span><span class=\"br0\">(<\/span><span class=\"kw1\">function<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"br0\">{<\/span>\n  \u00a0   $<span class=\"br0\">(<\/span><span class=\"st0\">'input.typeahead'<\/span><span class=\"br0\">)<\/span>.<span class=\"me1\">typeahead<\/span><span class=\"br0\">(<\/span><span class=\"br0\">{<\/span>\n\u00a0 \u00a0 \u00a0   name<span class=\"sy0\">:<\/span> <span class=\"st0\">'typeahead'<\/span><span class=\"sy0\">,<\/span>\n\u00a0 \u00a0   \u00a0 remote<span class=\"sy0\">:<\/span><span class=\"st0\">'search.php?key=%QUERY'<\/span><span class=\"sy0\">,<\/span>\n\u00a0   \u00a0 \u00a0 limit <span class=\"sy0\">:<\/span> <span class=\"nu0\">10<\/span>\n\u00a0 \u00a0   <span class=\"br0\">}<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n<span class=\"br0\">    }<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n  &lt;\/<span class=\"sy0\">script&gt;\n<span class=\"sc2\">&lt;\/<span class=\"kw2\">html<\/span>&gt;<\/span>\n<\/span><\/pre>\n<\/div>\n<div><\/div>\n<div>search.php:<\/div>\n<pre><span class=\"kw2\"><span class=\"re0\">&lt;?php\n    $key<\/span><span class=\"sy0\">=<\/span><span class=\"re0\">$_GET<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'key'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span>\n\u00a0 \u00a0 <span class=\"re0\">$array<\/span> <span class=\"sy0\">=<\/span> <span class=\"kw3\">array<\/span><span class=\"br0\">(<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0 \u00a0 <span class=\"re0\">$con<\/span><span class=\"sy0\">=<\/span><span class=\"kw3\">mysqli_connect<\/span><span class=\"br0\">(<\/span><span class=\"st0\">\"localhost\"<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">\"root\"<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">\"\"<\/span><span class=\"sy0\">,<\/span><span class=\"st0\">\"demos\"<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0 \u00a0 <span class=\"re0\">$query<\/span><span class=\"sy0\">=<\/span><span class=\"kw3\">mysqli_query<\/span><span class=\"br0\">(<\/span><span class=\"re0\">$con<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">\"select * from cfg_demos where title LIKE '%<span class=\"es4\">{$key}<\/span>%'\"<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0 \u00a0 <span class=\"kw1\">while<\/span><span class=\"br0\">(<\/span><span class=\"re0\">$row<\/span><span class=\"sy0\">=<\/span><span class=\"kw3\">mysqli_fetch_assoc<\/span><span class=\"br0\">(<\/span><span class=\"re0\">$query<\/span><span class=\"br0\">)<\/span><span class=\"br0\">)<\/span>\n\u00a0 \u00a0 <span class=\"br0\">{<\/span>\n\u00a0 \u00a0 \u00a0 <span class=\"re0\">$array<\/span><span class=\"br0\">[<\/span><span class=\"br0\">]<\/span> <span class=\"sy0\">=<\/span> <span class=\"re0\">$row<\/span><span class=\"br0\">[<\/span><span class=\"st_h\">'title'<\/span><span class=\"br0\">]<\/span><span class=\"sy0\">;<\/span>\n\u00a0 \u00a0 <span class=\"br0\">}<\/span>\n\u00a0 \u00a0 <span class=\"kw1\">echo<\/span> <span class=\"kw3\">json_encode<\/span><span class=\"br0\">(<\/span><span class=\"re0\">$array<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n\u00a0 \u00a0 <span class=\"kw3\">mysqli_close<\/span><span class=\"br0\">(<\/span><span class=\"re0\">$con<\/span><span class=\"br0\">)<\/span><span class=\"sy0\">;<\/span>\n<span class=\"sy1\">?&gt;<\/span><\/span>\n<!-- javascript --><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I went through a bunch of iterations with this a couple years ago and didn&#8217;t get it working. This is the second one I tried recently and was able to get what I wanted for hyperlinked results. https:\/\/www.codingcage.com\/2016\/12\/autocomplete-search-with-href-link-php.html code blobs for posterity: database: &#8212; &#8212; Database: `codingcage` &#8212; &#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[62,63,90,104,124],"class_list":["post-394","post","type-post","status-publish","format-standard","hentry","category-rln","tag-javascript","tag-json","tag-mysql","tag-php","tag-search"],"_links":{"self":[{"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=\/wp\/v2\/posts\/394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=394"}],"version-history":[{"count":0,"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=\/wp\/v2\/posts\/394\/revisions"}],"wp:attachment":[{"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/randomlinuxnotes.d13.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}