Ir para conteúdo

POWERED BY:

Arquivado

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

Tiago j.a

[Resolvido] Incrementação em variaveis

Recommended Posts

Bom dia pessoal!

Tenho um loop na minha página em php, onde o usuário escolhe quantos campos no formulário ele quer. Como poderia fazer para a funçãozinha que tenho em ajax aqui, relaciona-se os select´s selecionados, e imprimisse o valor do mesmo em seus respectivos campos de texto?

Estou fazendo uns testes aqui, mas da forma que está ele mostra apenas no 1º campo.

Como que funciona a sintaxe do javascript para fazer isso?

Teria que fazer um loop na função?

Onde que incrementaria a variável conta para que ele fizesse isso em todos os campos?

Agradeço desde já!!!

 

<script type="text/javascript">
var conta = 0;
        $(document).ready(function(){
                $("select[name='instrumento["+conta+"]']").change(function(){
                        $("input[name='custo_unitario["+conta+"]']").val('Carregando...');
                        $.getJSON(
                                'function_ajax.php',
                                {id: $(this).val()},
                                function(data){
                                        $.each(data, function(i, obj){
                                                $("input[name='custo_unitario["+conta+"]']").val(obj.custo_unitario);
                                               
														
                                        })
                                });
				});
        });
</script>
<?php
  $Quantidade = (isset($_POST['quantidade']) && is_int(intval($_POST['quantidade']))) ? (int)$_POST['quantidade'] : 5;
		  for($i = 0; $i < $Quantidade; ++$i){
	?>	   
  <tr>
    <td width="15%" valign="top" class="espaco_home" align="center"><select id="instrumento" name="instrumento[<?php echo $i; ?>]" >
    	<option value="">--</option>
	<?php
        echo montaSelect();

	?>
    </select>
    </td>

    <td width="5%" valign="top" class="texto_formulario" align="center"><input name="quant" type="text" size="12" /></td>
    <td width="10%" valign="top" class="texto_formulario" align="center"><input name="custo_unitario[<?php echo $i; ?>]" type="text" size="12" /></td>
    <td width="10%" valign="top" class="texto_formulario" align="center"><input name="sub_total" type="text" size="12" /></td>
    <td width="10%" valign="top" class="texto_formulario" align="center"><a href="javascript:janelaSecundaria('ce.php?categoria=<?php echo $categoria; ?>&acao=<?php echo "Excluir";?>&id=<?php echo $id; ?>')"><img border="0" src="img/6098_16x16.png" width="16" height="16" /></a></td>
  </tr>
 <?php }  ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não precisa colocar nada dentro dos []

 

