Jump to content
joelzsbit

Preencher vários inputs de acordo com id escolhido no select

Recommended Posts

Pessoal tenho o seguinte código:

 

<body>
        <label for="cadastro">Cadastro</label>
        <select id="cadastro" name="cadastro" id="">
            <?php
            $busca_segura = $PDO_con->prepare("SELECT * FROM tb_cad_pf WHERE excluido != 'sim' ");
            $busca_segura->execute();
            if ($busca_segura == 1) {
                while ($dados= $busca_segura->fetch(PDO::FETCH_ASSOC)) {
                    $opt .= '<option value="' . $dados['id_cad_pf'] . '">' . $dados['nome'] . '</option>';
                }
            } else {
                $opt = '<option value="0">Nenhum cliente cadastrado</option>';
            }
            echo $opt;
            ?>
        </select>

        <label for="nome">Nome</label>
        <input type="text" id="nome" placeholder="nome" value=""/>

        <label for="sobrenome">Sobrenome</label>
        <input type="text" id="sobrenome" placeholder="nome" value=""/>

        <label for="login">Login</label>
        <input type="text" id="login" placeholder="nome" value=""/>

        <script>

            var nomes = ["", "Tiago", "Rafael", "Marcos", "Tatiane", "Luana"];
            var sobrenomes = ["", "Pereira", "Silva", "Grilhones", "Nascimento", "Piovani"];
            var logins = ["", "tiago_pereira", "rafael_01", "marcos.g2", "taty2017", "luana10"];

            document.getElementById("cadastro").addEventListener('change', function () {
                document.getElementById("nome").value = nomes[this.selectedIndex];
                document.getElementById("sobrenome").value = sobrenomes[this.selectedIndex];
                document.getElementById("login").value = logins[this.selectedIndex];
            });

        </script>
    </body>

Ao selecionar um id no select me retorna o respectivo nome, sobrenome e login nos referidos inputs. Por exemplo se eu selecionar o 3 id ele vai preencher os inputs nome: Rafael, Sobrenome: Silva e login: rafael_01. Até ai tudo bem, esta funcionando.

A duvida é como que faço para que no "var nomes",  "var sobrenomes" e "var logins" vir direto do banco de acordo com o id escolhido?

 

Share this post


Link to post
Share on other sites

Tente isso: (Não sou muito bom em php).

 

Crie estas variáveis php:

$nome = array();
$sobrenome = array();
$login = array();

 

Acrescente as três linhas abaixo dentro do seu while (lembrando de ajustá-las com os respectivos nomes dos campos da sua tabela).

while ($dados= $busca_segura->fetch(PDO::FETCH_ASSOC)) {
  $opt .= '<option value="' . $dados['id_cad_pf'] . '">' . $dados['nome'] . '</option>';
  $nome = $dados['nome'];
  $sobrenome = $dados['sobrenome'];
  $sobrenome = $dados['login'];	
}

Agora esse será seu código javascript:

<script>
  
  var nomes = new Array();
  var sobrenomes = new Array();
  var logins = new Array();
  
  <?php 
  foreach($nome as $key => $value) { 
    printf("nomes[%d] = '%s';", $key, $value); // Imprime nomes[0] = '(primeiro nome)'; 
  } 

  foreach($sobrenome as $key => $value) { 
    printf("sobrenomes[%d] = '%s';", $key, $value); // Imprime sobrenomes[0] = '(primeiro sobrenome)'; 
  } 

  foreach($login as $key => $value) { 
    printf("logins[%d] = '%s';", $key, $value); // Imprime logins[0] = '(primeiro login)'; 
  } 

  ?> 
  document.getElementById("cadastro").addEventListener('change', function(){
    document.getElementById("nome").value = nomes[this.selectedIndex];
    document.getElementById("sobrenome").value = sobrenomes[this.selectedIndex];
    document.getElementById("login").value = logins[this.selectedIndex];
  });

</script>
    

 

Share this post


Link to post
Share on other sites

Fiz assim:

