Auto DropDown
Esse Exemplo foi escrito para ajudar aqueles que estão procurando uma maneira de fazer um caixa do tipo DropDown (também chamada de ComboBox) ter o seu valor alterado baseado na escolha de outra caixa, eu particularmente tive muito trabalho até conseguir algo com sucesso e agora compartilho isso com todos que programem em PhP e precisem desse exemplo.
Data | Autor | Changelog | Download |
---|---|---|---|
03/09/2001 12:21pm | Carlos Master Jedi | Versão 0.1 | Versão 0.1 |
Então.. e seu precisar adcionar uma subcategoria da subcategoria, passando assim para três ou mais níveis de relacionamento. Pode sugerir o script?
19/04/2007 5:27am
(~17 anos atrás)
Tá funcionando legal por aqui, o que eu não estou conseguindo é imprimir o resultado na mesma página, a partir da segunda seleção - subgrupo. Exemplo: GrupoA seleciona GrupoB. Em qualquer seleção do GrupoB o resultado das informações relacionadas na mesma página.
06/01/2005 9:01am
(~20 anos atrás)
<!-- START COMBO tipo produto / subtipo produto -->
<SCRIPT LANGUAGE="JavaScript">
team = new Array(
<?php
# Seleciona todos os grupos cadastrados
$sqlpro = "select * from produto_tipo";
$respro = mysql_query($sqlpro);
$num = mysql_num_rows($respro);
while ($row = mysql_fetch_array($respro)) {
$conta = $conta+1;
$cod_categoria = $row["id"];
$desc_categoria = $row["tipo"];
echo "new Array(\n";
$sub_sql = "select * from produto_subtipo where idtipo = '$cod_categoria'";
$sub_result = mysql_query($sub_sql);
$num_sub = mysql_num_rows($sub_result);
if ($num_sub>=1){
# Se ele achar algum subgrupo para o grupo ele marca a palavra Todas
echo "new Array(\"Todas\", 0),\n";
while ($rowx = mysql_fetch_array($sub_result)) {
$codigo_sub = $rowx["id"];
$sub_nome = $rowx["nome_subtipo"];
$conta_sub = $conta_sub+1;
if ($conta_sub==$num_sub){
echo "new Array(\"$sub_nome\", $codigo_sub)\n";
$conta_sub = "";
}else{
echo "new Array(\"$sub_nome\", $codigo_sub),\n";
}
}
} else {
#Se ele nao achar subgrupo para o grupo selecionado...
echo "new Array(\"Qualquer\", 0)\n";
}
if ($num>$conta) {
echo "),\n";
}
}
echo ")\n";
echo ");\n";
?>
//Inicio da função JS
function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) {
var i, j;
var prompt;
// empty existing items
for (i = selectCtrl.options.length; i >= 0; i--) {
selectCtrl.options[i] = null;
}
prompt = (itemArray != null) ? goodPrompt : badPrompt;
if (prompt == null) {
j = 0;
}
else {
selectCtrl.options[0] = new Option(prompt);
j = 1;
}
if (itemArray != null) {
// add new items
for (i = 0; i < itemArray.length; i++) {
selectCtrl.options[j] = new Option(itemArray[i][0]);
if (itemArray[i][1] != null) {
selectCtrl.options[j].value = itemArray[i][1];
}
j++;
}
// select first item (prompt) for sub list
selectCtrl.options[0].selected = true;
}
}
// End -->
</script>
<script type="text/javascript">
$(function() {
$('#dt_nota_fiscal').datepicker({dateFormat: "dd/mm/yy", clearText: ''});
$('#validade').datepicker({dateFormat: "dd/mm/yy", clearText: ''});
});
</script>
<p><font face="Verdana, Arial, Helvetica, sans-serif" size="1">
<select name="grupo" onChange="fillSelectFromArray(this.form.subgrupo, ((this.selectedIndex == -1) ? null : team[this.selectedIndex-1]));">
<option>Escolha uma Categoria</option>
<option value="<?echo $cod_categoria;?>"><? echo $desc_categoria; ?></option>
</select>
<select name="subgrupo">
<option>---------------</option>
</select>
</font> </p>
<!-- END COMBO -->
Infelizmente o script esta cheio de erros e não funciona, acima estou enviando o mesmo script que encontrei num site americano.. quem copiou de quem agora eu não sei, mas ambos não funcionam como desejado. Nem percam o tempo, fica a dica.