Eae galera, nosso amigo @joelson0007 postou um tutorial de como usar datalist com PHP, eu vou ensinar uma forma simples de popular essa datalist baseado numa pesquisa no Google.
Este exemplo que vou deixar aqui é muito simples e consideralvelmente lento, já que tudo é feito no back-end, se eu fosse fazer algo semelhante eu usaria AJAX fazendo um request para a URL da pesquisa
https://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&q=jscript
Porém como nosso intuito aqui é aprender algo novo, vamos de PHP mesmo.
O código está comentado com o que cada coisa faz:
Existem várias formas de otimizar isso aqui, como quando um usuário fazer uma pesquisa salvar os resultados num banco de dados ou um arquivo de texto numa pasta de cache por exemplo isso deixaria mais rápido..
E também tem a possibilidade que falei de usar AJAX...
Espero que seja útil
Este exemplo que vou deixar aqui é muito simples e consideralvelmente lento, já que tudo é feito no back-end, se eu fosse fazer algo semelhante eu usaria AJAX fazendo um request para a URL da pesquisa
https://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&q=jscript
Porém como nosso intuito aqui é aprender algo novo, vamos de PHP mesmo.
O código está comentado com o que cada coisa faz:
- Código:
<?php
# Verificamos se o GET q de query está setado, se estiver continua, se não, não faz nada...
if( !empty($_GET['q']) ):
# salva o GET da URL
$query = $_GET['q'];
# pega os dados da pesquisa
$data = file_get_contents("https://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=large&q=$query");
# converte para json
$json = json_decode($data, true);
# verifica o tamanho do array para fazer a iteração
$len = count($json['responseData']['results']);
?>
<!DOCTYPE html>
<html>
<body>
<head>
<meta charset="utf-8">
</head>
<form>
<input list="browsers" name="browser">
<datalist id="browsers">
<?php
# e aqui só fazemos um loop no array para popular a datalist
for($i = 0; $i < $len; $i++) {
echo '<option value="' . $json['responseData']['results'][$i]['titleNoFormatting'] . '">';
};
?>
</datalist>
<input type="submit">
</form>
</body>
</html>
<?php endif; ?>
Existem várias formas de otimizar isso aqui, como quando um usuário fazer uma pesquisa salvar os resultados num banco de dados ou um arquivo de texto numa pasta de cache por exemplo isso deixaria mais rápido..
E também tem a possibilidade que falei de usar AJAX...
Espero que seja útil
Última edição por waghcwb em Seg 16 Mar 2015, 4:18 pm, editado 1 vez(es)