<body>
        <label for="cadastro">Cadastro</label>
        <select id="cadastro" name="cadastro" id="">
            <?php

            $busca_segura = $PDO_con->prepare("SELECT * FROM tb_cad_pf WHERE excluido != 'sim' ");
            $busca_segura->execute();
            if ($busca_segura == 1) {
                while ($dados= $busca_segura->fetch(PDO::FETCH_ASSOC)) {
                    $opt .= '<option value="' . $dados['id_cad_pf'] . '">' . $dados['nome'] . '</option>';
                    $nome .= $dados['nome']; // criei o array incluido  .=
                    $sobrenome .= $dados['sobrenome']; // criei o array incluido .=
                    $login .= $dados['login'];	// criei o array incluido .=
                }
               
            } else {
                $opt = '<option value="0">Nenhum cliente cadastrado</option>';
            }
            echo $opt;
      
            ?>
        </select>

        <label for="nome">Nome</label>
        <input type="text" id="nome" placeholder="nome" value=""/>

        <label for="sobrenome">Sobrenome</label>
        <input type="text" id="sobrenome" placeholder="sobrenome" value=""/>

        <label for="login">Login</label>
        <input type="text" id="login" placeholder="login" value=""/>

<script>
       
var nomes  = <?php echo $nome ?>; 
var sobrenomes = <?php echo $sobrenome ?>;
var logins = <?php echo $login ?>;
  
  <?php 
  foreach($nome as $key => $value) { 
    printf("nomes[%d] = '%s';", $key, $value); // Imprime nomes[0] = '(primeiro nome)'; 
  } 

  foreach($sobrenome as $key => $value) { 
    printf("sobrenomes[%d] = '%s';", $key, $value); // Imprime sobrenomes[0] = '(primeiro sobrenome)'; 
  } 

  foreach($login as $key => $value) { 
    printf("logins[%d] = '%s';", $key, $value); // Imprime logins[0] = '(primeiro login)'; 
  } 

  ?> 

            document.getElementById("cadastro").addEventListener('change', function () {
                document.getElementById("nome").value = nomes[this.selectedIndex];
                document.getElementById("sobrenome").value = sobrenomes[this.selectedIndex];
                document.getElementById("login").value = logins[this.selectedIndex];
            });

        </script>
        
    </body>

Não mostra erro, mesmo assim não preenche os campos, note que criei os arrays colocando ".= " nas variáveis ($nome, $sobrenome e $login) do php, sera que é ai o problema?

Share this post


Link to post
Share on other sites
4 horas atrás, Eziquiel disse:

Creio que sim. Utilize sem o "." (ponto). Ajuste apenas os nomes dos campos dentro do while.

Retirei os pontos, no while ja estão com o nome dos campos da tabela.

 

4 horas atrás, wessleysanttos disse:

Amigo, é possível também fazer por ajax 

Weslsley, com Ajax, não tentei ainda... mas pelo que sei teria que criar um arquivo externo. Mas ai para cada input terei que criar um arquivo externo? se for assim ai fica mais trabalhoso.

Share this post


Link to post
Share on other sites

Precisa não. 

Olha, da uma olhada nesse tutorial:

http://clubedosgeeks.com.br/programacao/listando-registro-de-banco-de-dados-mysql-com-ajax-json-e-php

 

Ao invés de fazer a chamada ajax no $(document).ready(), tu faria no .onchange do select.

E ao invés de printar os dados em uma table, tu coloca nos input. 

Tenta seguir ele e qualquer duvida posta ai.

Share this post


Link to post
Share on other sites

@wessleysanttos o lugar do listener do evento ficar é indiferente...

 

Veja um exemplo de jQuery:

<select name="funcionarios" id="funcionarios">
	<option value="">-- Selecione --</option>
	<option value="1">Funcionario 1</option>
	<option value="2">Funcionario 2</option>
</select>

<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>

<script type="text/javascript">
$(document).ready(function() {
	//onchange....
	$( "#funcionarios" ).bind( "change", function() {
		var funcionarioSelecionado = $(this).val();
		alert(funcionarioSelecionado);
	});	
});
</script>

Live Demo:

https://fiddle.jshell.net/5qm9700r/

 

 

É a 'mesma' coisa que:

<select name="funcionarios" id="funcionarios" onchange="alert(this.value)">
	<option value="">-- Selecione --</option>
	<option value="1">Funcionario 1</option>
	<option value="2">Funcionario 2</option>
</select>

Live Demo:

https://fiddle.jshell.net/qwsvhtcq/

 

Que também é possível fazer sem jQuery:

<select name="funcionarios" id="funcionarios" onchange="alert(this.value)">
	<option value="">-- Selecione --</option>
	<option value="1">Funcionario 1</option>
	<option value="2">Funcionario 2</option>
</select>


<script type="text/javascript">
	document.getElementById("funcionarios").addEventListener("change", function() {
		alert(this.value);	
	});
