Ir para conteúdo
Fórum Script Brasil
  • 0

Ajax usando xml não retorna a lista suspensa.


Rafael Taboada

Pergunta

Bom Dia !

 

Estou com uma dificuldade com um código que estou montando em php para buscar uma lista suspensa a partir de outra lista suspensa. Usando Ajax e xml.

Exemplo: Tenho no banco de dados 2 grupos de despesas, 2 despesas e 1 funcionário. Quero que ao selecionar 1 grupo de despesas na lista suspensa eu veja apenas as despesas vinculadas aquele grupo em outra lista suspensa. Assim como quero ver os funcionários cadastrados em uma terceira lista suspensa caso o grupo de despesas esteja vinculado a funcionários também.

 

Bom o que está ocorrendo é que ao selecionar um grupo de despesas a lista suspensa das despesas fica sempre em branco, porém a lista suspensas de funcionários está funcionando corretamente, aparecendo os funcionários sempre que seleciono o grupo de despesas vinculado a funcionários.

Coloquei um comentário no código que quando escrevo o código do grupo direto na programação tudo funciona. Como se me indicasse que o problema está na variável que busca o código do grupo, mas não consigo acertar.

 

 

Abaixo o Código do Ajax:

<html>

<script type="text/javascript">
var linhas = "<?php echo $conv_desp_rec?>";
var linhasv = "<?php echo $linhasv?>";
var id_empresa = "<?php echo $id_empresa?>";

 

for(i=0 ; i < linhas ; i++){

     function buscar_desp_func(i){

            var nm_grdespesa = $('#grdesp'+i).val();
            var nm_grdespesa_vinculo = <?php
            if($linhasv > 1){
               for($v=1 ; $v < $linhasv ; $v++){
               echo"['$grdespesa_vinculo[0]','$grdespesa_vinculo[$v]'];";
               }
            }elseif($linhasv == 1){
             for($v=0 ; $v < $linhasv ; $v++){
               echo"['$grdespesa_vinculo[0]'];";
               }
            }elseif($linhasv == 0){
               echo"['000000'];";
            }
            ?>
            
             if(nm_grdespesa){
              var url_1 = 'xml/despesas_ajax.php?nm_grdespesa='+nm_grdespesa+'&linha='+i+'&id_empresa='+id_empresa;
              //não está funcionando essa busca, assim funcionou->'xml/despesas_ajax.php?nm_grdespesa=29&linha='+i+'&id_empresa='+id_empresa;
              
              $.get(url_1, function(dataReturn) {
                   $('#load_desp'+i).html(dataReturn);
              });
            }
             for(v=0 ; v < linhasv ; v++){
            if(nm_grdespesa == nm_grdespesa_vinculo[v]){
              var url = 'xml/funcionarios_ajax.php?linha='+i+'&id_empresa='+id_empresa;
              $.get(url, function(dataReturn) {
                   $('#load_func'+i).html(dataReturn);
              });
             }else{
             var url = 'xml/funcionarios_ajax_vazio.php?linha='+i;
              $.get(url, function(dataReturn) {
                   $('#load_func'+i).html(dataReturn);
              });
             }
            }
           }
     }
</script>
</html>

 

E abaixo o código das listas suspensas:

 

<html>

