PHP Autocomplete Websites with Domain using Clearbit API
Today, i going to give you pretty interesting example of autocomplete websites lists with name, logo and domain using clearbit API. we simply use free clearbit API and get lists of websites. You can simply use it in your PHP and also any framework(Laravel, codeigniter, zend etc).
clearbit website provide us several other API too like Reveal, Discovery, Website Logo and etc.
In this example i used following library as bellow listed:
1)clearbit
2)bootstrap
3)typeahead
Above library through we can make autocomplete of current websites in your PHP application. you can check demo how it is works. After example run you will find layout like as bellow:
Preview:
index.html
<!DOCTYPE html>
<html>
<head>
<title>Jquery setinterval stop after sometime</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/0.11.1/typeahead.bundle.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/0.11.1/typeahead.jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha/css/bootstrap.min.css">
<style type="text/css">
.typeahead {
background-color: #fff;
}
.typeahead:focus {
border: 2px solid #0097cf;
}
.tt-query {
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.tt-hint {
color: #999
}
.tt-menu {
width: 550px;
margin: 12px 0;
padding: 8px 0;
background-color: #fff;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
-webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
-moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
box-shadow: 0 5px 10px rgba(0,0,0,.2);
left: 17px !important;
top: 75% !important;
}
.tt-suggestion {
padding: 3px 20px;
font-size: 18px;
line-height: 24px;
}
.tt-suggestion:hover {
cursor: pointer;
color: #fff;
background-color: #0097cf;
}
.tt-suggestion.tt-cursor {
color: #fff;
background-color: #0097cf;
}
.image-ajax .image {
width: 50px;
float: left;
}
.image-ajax .menu-text{
padding-bottom: 0px;
margin: 0px;
}
.image-ajax .price{
font-size: 12px;
margin: 0px;
}
.image-ajax .ajax-text{
padding-left: 60px;
}
.tt-suggestion.tt-cursor {
color: #fff;
background-color: #0097cf;
}
.tt-suggestion p {
margin: 5px;
}
</style>
</head>
<body>
<input type="text" name="search" class="typeahead form-control">
<div class="selected-dom" style="display:none">
<strong>Name : </strong><p class="name"></p>
<strong>Domain : </strong><p class="domain"></p>
<strong>Logo : </strong><img class="logo" src="">
</div>
<script type="text/javascript">
var suggestionEngine = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/ajax.php?q=',
replace: function(url, query) {
return url + query;
},
transform: function(response) {
return response;
},
ajax: {
type: "POST",
data: {
q: function() {
return $('.typeahead').val()
}
}
}
}
});
var suggestionTemplate = function (data) {
return '<div class="image-ajax"><img class="image" src="' + data.logo + '"/> <div class="ajax-text"><p class="menu-text">' + data.name + '</p>' + '<p class="price menu-text"> ' + data.domain + '</p></div></div>';
}
$('.typeahead').typeahead(
{
highlight: true,
minLength:3
},
{
name: 'page',
display: 'title',
source: suggestionEngine,
templates: {
notFound: '<p align="center"> not found </p>',
suggestion: suggestionTemplate,
pending: '<p align="center">Loading</p>'
},
}).bind('typeahead:select', function(ev, suggestion) {
$(".selected-dom").css("display","block");
$(".name").text(suggestion.name);
$(".domain").text(suggestion.domain);
$(".logo").attr("src",suggestion.logo);
$(".typeahead").typeahead('val',suggestion.name);
});
</script>
</body>
</html>
ajax.php
<?php
$ch = curl_init("https://autocomplete.clearbit.com/v1/companies/suggest?query=".$_GET['q']."");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
$result = json_decode($data);
$result2 = [];
if(!empty($result)){
foreach ($result as $key => $value) {
$result2[$key]['name'] = $value->name;
$result2[$key]['domain'] = $value->domain;
$result2[$key]['logo'] = $value->logo;
$result2[$key]['id'] = ++$key;
}
}
echo json_encode($result2);
?>
Ok, now you are ready for run and check it.
You can get more information of clearbit API from here : Click Here
Maybe It can help you...
Hardik Savani
I'm a full-stack developer, entrepreneur and owner of ItSolutionstuff.com. I live in India and I love to write tutorials and tips that can help to other artisan. I am a big fan of PHP, Laravel, Angular, Vue, Node, Javascript, JQuery, Codeigniter and Bootstrap from the early stage. I believe in Hardworking and Consistency.
We are Recommending you
- PHP MongoDB CRUD Operation Example
- PHP Ajax Multiple Image Upload with Preview Example
- How to Create Zip Folder and Download in PHP?
- PHP MySQL Confirmation Before Delete Record using Ajax Example
- PHP Ajax Form Validation Example Tutorial
- PHP MySQL DataTables Server-side Processing Example
- PHP MySQL Image Gallery CRUD Example
- PHP Ajax Infinite Scroll Pagination Example
- PHP Ajax Dependent Dropdown List Example
- Multiple File Upload using Dropzone JS in PHP Example
- Convert HTML to PDF in PHP with Dompdf Example
- AngularJS Image Upload with Preview Example
- How to Integrate Google Recaptcha with PHP Form?
- PHP Crop Image Before Upload using Croppie JS Example