$("select[name='instrumento[]']").change(function(){
para que cada select, preencha os campos correspondentes voce precisa varrer a linha da tabela, use os metodos .find(), .parent(), apartir da palavra chave this

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, achei alguns tutoriais que falam sobre esses métodos, só não consegui entender mto bem aonde aplicarei eles.

$("input[name='custo_unitario[]']").val($(this).find(obj.custo_unitario[]));
ficaria tipo isso?

E esses metodos colocaria nos dois campos né, no caso no select, e no imput tbm?

 

eu não encontrei a sintaxe correta para realizar isso, procurei sobre estes metodos, mas nada relatando sobre isso.

As linhas onde devo fazer isso são essas, certo?

Onde seria dito que ela apenas iria colocar os valores em seus respectivos campos, correto?

$("select[name='instrumento[]']").change(function(){
$("input[name='custo_unitario[]']").val('Carregando...');

$("input[name='custo_unitario[]']").val(obj.custo_unitario);
Mas a forma de colocar isso, a sintaxe, infelizmente não encontrei.

:(

Poderia mais uma vez me dar uma luuuz?

Abraço!

 

COloquei desta forma, a idéia principal que era imprimir apenas em seus respectivos campos, isso já está acontecendo, só que ele imprime apenas carregando, não mostra os dados.

 

<script type="text/javascript">
        $(document).ready(function(){
                $("select[name='instrumento']").change(function(){
						$("input[name='custo_unitario"+$(this).attr('class')+"']").val('Carregando...');
						$.getJSON(
                                {id: $(this).val()},
                                function(data){	
                                        $.each(data, function(i, obj){
                                                $("input[name='custo_unitario"+$(this).attr('class')+"']").val(obj.custo_unitario);
                                        })
                                });
				});
        });
</script>
Se puder me dar uma mão, agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você também está usando um script meu ne?!

 

cadê o server-side? se não sai do 'Carregando', então o erro está no server-side.

debug, acessando diretamente:

function.php?id=1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até ai está okay.. precisa ver se está chegando lá certo..

$(document).ready(function(){
                $("select[name='instrumento']").change(function(){
                   alert( $(this).val() );
                                                $("input[name='custo_unitario"+$(this).attr('class')+"']").val('Carregando...');
                                                $.getJSON(
                                {id: $(this).val()},
diga oque aparecer no alert.

 

e pq você removeu a linha:

$.getJSON(
                                'function.php',/* cadê essa linha ?? */
                                {idCliente: $(this).val()},
deixando apenas:

 

$.getJSON(
                                {idCliente: $(this).val()},
??

se você não 'referenciar' o script server-side, não tem como retornar nada mesmo..

 

http://www.wbruno.com.br/blog/?p=12

Compartilhar este post


Link para o post
Compartilhar em outros sites

não tenho como adivinhar mais..

reposte os teus arquivos atualizados, com os respectivos nomes.

 

function(data){  alert(data);
retorna alguma coisa ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me retornou o seguinte:

[object Object]

 

script Jquery

<script type="text/javascript">
        $(document).ready(function(){
                $("select[name='instrumento']").change(function(){
						$("input[name='custo_unitario"+$(this).attr('class')+"']").val('Carregando...');
						$.getJSON(
					    'function_ajax.php',
                                {id: $(this).val()},
                                function(data){	
								alert(data);
                                        $.each(data, function(i, obj){
                                                $("input[name='custo_unitario"+$(this).attr('class')+"']").val(obj.custo_unitario);
                                        })
                                });
				});
        });
</script>

function_ajax.php

 

<?php

include "Config/config_sistema.php"; 
        $con = mysql_connect('localhost', 'root', '');
        mysql_select_db('os', $con);

        /**
         * função que retorna o select
         */
        function montaSelect()
        {
                $sql = "SELECT `id`, `instrumento` FROM `lista_instrumentos` ";
                $query = mysql_query( $sql );

                if( mysql_num_rows( $query ) > 0 )
                {
                        while( $dados = mysql_fetch_assoc( $query ) )
                        {
                                $opt .= '<option value="'.$dados['id'].'">'.$dados['instrumento'].'</option>';
                        }
                }
                else
                        $opt = '<option value="0">Nenhum cliente cadastrado</option>';

                return $opt;
        }
		
		
		function montaSelect2()
        {
               $sql = "SELECT `id_cliente`, `fornecedor` FROM `fornecedores` ";
                $query = mysql_query( $sql );

                if( mysql_num_rows( $query ) > 0 )
                {
                        while( $dados = mysql_fetch_assoc( $query ) )
                        {
                                $opt .= '<option value="'.$dados['id_cliente'].'">'.$dados['fornecedor'].'</option>';
                        }
                }
                else
                        $opt = '<option value="0">Nenhum cliente cadastrado</option>';

                return $opt;
        }
		

        /**
         * função que devolve em formato JSON os dados do cliente
         */
        function retorna( $id=null )
        {
                $id = (int)$id;

                $sql = "SELECT * FROM `lista_instrumentos` ";
                if( $id != null )
                        $sql .= "WHERE `id` = {$id} ";
                $query = mysql_query( $sql );
                //$json = 'var dados = ';
                $json .= ' [';  
                if( mysql_num_rows( $query ) > 0 )
                {
                        while( $dados = mysql_fetch_assoc( $query ) )
                        {
                                $json .= "{custo_unitario: '{$dados['custo_unitario']}'}";;
                        }
                }
                else
                        $json = 'Instrumento: não encontrado';

                $json .= ']';
                //$jston .= ';';

                return $json;
        }
		
		
		function retorna2( $id=null )
        {
                $id = (int)$id;

                $sql = "SELECT * FROM `fornecedores` ";
                if( $id != null )
                        $sql .= "WHERE `id_cliente` = {$id} ";
                $query = mysql_query( $sql );
                //$json = 'var dados = ';
                $json2 .= ' [';  
                if( mysql_num_rows( $query ) > 0 )
                {
                        while( $dados = mysql_fetch_assoc( $query ) )
                        {
                                $json2 .= "{forne: '{$dados['fornecedor']}', endereco: '{$dados['endereco']}', complemento: '{$dados['complemento']}', internet: '{$dados['internet']}', cgc: '{$dados['cgc']}', cidade: '{$dados['cidade']}', estado: '{$dados['estado']}', ie: '{$dados['ie']}', contato: '{$dados['contato']}', cep: '{$dados['cep']}', telefone: '{$dados['fone']}'}";;
                        }
                }
                else
                        $json2 = 'cliente: não encontrado';

                $json2 .= ']';
                //$jston .= ';';

                return $json2;
        }
		
		
		
/* só se for enviado o parâmetro, que devolve o combo */
if( isset($_GET['id']) )
{
        echo retorna( $_GET['id'] );
}

if( isset($_GET['id_cliente']) )
{
        echo retorna2( $_GET['id_cliente'] );
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Execute assim, e diga exatamente oque aparecer nos alerts

$(document).ready(function(){
	$("select[name='instrumento']").change(function(){
		alert( $(this).val() );//Primeiro alert
		var ip_custo = $("input[name='custo_unitario"+$(this).attr('class')+"']");
		$( ip_custo ).val('Carregando...');
		
		$.getJSON(
			'function_ajax.php',
			{id: $(this).val()},
			function(data){
				alert( data );//Segundo alert
				$.each(data, function(i, obj){
				alert( obj.custo_unitario );//Terceiro alert
				$( ip_custo ).val(obj.custo_unitario);
			});
		});
	});
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Willian.

Graças a Deus funcionou!

hehe

imprimiu corretamente os valores.

Nâo tenho como te agradecer, desculpa por encomodar tanto!!

heheheehe

Grande abraço amigo!!!

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.