Ajuda Listbox

Xcape

Membro
Boas,

Tenho 2 listbox, e quero que uma funcione junto com a outra, por exemplo:

Ao seleccionar uma option de uma listbox, por exemplo Ferrari quero que na segunda listbox apareça só os modelos da Ferrari e por ai em diante, isto em PHP.

Cumprimentos,

Obrigado.
 
Com listbox queres dizer a tag select?
Tens de fazer uma chamada AJAX quando alterares a primeira option, de forma a ele ir buscar o modelo para o segundo select.
 
Com listbox queres dizer a tag select?
Tens de fazer uma chamada AJAX quando alterares a primeira option, de forma a ele ir buscar o modelo para o segundo select.
Sim, é a tag select, podes me explicar melhor? Eu tenho as duas listbox a baixo e queria que, por exemplo, quando a de cima estivesse na marca Ferrari na de baixo aparecesse apenas os modelos da Ferrari

Tabela marcas
<select name=\"Marca\" type=\"varchar\" id="marca" required>
<option value=\"Não Selecionou\">Selecione a marca</option>
<option value=\"Ferrari\">Ferrari</option>
<option value=\"Audi\">Audi</option>
<option value=\"BMW\">BMW</option>
</select><br><br>

Tabela Modelos
echo "<select name=\"Modelo\" required>";
echo "<option value=\"Não Selecionou\">Selecione o modelo</option>";
switch ($Modelo) {
case "Ferrari";
echo "<select name=\"Modelo\" required>
<option value=\"lf\">LaFerrari</option>
<option value=\"fi\">F458 italia</option>
<option value=\"california\">Ferrari California</option>";
break;
case "Audi":
echo "<option value=\"a3\">Audi A3</option>";
echo "<option value=\"s3\">Audi S3</option>";
echo "<option value=\"r8\">Audi R8</option>";
break;
case "BMW":
echo "<option value=\"1m\">BMW 1M</option>";
echo "<option value=\"m2\">BMW M2</option>";
echo "<option value=\"i8\">BMW I8</option>";
break;
}

Obrigado
 
Não deves fazer isso assim, tens o teu modelo misturado com a apresentação.

Cria um endpoint em PHP que te devolve apenas o modelo.

Esse endpoint devolve um JSON
Código:
{
  'Ferrari': [{ name: 'LaFerrari', value: 'lf'}, { name: 'F458 Italia', value: 'fi' }, ...],
  'Audi': [{ name: 'Audi A3', value: 'a3' }, ... ]
}

Quando abres a página, carregas o modelo todo através de JavaScript, e depois à medida que mudas o primeiro select vais alterando o valor do segundo select.

Tá aqui o código
https://jsfiddle.net/5ddfsqs8/

Fiz um bocado à pressa por isso não está perfeito.
 
Não deves fazer isso assim, tens o teu modelo misturado com a apresentação.

Cria um endpoint em PHP que te devolve apenas o modelo.

Esse endpoint devolve um JSON
Código:
{
  'Ferrari': [{ name: 'LaFerrari', value: 'lf'}, { name: 'F458 Italia', value: 'fi' }, ...],
  'Audi': [{ name: 'Audi A3', value: 'a3' }, ... ]
}

Quando abres a página, carregas o modelo todo através de JavaScript, e depois à medida que mudas o primeiro select vais alterando o valor do segundo select.

Tá aqui o código
https://jsfiddle.net/5ddfsqs8/

Fiz um bocado à pressa por isso não está perfeito.
és o REI, obrigado. :)

Ainda tenho de aprender JS pelos vistos :D
 
Pensando melhor nem precisas de AJAX, podes fazer echo para a variável "data" com o resultado, e apagar a função getModel.

Não vai ficar um código bonito, mas pronto...
 
Back
Topo