Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal é o seguinte, no código abaixo, que é um cadastro bem simples (a princípio), no final do formulário existem duas combo, a primeira para escolher a Categoria e a segunda irá me retornar as Subcategorias cadastradas na categoria selecionada, até ai tá fazendo corretamente, o meu problema é no dado que é retornado quando eu seleciono a segunda combo, ao inves da combo me retornar a descrição da subcategoria, ela está me passando o ID que é um número, e eu não estou sabendo como fazer para que ele me retorne o valor correto que é o nome da Subcategoria.
Trecho do FORM das duas COMBO
<td align="right"><font class="info1">*</font><font class="info"> Categoria:</font></td> <td> <select name="grupo" onChange="fillSelectFromArray(this.form.subgrupo, ((this.selectedIndex == -1) ? null : team[this.selectedIndex-1]));" style='font-size: 11px; width: 150; font-family: $fonte; height: 19; border: 1px solid #C0C0C0'> <option>Escolha uma Categoria</option> <? $conecta=mysql_connect($dbhost, $dbuser, $dbpasswd); $seleciona_db=mysql_select_db($dbname, $conecta); #Seleciona todos os grupos para setar os valores no combo $sql="select * from categorias order by categoria ASC"; $sql_result=mysql_query($sql, $conecta); while ($row=mysql_fetch_array($sql_result)){ $cod_categoria=$row["id"]; $desc_categoria=$row["categoria"]; ?> <option value="<? echo $desc_categoria; ?>"> <? echo $desc_categoria;?> </option> <? } #Popula o segundo combo de acordo com a escolha no primeiro ?> </select> </td> <tr> <td align="right"><font class="info1">*</font><font class="info"> Subcategoria:</font></td> <td> <select name="subgrupo" style='font-size: 11px; width: 150; font-family: $fonte; height: 19; border: 1px solid #C0C0C0'> <option>---------------</option> </select> </td> </tr>
Aqui é feito a comparação da primeira combo para montar a segunda
>
<?
$conecta=mysql_connect($dbhost, $dbuser, $dbpasswd);
$seleciona_db=mysql_select_db($dbname, $conecta);
?>
<script LANGUAGE="JavaScript">
team = new Array(
<?
$sql="select * from categorias order by categoria";
$sql_result=mysql_query($sql, $conecta);
$num=mysql_numrows($sql_result);
while ($row=mysql_fetch_array($sql_result)){
$conta=$conta+1;
$cod_categoria=$row["id"];
echo "new Array(\n";
$sub_sql="select * from subcateg where cod='$cod_categoria'";
$sub_result=mysql_query($sub_sql, $conecta);
$num_sub=mysql_numrows($sub_result);
if ($num_sub>=1){
echo "new Array(\"Todas\", 0),\n";
while ($rowx=mysql_fetch_array($sub_result)){
$codigo_sub=$rowx["cod"];
$sub_nome=$rowx["sub"];
$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 = 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**[0]);*
*if (itemArray**[1] != null) {*
*selectCtrl.options[j].value = itemArray**[1];*
}
j++;
}
// select first item (prompt) for sub list
selectCtrl.options[0].selected = true;
}
}
// End -->
</script>
*O pulo do gato está no trecho destacado em vermelho, e eu já não tô maluco aqui e não estou conseguindo, pois da maneira que ele está, ele está me retornando o valor do ID:** *
Exemplo:
$subgrupo = 9
só que eu preciso é que a variável $subgrupo receba a descrição:
$subgrupo = PROGRAMAÇÃO
Desde já agradeço imensamente quem puder solucionar esse enigma.
Abraço a todos (y)
Bem, valeu pelas 3 leituras que esse POST teve, ou melhor, 2 leituras pois uma já é registrada quando é postada, a pouca leitura deste POST, talvês seja pela complexidade do problema, analisado apenas pelo Titulo do mesmo. Bem, agradeço as duas pessoas que pelo menos leram esse POST, mas eu já resolvi o problema, mesmo sem ter a experiência e o conhecimento em PHP e JS que a maioria dos grandes programadores deste respeitável forum possuem.Abraço a TODOS (y)