</script>

Live demo sem jQuery + Listener:

https://fiddle.jshell.net/3tedze11/1/

 

 

 

Pode parecer que o segundo jeito é melhor em todos os casos.

Porem como evento fica inline qualquer linha que exija uma leitura ou muitos códigos fica complicado de ler.

 

 

 

 

Share this post


Link to post
Share on other sites

Pessoal com ajuda de vocês e com pesquisa na net, consegui fazer e esta funcionando da forma que queria, apenas tive que incluir um arquivo externo para fazer a busca no banco, mas não precisou fazer vários arquivos para cada input como imaginava:

 

No meu arquivo teste.php ficou assim:

 

<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $("select[name='nome']").change(function () {
                    var nome = $("input[name='nome']");
                    var sobrenome = $("input[name='sobrenome']");
                    var login = $("input[name='login']");

                    $(nome).val('Carregando...');
                    $(sobrenome).val('Carregando...');
                    $(login).val('Carregando...');

                    $.getJSON(
                            'function.php', // arquivo externo que faz as buscas no banco.
                            {id_cad_pf: $(this).val()},
                    function (json)
                    {
                        $(nome).val(json.nome);
                        $(sobrenome).val(json.sobrenome);
                        $(login).val(json.login);
                    }
                    );
                });
            });
        </script>

    </head>
    <body>
        <form action="" method="post">
            <label>Nome: </label>
            
            <select name="nome">
                <option value="">Seleciona um Usuario: </option>
                <?php
                include 'function19.php';
                echo montaSelect();
                ?>
            </select>
            
            <label>Nome: <input name="nome" type="text" disabled="disabled" value="" /></label>
            <label>Sobrenome: <input type="text" name="sobrenome" value="" /></label>
            <label>login: <input type="text" name="login" value="" /></label>
        </form>
    </body>
</html>

Ai no meu arquivo function.php fiz assim:

 

<?php
require_once("../DAO/conn.class.php");
require_once("../classes/classes.class.php");
$classe = new myclass;

