Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiagocaus

Carregar dados e montar form com JSON

Recommended Posts

Boa tarde.

Preciso montar um formulário de consulta como este http://carros.uol.com.br/tabela-fipe/

 

Pesquisando na internet achei esse material http://fipeapi.appspot.com/

 

 

Como não tenho noção de JSON, alguém poderia me ajudar a montar esse formulário?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://fipeapi.appspot.com/api/1/carros/marcas.json");
curl_exec($ch);
$result = curl_exec($ch);
echo $result;
?>

 

 

 

[
{"name": "AUDI", "fipe_name": "Audi", "order": 2, "key": "audi-6", "id": 6},
{"name": "BMW", "fipe_name": "BMW", "order": 2, "key": "bmw-7", "id": 7},
.
.
.
]

 

 

Como pegar esses valores para poder montar o select?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça assim:

 

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://fipeapi.appspot.com/api/1/carros/marcas.json');
curl_exec($ch);
$result = curl_exec($ch);
$json = json_decode($result, true);
 
var_dump($json);


Pra ser sincero eu acho complicado fazer uma consulta em uma URL externa cada vez que for exibir o formulário e os sub selects. Pode ficar lento, o servidor da API estar indisponível e até mesmo eles bloquearem o acesso do seu servidor a API por consumir muitos recursos.

 

O mais correto neste caso seria armazenar estes dados como marcas e modelos dos veículos no banco de dados ou em arquivos de cache, e só usar a API em runtime pra consultar o valor de cada veículo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verdade, pois o que muda são os valores, mas a cada ano novos modelos são criados...

Não sei o que fazer...rsrs

 

 

Como eu pego esse valor nome e id e coloco dentro de uma variável para usar no select?

 

 

Array(    [0] => Array        (            [name] => AUDI            [fipe_name] => Audi            [order] => 2            [key] => audi-6            [id] => 6        )    [1] => Array        (            [name] => BMW            [fipe_name] => BMW            [order] => 2            [key] => bmw-7            [id] => 7        )}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com um foreach.

 

Exemplo:

<select name="marca">
<?php foreach($marcas as $marca): ?>
    <option value="<?php echo $marca['id']; ?>"><?php echo $marca['name']; ?></option>
<?php endforeach; ?>
</select>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta dando certo... vamos ver se chego até o final...rsrs...

 

Como poderia fazer para carregar o próximo select a partir do select marca?

 

 

?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para carregar os próximos selects dinamicamente de acordo com o que foi selecionado no select anterior, você pode usar a biblioteca jQuery.

 

Use o change para detectar se o select foi alterado, ou seja, se o usuário selecionou alguma opção, e em seguida você pode carregar os dados do próximo select usando o getJSON ou outro método qualquer para carregar dados via Ajax.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto você cobra para fazer isso? Não consegui...rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.