<?php
     include('conexao.php');
     $sql9 = "select * from tb_grdespesa where id_empresa='$id_empresa'";
     //$sql10 = "select nm_despesa from tb_despesa where id_empresa='$id_empresa'";
     $sql11 = "select ds_nome_func from tb_func where id_empresa='$id_empresa'";

     $resultado_nm_grdesp = mysql_query($sql9,$conexao)
                      or die(mysql_error($conexao));
     //$resultado_nm_desp = mysql_query($sql10,$conexao)
     //                 or die(mysql_error($conexao));
     $resultado_nm_func = mysql_query($sql11,$conexao)
                      or die(mysql_error($conexao));

     $linhas9 = mysql_num_rows($resultado_nm_grdesp);
     //$linhas10 = mysql_num_rows($resultado_nm_desp);
     $linhas11 = mysql_num_rows($resultado_nm_func);

     for( $x9=0 ; $x9 < $conv_desp_rec ; $x9++ )
     {

     echo
     "<div class='campo_grdesp'>
     <select name='grdesp$x9' id='grdesp$x9' onBlur='buscar_desp_func($x9)'
                                             onChange='buscar_desp_func($x9)'
                                             onKeyup='buscar_desp_func($x9)' >";

     for( $x10=0 ; $x10 < $linhas9 ; $x10++ )
     {
     $ds_nome_grdesp = mysql_result($resultado_nm_grdesp,$x10,'nm_grdespesa');
     $cd_grdesp = mysql_result($resultado_nm_grdesp,$x10,'cd_grdespesa');

     echo "<option value='$cd_grdesp'>$ds_nome_grdesp</option>";

     }
     echo
     "</select>
     </div>";

     echo
     "<div id='load_desp$x9' class='campo_desp'>
     <select name='desp$x9' id='desp$x9'>
     <option><-Selecione o Grupo da Despesa</option>
     </select>
     </div>";

     echo
     "<div id='load_func$x9' class='campo_func'>
     <select name='func$x9' id='func$x9'>
     <option><-Selecione o Grupo da Despesa</option>
     </select>
     </div>";
     echo"
     <div class='campo_valor_desp'>
     <input type='text' class='input' name='valor_desp$x9' value ='0,00' onkeypress='mascara(this,semponto)'
                                                                         onblur='somadesp();faltasobraautomatica()' id='valor_desp$x9' />
     </div>

     <div class='campo_obs_desp'>
     <label for='obs_desp$x9'>Observações:</label>
     <input type='text' class='input' name='obs_desp$x9' onkeypress='mascara(this,semponto)' value ='observação' id='obs_desp$x9' />
     </div>";
}
?>

</html>

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Seu código está muito confuso parte desse exemplo que vai ficar mais fácil.

<?php $grupo_despesas = mysql_fetch_assoc(mysql_query("select nm_grdespesa, cd_grdespesa from tb_grdespesa where id_empresa='$id_empresa'")); ?>
<!DOCTYPE html>
<html>
<head>
	<title>Cadastro de Despesa</title>
	<script src="https://code.jquery.com/jquery-3.2.1.min.js" ></script>
	<script type="text/javascript">
		$('#grupo_despesa').change(function () {
			var id_empresa = "<?php echo $id_empresa?>";
			$.get('xml/despesas_ajax.php?cd_grdespesa='+$(this).val()+'&id_empresa='+id_empresa, function (data) {
				$('#despesa').html(dataReturn);
			});
			$.get('xml/funcionarios_ajax.php?cd_grdespesa='+$(this).val()+'&id_empresa='+id_empresa, function (data) {
				$('#funcionario').html(dataReturn);
			});
		});
	</script>
</head>
<body>
<form>
	<div class='campo_grdesp'>
    	<select name='grupo_despesa' id='grupo_despesa'>
    		<?php foreach ($grupo_despesas as $$grupo_despesa) { ?>
    		<option value="<?php echo $grupo_despesa['cd_grdespesa'] ?>"><?php echo $grupo_despesa['nm_grdespesa'] ?></option>
    		<?php } ?>
    	</select>
    </div>
	<div class='campo_desp'>
		<select name='despesa' id='despesa'>
			<option><-Selecione o Grupo da Despesa</option>
		</select>
	</div>
	<div class='campo_func'>
		<select name='funcionario' id='funcionario'>
			<option><-Selecione o Grupo da Despesa</option>
		</select>
	</div>
	<div class='campo_valor_desp'>
		<input type='text' class='input' name='valor' value ='0,00' onkeypress='mascara(this,semponto)' />
	</div>
	<div class='campo_obs_desp'>
		<label for='observacao'>Observações:</label>
		<input type='text' class='input' name='observacao' onkeypress='mascara(this,semponto)' value ='Observação' />
	</div>
</form>
</body>
</html>

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...