function montaSelect() {
    $PDO_con = conectar();
    $busca_segura = $PDO_con->prepare("SELECT * FROM tb_cad_pf WHERE excluido != 'sim' ");
    $busca_segura->execute();
    if ($busca_segura == 1) {
        while ($dados = $busca_segura->fetch(PDO::FETCH_ASSOC)) {
            $opt .= '<option value="' . $dados['id_cad_pf'] . '">' . $dados['nome'] . '</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) {
    $PDO_con = conectar();
    $id = (int) $id;

    $busca_id = $PDO_con->prepare("SELECT * FROM tb_cad_pf WHERE id_cad_pf = '$id'");
    $busca_id->execute();

    $arr = Array();
    if ($busca_id == 1) {
        while ($dados_id = $busca_id->fetch(PDO::FETCH_ASSOC)) {
            $arr['nome'] = $dados_id['nome'];
            $arr['sobrenome'] = $dados_id['sobrenome'];
            $arr['login'] = $dados_id['codigo'];
        }
    } else
        $arr[] = 'endereco: não encontrado';

    return json_encode($arr);
}

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

Só não entendi ali no "function retorna($id)"  onde esta "$id = (int) $id", como que essa variável $id esta com o valor do $id pra fazer a consulta no banco se em nenhum momento eu estou setando esse $id. Para explicar melhor: se no select eu escolho o id 5, como que o $id assume esse valor se nenhum momento ele esta setado que $id esta com '5' .

Share this post


Link to post
Share on other sites
Citar

Pessoal com ajuda de vocês e com pesquisa na net


Que legal a ideia do forum é essa, ajudar a trilhar o caminho e não percorrer pra ti.

Citar

Para explicar melhor: se no select eu escolho o id 5, como que o $id assume esse valor se nenhum momento ele esta setado que $id esta com '5' .

Como não?


No Trecho em Javascript

 $.getJSON(
    'function.php', // arquivo externo que faz as buscas no banco.
    {id_cad_pf: $(this).val()},
    function (json){
        $(nome).val(json.nome);
        $(sobrenome).val(json.sobrenome);
        $(login).val(json.login);
    }
 );


 
Nesse momento você criou um Objeto em Javascript {}

E passou o parâmetro
 

id_cad_pf = $(this).val()

 Esse cara aqui é o value do Combo selecionado no evento (Lembra do evento?) 'change'

 

Ou seja assim q o evento ocorre é disparado.

 

Só toma cuidado com o escopo do this.

Tenta sempre 'armazenar' ele logo de inicio.
Exemplo:

$("select[name='nome']").change(function () {
    var nome = $("input[name='nome']");
    var sobrenome = $("input[name='sobrenome']");
    var login = $("input[name='login']");
    
    var id_cad_pf_selected = $(this).val();
    $(nome).val('Carregando...');
    $(sobrenome).val('Carregando...');
    $(login).val('Carregando...');
    $.getJSON(
         'function.php'
        ,{id_cad_pf: id_cad_pf_selected}
        ,function (json){
            $(nome).val(json.nome);
            $(sobrenome).val(json.sobrenome);
            $(login).val(json.login);
        }
    );
});


E isso dispara uma requisição HTTP com o _GET[id_cad_pf] = <valor>


Ficando algo assim:

function.php?id_cad_pf=5

 

Tem uma serie bem legal do Zeno explicando um pouco da aba 'NetWork', e como ela te auxilia a ler oq foi enviado.

https://www.youtube.com/watch?v=wsCCACcEtig&list=PLiGzvgwA5Gmgnq5vPjJxW52hDiX3ndL53&index=7

 

 

Recomendo a serie por completo:

https://www.youtube.com/watch?v=XUgfwYzv-WQ&list=PLiGzvgwA5Gmgnq5vPjJxW52hDiX3ndL53

 

Qualquer duvida estamos ai :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By violin101
      Caros Amigos,
       
      saudações...
       
      Desculpa a recorrer ao auxílio dos amigos, mas estou com um pequeno problema que não estou conseguindo entender.
       
      A página inicial do meu Sistema tem um CAROUSEL com um SLIDER que deveria iniciar junto com a página. 
      INFELIZMENTE algumas vezes não inicia e para EXECUTAR o o Slider deve pressionar F5.
       
      Algumas vezes quando o Slider inicia depois de um período para o LOOP, não entendo isso.
       
      Abaixo o código do SLIDER.
      /*----------------------------------------*/ /* 01. Main Slider Ativação e Velocidade do Slide /* /* Como consigo resolver esse problema para o Slider INICIAR com um LOOP infinito /* sem ter que ficar atualizando a página ? /* /*----------------------------------------*/ $(".slider_active").owlCarousel({ loop: true, margin: 0, nav: true, autoplay: true, infinite: true, items: 1, autoplayTimeout: 10000, navText: ["<i class='fa fa-caret-left'></i>", "<i class='fa fa-caret-right'></i>"], dots: true, autoHeight: true, lazyLoad: true });  
      Grato,
       
      Cesar
    • By manolegal
      Boa tarde
      Tenho 5 campos do tipo select no meu formulário.  A seguir um dos campos.
      <div id="resp" class="form-group col-md-3" placeholder="Responsável" title="Pesquisar por Responsável"> <select class="form-control" id="resp" name="resp" placeholder="Responsável" title="Pesquisar por Responsável"> <option value="">Responsável</option> <?php $Sql = "SELECT ..."; $Resultado = ... while ($linha = @pg_fetch_array($Resultado)){. $id_responsavel_bd = $linha["id_responsavel"]; $nome_responsavel_bd = $linha["responsavel"]; if ($resp == $id_responsavel_bd){ echo "<option value='$id_responsavel_bd' selected = 'selected'>$nome_responsavel_bd</option>";} else{ echo "<option value='$id_responsavel_bd'>$nome_responsavel_bd</option>";} } ?> </select> </div> Tenho uma função jquery que ao selecionar qualquer um destes campos, faz uma requisição ajax para atualizar uma div do meu form.
      <script type="text/javascript"> $(document).ready(function(){ $('select').change(function(){ // Todos selects $('form').submit(function(){ var dados = $(this).serialize(); $.ajax({ type: "POST", url: 'arquivo_ajax.php', dataType: 'html', data: dados, }).done(function(data){ //console.log(data); $("#list").empty().html(data); }); return false; }); $("#meu_form").trigger('submit'); }); }); </script> Ao abrir o formulário e fazer a primeira seleção de algum campo do tipo select, é gerada uma solicitação ajax.
      O problema é que a cada nova seleção deste campo e de algum outro campo, ao invés de realizar UMA ÚNICA REQUISIÇÃO, está aumentando o número de requisições a cada nova ação.
      Como não tenho muitos conhecimentos em jquery/ajax em minha dúvida:
      - É normal ir aumentando o número de requisições?
      - Deveria sempre realizar apenas uma requisição (imagino que seja correto)?
      - Meu código está correto? Se não está, onde estou errando?
      Desde já agradeço pela colaboração.
       
       
    • By Person
      Estou fazendo um protótipo de e-commerce com aps clássico e sql server, na parte de administração, o usuário administrativo pode alterar o status do pedido,  para isso ele clica no botão de alterar na pagina principal e é redirecionado para um formulário onde tenho as options, para que ele mude o status, coloquei um botão para que ele passe os parâmetros  (id_pedido e id_status_pedido) para a pagina de manutenção, onde é feito o update e o envio de e-mail com as atualizações. Mas quero retirar esse botão e fazer com que, assim que eu clique em uma opção, ele altere, sem eu precisar ser redirecionado para a tela de manutenção, isso com o Ajax se possível.
       
      <body> <% call Abredb() cod = Request.QueryString("cod") evt = Request.QueryString("evt") if cod <> "" then cod = cint(cod) end if if ucase(evt) = "ALT" then sql = "exec SP_TR32_status_frm_SEL" 'Response.Write(sql) 'Response.End() set rs = dbWeb.execute(sql) estrato = rs("id_status_pedido") bot = "Alterar" end if %> <div class="container"> <div class="titulo">Formulario</div> <form action="manu_pedido.asp" method="post" enctype="multipart/form-data"> <div class="detalhes-formulario"> <div class="input-box"> <span class="detalhes">status</span> <select class="form-control" name = "status"> <% do while not rs.eof%> <option value="<%=rs("id_status_pedido")%>"><%=rs("descricao")%></option> <% rs.movenext loop rs.close set rs = nothing %> </select> </div> </div> <button><a href="/treinamento/Thau/mini_mercado/adm/manu_pedido.asp?evt=alt&cod="<%=cod%>"&estrato="<%rs("id_status_pedido")%> </form> </div> <br> </body> <%call Fechadb()%> </html> Abaixo está o código da minha pagina de manutenção, no qual acontece a alteração do status
      <% Function ZerosEsquerda(Num,tam) Dim Zero Num = Trim(Num) Zero = "" For i = Len(Num) To tam - 1 Zero = "0" & Zero Next ZerosEsquerda = Trim(Zero & Num) End Function byteCount = Request.TotalBytes RequestBin = Request.BinaryRead(byteCount) Set UploadRequest = CreateObject("Scripting.Dictionary") BuildUploadRequest RequestBin 'opc = request.QueryString("opc") 'if opc = "" then 'cod = UploadRequest.Item("hfcod").Item("Value") 'botao = UploadRequest.Item("botao").Item("Value") 'estrato = UploadRequest.Item("estrato").Item("Value") 'end if session.LCID = 1046 call Abredb() if botao = "Alterar" then ' ALTERANDO OS DADOS RECEBIDOS NA TABELA sql = "exec SP_TR32_pedido_UPD "&cod&", '"&estrato&"'" 'response.write sql 'response.end dbWeb.execute(sql) str_html = "" str_html = str_html & "<HTML><BODY BGCOLOR=#0000FF>" str_html = str_html & "<h1>produtos</h1>" sql ="SP_TR32_email__itens_sel "&cod&"" set rs = dbWeb.execute(sql) str_html = str_html & "<table>" str_html = str_html & "<thead>" str_html = str_html & " <tr>" str_html = str_html & "<th>Produtos</th>" str_html = str_html & "<th>quantidade</th>" str_html = str_html & " <th>Total</th>" str_html = str_html & "</tr>" str_html = str_html & " </thead>" str_html = str_html & "<tbody>" do while not rs.eof str_html = str_html & "<tr>" str_html = str_html & "<td >"&rs("produto")&"</td>" str_html = str_html & "<td >"&rs("quantidade")&"</td>" str_html = str_html & "<td >"&rs("total")&"</td>" str_html = str_html & "</tr>" rs.movenext loop rs.close set rs = nothing str_html = str_html & " </tbody>" str_html = str_html & "</table>" str_html = str_html & "</BODY></HTML>" sql = "SP_TR32_email_sel "&cod&"" set rs = dbWeb.execute(sql) if estrato<>"" then Set ObjMail = Server.CreateObject("Cdonts.Newmail") objMail.Subject = "Atualização de pedido" objMail.From = "Porto Dourado <contato@email.websupply.com.br>" objMail.To = "request("email")" objMail.BodyFormat = 0 objMail.MailFormat = 0 objMail.Body = "Olá"&" "&rs("nome")&" "&rs("sobrenome")&", </br> Houve uma atualização em seu pedido pedido: "&rs("id_pedido")&" </br> o status mudou para: "&rs("descricao")&" </br> endereço de entrega: "&rs("cep")&", "&rs("rua")&", "&rs("bairro")&", "&rs("numero")&", "&rs("cidade")&", "&rs("Uf")&" </br>Total pedido: "&rs("total_pedido")&" </br> "& str_html &" </br></br>"&" Atentamente,"&" </br> "&"Equipe Porto dourado"&" </br></br> "&"Para entrar em contato com a equipe de suporte, entre em contato com o email ou ligue para nossa central no numero " objMail.Send Set objMail = nothing envio = true %> <script> alert('email com alteração enviado com sucesso!'); </script> <% end if if estrato = 6 then sql = "exec SP_TR32_adm_data_envio_UPD "&cod&"" dbWeb.execute(sql) end if if estrato = 4 then sql = "exec SP_TR32_adm_data_entregue_UPD "&cod&"" dbWeb.execute(sql) end if %> <script> alert("Dados alterado com sucesso!") parent.location = "cst_pedido.asp" </script> <% end if %> <%call Fechadb()%>  
    • By mr22robot
      select A.CODPROD,A.DESCRICAO,A.DTMOVLOG DATA,A.NUMNOTA,ROUND(A.QT,2)QTDE,A.PUNIT,A.NOMECODOPER OPERACAO,ROUND(A.P_TOTAL,2)P_TOTAL, (SELECT QTEST - PCEST.QTRESERV QTEST FROM PCEST WHERE CODFILIAL = 1 AND CODPROD = A.CODPROD)QTESTOQUE FROM( SELECT PCMOV.CODPROD,PCMOV.DESCRICAO, TRUNC(PCMOV.DTMOV) DTMOV, PCMOV.DTMOVLOG, PCMOV.NUMNOTA, PCMOV.NUMSEQ, PCMOV.NUMSEQPED, PCMOV.NUMTRANSENT, PCMOV.DTCANCEL, DECODE(DTCANCEL,NULL,'','Cancelado') SITUACAO, PCMOV.CODUSUR, PCMOV.NUMTRANSVENDA, PCMOV.NUMCAR, PCMOV.NUMLOTE, PCMOV.CODFISCAL, NVL(PCMOV.CUSTOREAL,0) CUSTOREAL, NVL(PCMOV.CUSTOFIN,0) CUSTOFIN, (CASE WHEN (SUBSTR(PCMOV.CODOPER,1,1) = 'E') THEN NVL(PCMOV.CUSTOFIN,0) ELSE NVL(PCMOV.CUSTOFINEST,0) END) CUSTOFINEST, NVL(PCMOV.CUSTOULTENT,0) CUSTOULTENT, NVL(PCMOV.CUSTOFORNEC,0) CUSTOFORNEC, NVL(PCMOV.CUSTOCONT,0) CUSTOCONT, DECODE(PCMOV.CODOPER, 'E',PCMOV.CODFORNEC, 'EB',PCMOV.CODFORNEC, 'ET',PCMOV.CODFORNEC, 'ER',PCMOV.CODFORNEC, 'ES',PCMOV.CODFORNEC, PCMOV.CODCLI) CODCLI, NVL(PCMOV.CODFUNCLANC,0) AS CODFUNCLANC, DECODE(SUBSTR(PCMOV.CODOPER, 1, 1), 'S',(PCMOV.QT * (-1)), 'R',(PCMOV.QT * (-1)), DECODE(NVL(PCMOVCOMPLE.QTRETORNOTV13, 0), 0, NVL(PCMOV.QT, 0), PCMOVCOMPLE.QTRETORNOTV13)) AS QT, NVL(PCMOV.PUNIT,0) PUNIT, PCMOV.CODOPER, DECODE(PCMOV.CODOPER, 'E', DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Cancelada','Entrada Merc.'), 'EB',DECODE(GREATEST(PCMOV.QT,0),0,'Bonif. Cancelada','Entrada Bonific.'), 'ET',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Transf. Cancelada','Entrada Transf.'), 'EA',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Ajuste Cancelada','Ajuste Estoque'), 'E1',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Avaria Cancelada','Entrada Avaria'), 'EI',DECODE(GREATEST(PCMOV.QT,0),0,'Ajuste Invent. Cancelado','Ajuste Invent.'), 'ED',DECODE(GREATEST(PCMOV.QT,0),0,'Devolução Cancelada','Dev. Cliente'), 'EN',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Venda Consig. Cancelada','Dev. Venda Consignada'), 'ER',DECODE(GREATEST(PCMOV.QT,0),0,'Simples Remessa Cancelada','Simples Remessa'), 'ES',DECODE(GREATEST(PCMOV.QT,0),0,'Sobra Mercadoria Cancelamento','Sobra de Mercadoria'), 'EM',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Mat. Consumo Cancelada','Entrada Materiais de Consumo'), 'EC',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Consig. Cancelada','Entrada Consignação'), 'EO',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Comodato Cancelada','Devolução de Comodato'), 'EX',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Avulsa Cancelada','Devolução Avulsa'), 'EG',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Benefic. Cancelada','Entrada de Beneficiamento'), 'S', DECODE(GREATEST(PCMOV.QT,0),0,'NF Cancelada','Saida'), 'SD',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Cancelada','Dev. Fornecedor'), 'SB',DECODE(GREATEST(PCMOV.QT,0),0,'Saida Bonific. Cancelada','Saida Bonific.'), 'ST',DECODE(GREATEST(PCMOV.QT,0),0,'Saida Transf. Cancelada','Saida Transf.'), 'S1',DECODE(GREATEST(PCMOV.QT,0),0,'Avaria Reaprov. Cancelada','Avaria por Reaproveitamento'), 'SS',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Sobra Cancelada','Saída de Sobra'), 'SA',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Ajuste Cancelada','Ajuste Estoque'), 'SI',DECODE(GREATEST(PCMOV.QT,0),0,'Ajuste Invent. Cancelado','Ajuste Invent.'), 'SR',DECODE(GREATEST(PCMOV.QT,0),0,'Simples Remessa Cancelada','Simples Remessa'), 'SC',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Consig. Cancelada','Saída Consignação'), 'SO',DECODE(GREATEST(PCMOV.QT,0),0,'Remessa Comodato Cancelada','Remessa de Comodato'), 'SF',DECODE(GREATEST(PCMOV.QT,0),0,'Dev. Comodato Fornec. Cancelada','Devolução de Comodato a Fornecedor'), 'RA',DECODE(GREATEST(PCMOV.QT,0),0,'Req. Avulsa Cancelada','Requisição Avulsa'), 'EP',DECODE(GREATEST(PCMOV.QT,0),0,'Cancelamento Produção','Entrada Produção'), 'SP',DECODE(GREATEST(PCMOV.QT,0),0,'Cancelamento Produção','Requisição Mat.Prima'), 'SV',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Avaria Cancelada','Saída por Avaria'), 'SM',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Mat. Consumo Cancelada','Saída Materiais de Consumo'), 'SL',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Perda Cancelada','Saída de Perda'), 'EL',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Perda Cancelada','Entrada de Perda'), 'EF',DECODE(GREATEST(PCMOV.QT,0),0,'Entrada Comodato Cancelada','Entrada de Comodato'), 'SN',DECODE(GREATEST(PCMOV.QT,0),0,'Saída Benefic. Cancelada','Saída de Beneficiamento'), 'EV',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Dev. Rem. Benefic. Cancelada','Entrada Devolução de Remessa para Beneficiamento'), 'EG',DECODE(GREATEST(PCMOV.QT,0),0,'Ent. Benefic. Cancelada','Entrada de Beneficiamento'), 'Desconhecido') NOMECODOPER, (NVL(PCMOV.PUNIT,0)*DECODE(NVL(PCMOVCOMPLE.QTRETORNOTV13, 0), 0, NVL(PCMOV.QT, 0), PCMOVCOMPLE.QTRETORNOTV13)) P_TOTAL, (CASE WHEN PCMOV.CODOPER IN ('SA', 'EA') THEN (SELECT DISTINCT HISTORICO FROM PCLANC WHERE NUMTRANSENT = PCMOV.NUMTRANSENT AND ROWNUM = 1) ELSE ' ' END) MOTIVO FROM PCMOV, PCPRODUT, PCMOVCOMPLE WHERE PCMOV.CODPROD IN(SELECT CODPROD FROM PCPRODUT WHERE CODSEC IN(10020)) AND PCMOV.CODPROD = PCPRODUT.CODPROD AND PCMOV.NUMTRANSITEM = PCMOVCOMPLE.NUMTRANSITEM(+) AND NVL(PCMOVCOMPLE.MOVEST, 'S') = 'S' AND PCMOV.DTMOV BETWEEN '01-JAN-2020' AND '29-SEP-2021' AND NVL(PCMOV.CODFILIALNF, PCMOV.CODFILIAL) = '1' AND PCMOV.CODOPER <> 'S' AND ((NVL(PCPRODUT.ESTOQUEPORLOTE, 'N') = 'S' AND PCMOV.NUMLOTE IS NOT NULL) OR (NVL(PCPRODUT.ESTOQUEPORLOTE, 'N') = 'N' AND PCMOV.NUMLOTE IS NULL)) AND PCMOV.STATUS IN ('B','AB') AND NOT EXISTS (SELECT DISTINCT (PCNFSAID.NUMTRANSVENDA) FROM PCNFSAID, PCPRODUT WHERE PCNFSAID.NUMTRANSVENDA = PCMOV.NUMTRANSVENDA AND PCNFSAID.CODFILIAL = PCMOV.CODFILIAL AND PCMOV.CODOPER = 'S' AND PCNFSAID.CONDVENDA IN (4, 7, 14) AND PCMOV.CODPROD = PCPRODUT.CODPROD AND PCPRODUT.TIPOMERC = 'CB') AND NOT (FERRAMENTAS.F_BUSCARPARAMETRO_ALFA('DEVOLVESIMPLESREMTV13TOTAL',PCMOV.CODFILIAL,'N') = 'S' AND PCMOV.ROTINACAD LIKE '%1332%' AND NVL(PCMOVCOMPLE.QTRETORNOTV13,0) = 0) AND NOT EXISTS (SELECT NUMNOTA FROM PCNFSAID WHERE NUMTRANSVENDA = PCMOV.NUMTRANSVENDA AND SITUACAONFE IN (110,205,301,302,303)) ORDER BY PCMOV.CODOPER, PCMOV.DTMOV, PCMOV.NUMNOTA )A WHERE A.DTCANCEL IS NULL AND A.CODOPER = 'E' ORDER BY CODPROd,DATA Boa tarde. Estou com essa dúvida:
      Preciso em um select trazer os dados com a seguinte condição: 
      Quando  o valor do punit repetir, somente traz o ultimo registro. ou seja a maior data. 
      caso contrário, traz todos os registros. 
      é possíveç, mais não sei como. Tentei usar o ROW_NUMBER(). Mas não encontrei uma forma de usar. 
      Greato
    • By srs1999_
      Tópico
       
      Site em Código
      Sobre desenvolver sites sem o wordpress que ja tá tudo ali feito que seja um site dinâmico ou seja com banco de dados , APIs de pagamento, Painel para o usuário ,  além de todas  as funções que tem no wordpress e você teria propriedade pra explicar sobre detalhes mais técnicos da produção onde no wordpress só quem entende de progrqmação explicaria algum detalhe técnico 
      Então usando basicamente : 
      FRONT END 
      HTML 
       CSS 
      JAVASCRIPT 
      ALGUMA DE BACKEND COMO PHP E BANCO DE DADOS
      Pode se criar sites/sistemas tão bons ou melhores que no wordpress
       
      Fato : o proprio wordpress é feito em php e ate o proprio facebook tbm em php
      Fato 2 :  cerca de 70% dos sites são feitos em Wordpress
       
      Acho esse lance de procurar o caminho mais fácil limita muito a pessoa por exemplo é facil editar imagens no paint bem intuitivo , agora para editar no photoshop com muitas outras possibilidades  acaba sendo importante ir explorando essa elaboração mais difícil  com um mesmo objetivo. No caso do exemplo ( editar imagens )  
       
      Reflexão:
      Vale a pena se dedicar a trabalhar com a ferramenta Wordpress apenas por ser um meio rápido de ganhar dinheiro ?
      Ou trabalhar sem wordpress  usando tudo que exigido pra criar coisas originais mais que não seria tão rápido a produção. Mas creio que além dos sites feitos também geraria a possibildade de vender o sistema web criado para o cliente personalizar .
       
      Você Desenvolveria de que forma :
       Wordpress apenas ?
       
      Conhecer programação pra trabalhar 
      com  Wordpress ?
       
      Produzir tudo só com programação totalmente dinâmico sem  Wordpress?
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.