Ir para conteúdo
Fórum Script Brasil

Pesquisar na Comunidade

Mostrando resultados para as tags ''php''.

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Encontrar resultados em...

Encontrar resultados que...


Data de Criação

  • Início

    FIM


Data de Atualização

  • Início

    FIM


Filtrar pelo número de...

Data de Registro

  • Início

    FIM


Grupo


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

  1. A resposta para essa pergunta é: SIM O conceito de object literal (objeto literal) é muito famoso no JS e consiste em criar um objeto que possui propriedades e, claro, valores associados a essas propriedades. No exemplo a seguir, poderemos ver como esse recurso funciona no JS: const programador = { nome: "Fábio Akita", linguagem: "Ruby" }; Agora posso consultar, alterar ou até mesmo executar propriedades e métodos desse meu objeto. Exemplificando a utilização do meu objeto literal: console.log(`Olá, ${programador.nome}`); # saída: Olá, Fábio Akita Esse recurso é amplamente utilizado no mundo JS. Assista uma instrução switch ser substituída por um object literal: let day; switch (new Date().getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; break; default: throw new Error("Hey! We have only 7 days in the week"); } console.log(`What day of the week is today? ${day}`); Substituindo por um object literal: const dayOfTheWeek = { 0: "Sunday", 1: "Monday", 2: "Tuesday", 3: "Wednesday", 4: "Thursday", 5: "Friday", 6: "Saturday", }; console.log( `What day of the week is today? ${dayOfTheWeek[new Date().getDay()]}` ); Legal, né!? Mas daí você me pergunta, como posso replicar isso no php? Bom, o php não possui o recurso de object literal, mas calma, pois podemos alçar o mesmo resultado de duas maneiras: 1° por meio dos arrays associativos. 2° por meio da estrutura condicional match. 1° maneira: $dayOfTheWeek = [ 0 => "Sunday", 1 => "Monday", 2 => "Tuesday", 3 => "Wednesday", 4 => "Thursday", 5 => "Friday", 6 => "Saturday", ]; $today = date('w'); // Obtém o dia da semana atual (0 para domingo, 1 para segunda, etc.) echo "What day of the week is today? " . $dayOfTheWeek[$today]; 2° maneira: $today = date('w'); // Obtém o dia da semana atual (0 para domingo, 1 para segunda, etc.) $todayInt = $today + 0; // no caso do match precisamos informar um int, para que a associação seja feita corretamente $dayOfTheWeek = match($todayInt) { 0 => "Sunday", 1 => "Monday", 2 => "Tuesday", 3 => "Wednesday", 4 => "Thursday", 5 => "Friday", 6 => "Saturday", }; echo "What day of the week is today? " . $dayOfTheWeek; Bem, esse foi o tutorial, tmjt rapaziada!
  2. O meu primeiro roteador só funcionava com um argumento, com a ajuda do Copilot mudei para ele suportar mais de um argumento. Mas quando um dos argumentos tinha um ponto no meio do caminho, o roteador separava o que era um valor em vários argumentos. O Copilot fez auditoria no meu roteador, e descobriu que usei o comando $_GET indevidamente, sem uma chave. O meu roteador é assim: <?php spl_autoload_register(fn ($class) => require str_replace('\\', DIRECTORY_SEPARATOR, strtolower($class)) . '.php'); $rota = 'login_login'; $parametros = []; if ($_GET) { $chaveCompleta = key($_GET); // Ex: Login_menu_param1_param2_param3 if (strpos($chaveCompleta, '_') === false) { exit; // proteção contra valores inválidos } $rota=$chaveCompleta; } $segmentos = explode('_', $rota); $nomeControle = $segmentos[0]; $metodo = $segmentos[1]; $parametros = array_slice($segmentos, 2); $controle = new $nomeControle(); call_user_func_array([$controle, $metodo], $parametros); e o Copilot disse que o correto é assim: <?php spl_autoload_register(fn ($class) => require str_replace('\\', DIRECTORY_SEPARATOR, strtolower($class)) . '.php'); $rota = $_GET['rota'] ?? 'login_login'; $segmentos = explode('_', $rota); $nomeControle = $segmentos[0]; $metodo = $segmentos[1]; $parametros = array_slice($segmentos, 2); $controle = new $nomeControle(); call_user_func_array([$controle, $metodo], $parametros); Ainda não testei a nova sugestão do Copilot, estou tentando me recompor. Que vergonha!
  3. Frank K Hosaka

    O roteador

    O meu projeto orçamento está codificado em Livewire e também no PHP puro. O Livewire é super bacana, mas tem muita coisa que ainda não domino: eu aperto o botão, e aparece o botão com uma imagem girando, girando e girando. Ainda não sei como consertar isso. No PHP puro eu uso as chamadas para as instâncias de classe, mas ao invés de usar as famosas pastas Models Views and Controllers, eu não uso nenhuma delas, tudo está no diretório raiz, eu vou navegando entre os arquivos com o controlador no index.php. Eu tive a sorte de encontrar o controlador aqui no fórum Script Brasil, mas ele só suportava um argumento. Pedi ajuda para o Copilot para o roteador suportar vários argumentos. Eu ainda não testei, mas achei o código bonito a beça: <?php require 'config.php'; $rota = 'login_login'; $parametros = []; if ($_GET) { $chaveCompleta = key($_GET); // Ex: Login_menu_param1_param2_param3 if (strpos($chaveCompleta, '_') === false) { exit; // proteção contra valores inválidos } $rota=$chaveCompleta; } $segmentos = explode('_', $rota); $nomeControle = $segmentos[0]; $metodo = $segmentos[1]; $parametros = array_slice($segmentos, 2); $controle = new $nomeControle(); call_user_func_array([$controle, $metodo], $parametros);
  4. Faz muito tempo que tenho pensado no meu projeto orçamento dentro de um celular. O problema é que a tela do celular é bem pequena, mal dá para colocar duas colunas, no modo retrato. No Galaxy Note 10, eu consegui <div class="w-[630px]"></div> no modo paisagem e é baseado nesse limite é que estou fazendo o meu projeto. O problema é que não dá para exibir toda a informação numa só coluna, posso mostrar alguma coisa usando o CSS truncate do Tailwind. Mas e se o usuário quiser ver tudo? Desde 2020 é que estou quebrando a cabeça, só hoje é que surgiu essa ideia: <script src="https://cdn.tailwindcss.com"></script> <script> function expandir() { const descricao = document.getElementById("descricao"); descricao.classList.toggle("truncate"); } </script> <?php $historico="Vamos ver se isso funciona"; ?> <div class="w-[100px] m-0 m-auto"> <div class="w-[100px] odd:bg-gray-200">Teste</div> <div id="descricao" class="w-[100px] truncate" onclick="expandir()"><?=$historico?></div> <div class="w-[100px] odd:bg-gray-200">Teste</div> </div> / ==================== / A ideia é péssima, coloquei o código JavaScript no config.php, e em outro código tentei invocar a função expandir. Não deu certo. O código só funciona se existir apenas um único <div> com o id="descricao". Isso é bem constrangedor, o Copilot corrigiu o código: <script src="https://cdn.tailwindcss.com"></script> <script> function expandir(element) { element.classList.toggle("truncate"); } </script> <?php $historico="Vamos ver se isso funciona"; ?> <div class="w-[100px] m-0 m-auto"> <div class="w-[100px] odd:bg-gray-200">Teste</div> <div class="w-[100px] truncate" onclick="expandir(this)"><?=$historico?></div> <div class="w-[100px] odd:bg-gray-200">Teste</div> </div> /===== Outra ideia péssima, eu tive que tirar a função expandir( ) do JavaScript do config.php e colocar em cada código que precisava dessa função. Usar o config.php pareceu uma boa ideia, mas ele acabou aparecendo no cabeçalho de um arquivo csv e a Bling se recusou a receber por estar fora do layout esperado.
  5. A grande maioria dos celulares não têm teclado físico e nem mouse, assim eu perguntei ao Copilot quantos eventos sobram para o programador trabalhar com o celular, e ele respondeu: [Eventos de toque] touchstart, touchmove, touchend e touchcancel. Há outros tipos de eventos, eu comecei a explorar o touchmove: <div class="w-[70px] text-right" title='<?=$grupo->pessoa?>' ontouchmove="alert('o cliente é o <?=$grupo->pessoa?>')" > <?=$grupo->codp?> </div>
  6. Não sei exatamente como o Laravel faz a rotina do login, mas hoje eu mudei a rotina no PHP de tal forma que conduz o usuário para as opções ao invés de fazer login novamente: <?php class Login { // listagem parcial function login() { if(isset($_SESSION['id']) && isset($_SESSION['nome'])) { return view('menuView'); } $mensagem=""; $email=""; return view('loginView',['mensagem'=>$mensagem,'email'=>$email]); } }
  7. 1. Baixar o arquivo tailwindcss-windows-x64.exe em https://github.com/tailwindlabs/tailwindcss/releases 2. Renomear o arquivo para tailwindcss.exe e mover para a pasta do projeto. 3. editar o arquivo index.php para teste: index.php <link rel="stylesheet" href="output.css"> <div class="text-red-500">Esse texto tem que aparecer em vermelho</div> <?php exit; // o código original é empurrado para baixo 4. criar o arquivo input.css @import "tailwindcss"; 5. executar no terminal o comando .\tailwindcss.exe -i input.css -o output.css --content "./*.php"
  8. Isso está um pouco fora do tópico do PHP, mas eu tenho um código que lê o arquivo xml da NF Eletrônica, e isso facilita na hora de dar entrada no estoque bem como atualizar custo e por tabela o preço de venda do produto. O problema é como obter o arquivo xml. Na maioria das vezes, eu uso a cópia da confirmação do pedido para dar entrada no produto, mas nesse caso tenho que digitar cada código, quantidade, valor, é um serviço chato e bem demorado. Muitas vezes eu perguntei ao Copilot se era possível obter as notas fiscais que foram emitidas contra a empresa no portal da Nota Fiscal Eletrônica, e ele disse sim várias e várias vezes, só que ele nunca me disse que precisa seguir a rota Serviços > Manifestação do Destinatário, e eu descobri hoje na base da tentativa e erro. Eu gostei desse serviço, ele entrega a lista de todas as notas fiscais que foram emitidas contra a empresa nos últimos quinze dias. Só basta ter o certificado digital.
  9. Desde 2020 sempre tive problema na hora de criar modal, não sabia como lidar com o JavaScript. Aqui em 2025 eu conheci o Livewire, e com ele percebi que era bem fácil criar o modal através do PHP. Nessa semana, eu criei cinco modais dentro de um HTML. É muito modal para um só HTML, mas para facilitar eu inventei um gerenciador de modal, assim: function modalDefinir($modais) { $this->modal=array_fill(0,5,false); foreach($modais as $indice) { $this->modal[$indice]=true; } } Para ativar a modal de índice 1, eu uso o comando $this->modalDefinir([1]). Para ativar outros modais, uso apenas uma vírgula para acrescentar outro índice. Outro truque bacana que eu aprendi foi passar toda a instância da classe para a view, assim: return view('nfView',['n'=>$this]); } Isso acabou com o pesadelo de passar um monte de parâmetros na hora de chamar o HTML, é bem mais fácil mandar toda a classe para ele. Para isso funcionar, eu usei um monte de variável pública. Mas o PHP não é Livewire, ele não tem o truque do "wire:model" e nem o "wire:click", o único recurso que sobre é a atualização do navegador, onde o HTML passa os dados obtidos do usuário, e o PHP monta um novo HTML baseado nas informações que recebeu, o problema é que tudo é perdido no meio do caminho. Para contornar esse problema, eu criei a função recuperarMemoria: function recuperarMemoria() { $this->nNF = $_SESSION['vetor']['nNF']; $this->xNome = $_SESSION['vetor']['xNome']; $this->previa = $_SESSION['vetor']['previa']; $this->codp = $_SESSION['vetor']['codp']; $this->vNF = $_SESSION['vetor']['vNF']; $this->difAliqICMS = $_SESSION['vetor']['difAliqICMS']; $this->soma = $_SESSION['vetor']['soma']; $this->inativos = $_SESSION['vetor']['inativos']; } Finalmente, um código exemplo de como usar tudo isso: arquivo nf.php <?php class NF { public $codp,$difAliqICMS,$inativos=[],$indicador,$modal=[],$nNF,$previa=[]; public $soma,$vNF,$xNome; function atualizar($indicador) { $this->indicador=$indicador; $this->recuperarMemoria(); $this->modalDefinir([0,2,3]); return view('nfView',['n'=>$this]); } function CFOP() { $this->recuperarMemoria(); $this->modalDefinir([2,4]); return view('nfView',['n'=>$this]); } function CFOPatualizar() { $cfop=$_POST['cfop']; $codprod = $_POST['codprod']; (new Conn)->update("tbprod set cfop='$cfop' where codprod = $codprod"); return ; } function custo() { $custoAtual = $_POST['custoAtual']; $codprod = $_POST['codprod']; $margem=(new Conn)->select("marg from tbprod where codprod=$codprod")[0]->marg; $venda=pvenda($custoAtual,$margem); $class=addslashes("class='w-[80px] text-right'"); (new Conn)->update("tbnf set custoanterior=$custoAtual, class='$class' where codprod=$codprod"); (new Conn)->update("tbprod set custo=$custoAtual, venda=$venda where codprod = $codprod"); } function incluir() { $lcto=$_POST['lcto']; $verifica=count((new Conn)->select("* from tbhistprod where lcto=$lcto")); if($verifica) { $mensagem="<h1>Nota já lançada. <a href=?NF.atualiza>Voltar</a></h1>"; return view('mensagemView',['mensagem'=>$mensagem]); } $dia=(new Conn)->select("dia from tbdiario where lcto=$lcto")[0]->dia; $matriz=(new Conn)->select("* from tbnf"); foreach($matriz as $vetor) { (new Conn)->insert("tbhistprod (codprod,dia,qt,custototal,codp,lcto) values ('$vetor->codprod','$dia',$vetor->qt,$vetor->custototal,$vetor->codp,$lcto)"); } return header("location:?Diario.inicio.$dia"); } function inicio() { $this->modalDefinir([1]); return view('nfView',['n'=>$this]); } function modalDefinir($modais) { $this->modal=array_fill(0,5,false); foreach($modais as $indice) { $this->modal[$indice]=true; } } function montarVetor() { $this->inativos=[]; // falta definir inativos $this->previa=[]; $nfe=simplexml_load_file($_FILES['arquivo']['tmp_name']); $itens=$nfe->NFe->infNFe->det; $this->difAliqICMS=0; $aliquotaInterna=0.18; foreach ($itens as $item) { if ((float)$item->prod->CFOP == 6102 || (float)$item->prod->CFOP ==6101) { $vBC = (float)$item->imposto->ICMS->ICMS10->vBC; $vBC = $vBC ? $vBC : (float)$item->imposto->ICMS->ICMS00->vBC; $vICMS = (float)$item->imposto->ICMS->ICMS10->vICMS; $vICMS = $vICMS ? $vICMS : (float)$item->imposto->ICMS->ICMS00->vICMS; $this->difAliqICMS += round(($vBC * $aliquotaInterna - $vICMS+0.00001),2); } } $this->vNF = (float)$nfe->NFe->infNFe->total->ICMSTot->vNF; $this->nNF = (float)$nfe->NFe->infNFe->ide->nNF; $this->xNome = (string)$nfe->NFe->infNFe->emit->xNome; $nome = explode(" ", $this->xNome)[0]; $this->codp = (new Conn)->select("codp from tbpessoa where pessoa like '%$nome%'")[0]->codp; $this->soma=0; foreach ($itens as $item){ // no campo codforn uso a primeira letra para identificar o fornecedor $codforn = (string)$item->prod->cProd; $criterio= strtolower($nome[0].$codforn); $consulta = (new Conn)->select("* from tbprod where codforn like '%$criterio%' "); $codprod = 'null'; $cfop = (string)$item->prod->CFOP; $ncm = (string)$item->prod->NCM; if (count($consulta) == 1) { $codprod = $consulta[0]->codprod; if(substr($consulta[0]->cfop,0,1)==0) { $this->inativos[]=$consulta[0]->codprod; } $fclass=($cfop == substr($consulta[0]->cfop,-4)) ? "w-[50px] text-right" : "w-[50px] text-red-500 text-right"; $nclass=($ncm == $consulta[0]->cf) ? "w-[100px] text-right" : "w-[100px] text-red-500 text-right"; } if (count($consulta) > 1) { $consulta2 = (new Conn)->select("* from tbprod where codforn like '$criterio'"); if(count($consulta2) == 1){ $codprod = $consulta2[0]->codprod; $consulta = $consulta2; } else { $codprod="mult"; } } if (count($consulta)==0) { $codprod = "none"; } $produto = substr((string)$item->prod->xProd,0,79); $quantidade = (float)$item->prod->qCom; if($cfop==6101 || $cfop==6102 || $cfop==5101) { $cfop=5102; } if($cfop==6401 || $cfop==6402 || $cfop==6403 || $cfop==5401 || $cfop==5403 || $cfop==5655) { $cfop=5405; } if (is_numeric($codprod)) { $produtox2 = [506, 507, 508, 509, 510, 519, 1768, 1770, 1772]; if (in_array($codprod, $produtox2)) { $quantidade = 2 * $quantidade; } $produtox5=[1798]; if (in_array($codprod,$produtox5 )) { $quantidade = 5 * $quantidade; } $produtox6 = [2652]; if (in_array($codprod,$produtox6 )) { $quantidade = 6 * $quantidade; } $produtox10 = [2192,1782,2456]; if (in_array($codprod, $produtox10)) { $quantidade = 10 * $quantidade; } $produtox12 = [2403,2406,2407,2408,2496,2497,2498,2499,2561,2653,2654]; if (in_array($codprod, $produtox12)) { $quantidade = 12 * $quantidade; } $produtox24 = [2493,2405,2494,2495,2409]; if (in_array($codprod, $produtox24)) { $quantidade = 24 * $quantidade; } $produtox36 = [2404]; if (in_array($codprod, $produtox36)) { $quantidade = 36 * $quantidade; } } $vICMSST1 = ((float)$item->imposto->ICMS->ICMS10->vICMSST) ? (float)$item->imposto->ICMS->ICMS10->vICMSST : null; $vICMSST2 = ((float)$item->imposto->ICMS->ICMSSN202->vICMSST) ? (float)$item->imposto->ICMS->ICMSSN202->vICMSST : null; $vICMSST = $vICMSST1 ? $vICMSST1 : $vICMSST2; $difAliq = 0; if ((float)$item->prod->CFOP == 6102 || (float)$item->prod->CFOP == 6101){ $vBC = (float)$item->imposto->ICMS->ICMS10->vBC; $vBC = $vBC ? $vBC : (float)$item->imposto->ICMS->ICMS00->vBC; $vICMS = (float)$item->imposto->ICMS->ICMS10->vICMS; $vICMS = $vICMS ? $vICMS : (float)$item->imposto->ICMS->ICMS00->vICMS; $difAliq = round(($vBC * $aliquotaInterna - $vICMS+0.00001),2); } $vIPI =(isset($item->imposto->IPI->IPITrib->vIPI) && (float)$item->imposto->IPI->IPITrib->vIPI) ? (float)$item->imposto->IPI->IPITrib->vIPI : 0; $vProd = (string)$item->prod->vProd; $valorTotal = $vProd + $vICMSST + $difAliq + $vIPI; $this->soma += $valorTotal; $custoAtual=0; $custoAnterior=0; $marg=0; $cclass="w-[80px] text-right"; $nclass="w-[100px] text-right"; $fclass="w-[50px] text-right"; if (is_numeric($codprod)) { $custoAtual = intval($valorTotal / $quantidade * 100) / 100; $consulta = (new Conn)->select("* from tbprod where codprod=$codprod"); $custoAnterior = $consulta[0]->custo; $marg=$consulta[0]->marg; if (abs($custoAnterior - $custoAtual) > 0.02) { $cclass = 'w-[80px] text-right text-red-500'; } if ($ncm !== $consulta[0]->cf) { $nclass = 'w-[100px] text-right text-red-500'; } if (trim($cfop) !== trim(substr($consulta[0]->cfop,-4))) { $fclass = 'w-[50px] text-right text-red-500'; } } $produto=str_replace("'","''",$produto); $this->previa[]=['codforn'=>$codforn,'codprod'=>$codprod,'prod'=>$produto, 'qt'=>$quantidade,'custoanterior'=>$custoAnterior,'custoatual'=>$custoAtual, 'custototal'=>$valorTotal, 'fclass'=>$fclass, 'cfop'=>$cfop,'codp'=>$this->codp,'ncm'=>$ncm,'nclass'=>$nclass,'cclass'=>$cclass, 'marg'=>$marg]; } $_SESSION['vetor']=['nNF' => $this->nNF,'xNome' => $this->xNome,'previa'=>$this->previa,'inativos'=>$this->inativos, 'codp' => $this->codp,'vNF' => $this->vNF,'difAliqICMS' => $this->difAliqICMS, 'soma'=>$this->soma]; $this->modalDefinir([2,3]); return view('nfView',['n'=>$this]); } function nfBasico() { $this->recuperarMemoria(); $this->modalDefinir([2,3]); return view('nfView',['n'=>$this]); } function qt() { $this->recuperarMemoria(); $qt=$_POST['qt']; $id=$_POST['id']; $novoClass=$this->previa[$id]['cclass']; $custoAtual=intval($this->previa[$id]['custototal']/$qt*100)/100; if($custoAtual!==$this->previa[$id]['custoanterior']) { $novoClass='w-[80px] text-red-700 text-right'; } else { $novoClass='w-[80px] text-right'; } $this->previa[$id]['cclass']=$novoClass; $this->previa[$id]['custoatual']=$custoAtual; $this->previa[$id]['qt']=$qt; $_SESSION['vetor']['previa']=$this->previa; $this->modalDefinir([2,3]); return view('nfView',['n'=>$this]); } function recuperarMemoria() { $this->nNF = $_SESSION['vetor']['nNF']; $this->xNome = $_SESSION['vetor']['xNome']; $this->previa = $_SESSION['vetor']['previa']; $this->codp = $_SESSION['vetor']['codp']; $this->vNF = $_SESSION['vetor']['vNF']; $this->difAliqICMS = $_SESSION['vetor']['difAliqICMS']; $this->soma = $_SESSION['vetor']['soma']; $this->inativos = $_SESSION['vetor']['inativos']; } } arquivo nfView.php <?php include('menuView.php'); ?> <script>btMenu.innerHTML='NF Fornecedor';document.title="NF Fornecedor"</script> <?php if($n->modal[0]): ?> <div class="fixed inset-0 flex items-center justify-center z-10" style="background-color: rgba(243,244,246,0.5)"> <div class="bg-white p-6 rounded shadow-lg"> <div class=w-[300px]> <div class="w-[300px] flex items-center border rounded overflow-hidden"> <label for=custoatual class="px-4 py-2 bg-gray-100 text-gray-700 text-sm whitespace-nowrap"> Custo Atual </label> <input class="flex-grow px-4 py-2 bg-white text-sm text-gray-900 placeholder-gray-400 focus:outline-none" id=custoatual value=<?=$n->previa[$n->indicador]['custoatual']?>> </div> <div class="w-[300px] mt-2 flex items-center border rounded overflow-hidden"> <label for=custoanterior class="px-4 py-2 bg-gray-100 text-gray-700 text-sm whitespace-nowrap"> Custo Anterior </label> <input class="flex-grow px-4 py-2 bg-white text-sm text-gray-900 placeholder-gray-400 focus:outline-none" id=custoatual value=<?=$n->previa[$n->indicador]['custoanterior']?>> </div> <div class="flex gap-4 mt-2"> <button class="px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700"> Alterar </button> <button class="px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700"> Cancelar </button> </div> </div> </div> </div> <?php endif; ?> <?php if($n->modal[1]): ?> <div class="mb-3 w-[530px]"> <form method=post enctype="multipart/form-data" action="?NF.montarVetor"> <label for=arquivo class=form-label>Escolha o arquivo XML</label> <input type=file name=arquivo class=form-control id=arquivo onchange=submit()> </form> </div> <?php endif; ?> <?php if($n->modal[2]): ?> <div class="flex"> <div class="w-[530px]">NF <?=$n->nNF." ".substr($n->xNome,0,10)." codp ".$n->codp?></div> <div class="w-[100px] text-right"><?=dec($n->vNF)?></div> <?php if(count($n->inativos)): print_r($n->inativos); endif;?> </div> <?php if($n->difAliqICMS!==0): ?> <div class="flex"> <div class="w-[530px] text-right">Diferença de Alíquota de ICMS</div> <div class="w-[100px] text-right"><?=dec($n->difAliqICMS)?></div> </div> <div class="flex"> <div class="w-[530px] text-right">Total a conferir</div> <div class="w-[100px] text-right"><?=dec($n->difAliqICMS+$n->vNF)?></div> </div> <?php endif; ?> <?php if($n->modal[3]): ?> <div class="flex bg-gray-200"> <div class="w-[50px]">Cforn</div> <div class="w-[50px] text-right">Cod</div> <div class="w-[318px] ml-1">Produto</div> <div class="w-[50px] text-right">Qt</div> <div class="w-[80px] text-right">Custo</div> <div class="w-[80px] text-right font-semibold" onclick="location.replace('?NF.CFOP')"> Total </div> </div> <?php foreach($n->previa as $index => $p): ?> <div class="flex odd:bg-gray-200"> <div class="w-[50px] truncate"><?=$p['codforn']?></div> <div class="w-[50px] text-right"><?=$p['codprod']?></div> <div class="w-[318px] ml-1 truncate"><?=$p['prod']?></div> <div class="w-[50px]"> <form method=post action=?NF.qt> <input name=qt value='<?=$p['qt']?>' class="w-[50px] text-right text-gray-500 font-semibold bg-transparent" size='1' onchange=submit()> <input type=hidden name=id value='<?=$index?>'> </form> </div> <div class="<?=$p['cclass']?>" onclick="location.replace('?NF.atualizar.<?=$index?>')"> <?=dec($p['custoatual'])?> </div> <div class="w-[80px] text-right"><?=dec($p['custototal'])?></div> </div> <?php endforeach; ?> <?php endif; ?> <?php if($n->modal[4]): ?> <div class="flex odd:bg-gray-200"> <div class="w-[50px] text-right">Cforn</div> <div class="w-[50px] text-right">Cod</div> <div class="w-[318px] ml-2">Produto</div> <div class="w-[50px] text-right">CFOP</div> <div class="w-[100px] text-right font-semibold" onclick="location.replace('?NF.nfBasico')">NCM</div> </div> <?php foreach($n->previa as $p): ?> <div class="flex odd:bg-gray-200"> <div class="w-[50px] text-right truncate"><?=$p['codforn']?></div> <div class="w-[50px] text-right"><?=$p['codprod']?></div> <div class="w-[318px] ml-2 truncate"><?=$p['prod']?></div> <div class="<?=$p['fclass']?>" onclick="atualizar(<?=$p['cfop']?>,<?=$p['codprod']?>)"> <?=$p['cfop']?> </div> <div class="<?=$p['nclass']?>"><?=$p['ncm']?></div> </div> <?php endforeach; ?> <?php endif; ?> <div class="odd:bg-gray-200 flex"> <div class="w-[530px] flex items-center border rounded overflow-hidden"> <label for=lcto class="px-4 py-2 bg-gray-100 text-gray-700 text-sm whitespace-nowrap">Enviar para </label> <input class="flex-grow px-4 py-2 bg-white text-sm text-gray-900 placeholder-gray-400 focus:outline-none" id=lcto placeholder="Lançamento" onchange="wire('incluir.'+this.value)"> </div> <div class="w-[100px] text-right"><?=dec($n->soma)?></div> </div> <?php endif; ?>
  10. O Livewire é muito engenhoso, ele coloca a classe e a view no mesmo ambiente. Pensei em fazer a mesma coisa com o PHP com a ajuda do Copilot, e hoje aprendi um truque novo: function inicio() { return view('contadorView',['contador'=>$this]); } Isso é bem engenhoso, eu jamais chegaria nesse código por conta própria. A seguir, a listagem que tenta imitar o tutorial do incremento que aparece na home page do Livewire: arquivo contador.php <?php session_start(); class Contador { function __construct() { if (!isset($_SESSION['contador'])) { $_SESSION['contador'] = 0; } } function handleAjax() { echo $this->incrementar(); exit; } function incrementar() { $_SESSION['contador']++; return $_SESSION['contador']; } function inicio() { return view('contadorView',['contador'=>$this]); } function valor() { return $_SESSION['contador']; } } arquivo contadorView.php <!DOCTYPE html> <html> <head> <title>Contador com Classe</title> </head> <body> <div id="contador">Contador: <strong><?= $contador->valor() ?></strong></div> <button onclick="incrementar()">Incrementar</button> <script> function incrementar() { fetch('?Contador.handleAjax') .then(response => response.text()) .then(novoValor => { document.getElementById('contador').innerHTML = `Contador: <strong>${novoValor}</strong>`; }); } </script> </body> </html> arquivo incrementa.php <?php session_start(); $_SESSION['contador'] = ($_SESSION['contador'] ?? 0) + 1; ?> <p>Contador: <strong><?= $_SESSION['contador'] ?></strong></p> <button onclick="incrementar()">Incrementar</button> arquivo index.php <?php function view($arquivo, $array = null) { if (!is_null($array)) { foreach ($array as $var => $value){ ${$var} = $value; } } ob_start(); include $arquivo . ".php"; ob_flush(); } spl_autoload_register(fn ($class) => require str_replace('\\', DIRECTORY_SEPARATOR, strtolower($class)) . '.php'); if($_GET) { $rota = key($_GET); $segmentos=explode('_',$rota); $nomeControle=$segmentos[0]; $metodo=$segmentos[1]; $parametro=$segmentos[2] ?? $controle=new $nomeControle(); $controle->$metodo($parametro); } else { header('location:?Contador.inicio'); } Esse código é bem difícil de entender e fazer manutenção. O Livewire é pura mágica, graças a ele eu consegui fazer um monte de "modal". Claro que dá para fazer modal no PHP com a ajuda do Copilot, o problema é que eu não sei como apurar um código feito em JavaScript, por mais que eu me esforce não consigo imaginar o que exatamente o comando "fetch( )" faz.
  11. No mês passado, enfrentei o problema da diferença de um centavo entre o meu relatório e o da Bling, consegui resolver com a ajuda da função do PHP round( ) mais um epsilon de 0.0001. Hoje é Páscoa, e o coelhinho não trouxe o ovo, mas trouxe uma diferença de R$ 0,01 entre o meu relatório da previsão com o relatório da venda. Eu fiquei indignado. A minha saída foi entrar direto no MySQL e alterar o valor do pedido de 21.025 para 21.03, e assim consegui fazer o relatório da previsão bater com o relatório da venda. Foi aí que eu percebi que usei a função no lugar errado, ao invés de usar a função na consulta o certo é usar a função no momento do cálculo do item. O erro está aqui: $total = 0.15 x 3.50 = 0.525, o certo é $total=round(0.15 x 3.50,2)=0.53. O PHP é capaz de calcular com duas casas decimais. Três casas é pedir demais!
  12. Olá, gostaria de uma avaliação no portal http://www.vipcomsistemas.com.br nos quesitos: Navegabilidade usabilidade responsivo objetividade Obrigado a todos
  13. Pessoal estou com problema, Estou tentando criar um sistema de acesso com ajax e php, o formulário envia dados para o ajax e o ajax envia dados para o controler Essa a pagina HTML home.html - pagina de login <!doctype html> <html lang="pt-BR"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="CSS/login.css" /> </head> <body> <div id="content"> <form id="formLogin" name="formLogin" action="CONTROLER/controler-acesso.php"> <label>Usuário:</label> <input type="text" name="usuario" /> <label>Senha:</label> <input type="password" name="senha" /> <input type="button" id="btnLogin" value="Conectar" /> </form> <div id="message"></div> </div> </body> <script src="http://code.jquery.com/jquery-2.0.3.js"></script> <script src="JS/Controle.js"></script> </html> Consultar.js - script /** * Created by Hugo Guedes on 15/03/2017. */ // Função Login, Recebe os dados do formulario e enviar para o controler verificar se existe $(document).ready(function () { $('#btnLogin').click(function () { $.post( $('#formLogin').attr('action'), $('#formLogin').serialize() ) .done(function (d) { if(d == 'success'){ window.location='index.html'; msg = "<p class='success'>Sucesso!</p>"; }else{ msg = "<p class='error'>Usuario e/ou Senha invalida</p>"; } $('#message').html(msg); }) .fail(function (r) { $('#message').html("Falha") }); }); }); controle-acesso.php <?php @$nome = isset($_POST['usuario']); @$senha = isset($_POST['senha']); if ($nome == 'hugo' and $senha == 'pispa'){ echo "Foi"; }else{ echo "Erro"; } ?> O problema é que ao clickar no botão não envia nada, parece que o botao esta desativado.
  14. Estou com um problema na paginação. A primeira página funciona muito bem, mas quando clico na pagina seguinte, percebi que a variável responsável pela busca, está perdendo o valor, ficando em branco. Agradeceria muito se puderem me ajudar nesse problema. o código está abaixo. <?php include_once "mainCity.php"; ?> <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Cidades / Estados</title> <link rel="stylesheet" href="adm_css/admCity.css" /> </head> <body> <main> <div class="main-container"> <div class="cities-container"> <div class='cidade-container'> <table> <thead> <tr id="coluns"> <th id="id">ID</th> <th id="cidade">Cidade / Estado</th> <th id="opcoes">Opções</th> </tr> </thead> <?php $estado = htmlspecialchars(base64_decode(isset($_GET['e']) ? $_GET['e'] : ""), ENT_QUOTES); echo 'Estado: '.$estado; $sql = "SELECT * FROM cidades WHERE uf = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param('i', $estado); $stmt->execute(); $result = $stmt->get_result(); $porPagina = 12; //registros por página $totalRegistros = mysqli_num_rows($result); //total de registros encontrados $totalPaginas = ceil($totalRegistros / $porPagina); //quantas páginas serão exibidas $paginaAtual = isset($_GET['pagina']) ? $_GET['pagina'] : 1; $indicePrimeiroRegistro = ($paginaAtual - 1) * $porPagina; $resultadosPaginados = "SELECT * FROM cidades WHERE uf = ? ORDER BY nome ASC LIMIT $indicePrimeiroRegistro, $porPagina"; $stmt = $conn->prepare($resultadosPaginados); $stmt->bind_param('i', $estado); $stmt->execute(); $resultadoPaginado = $stmt->get_result(); while ($linha = $resultadoPaginado->fetch_assoc()) { $idCidade = $linha['id']; $nomeCidade = $linha['nome']; $c = base64_encode($idCidade); echo '<thead> <tr id="list"> <th id="id">'.$idCidade.'</th> <th id="cidade"><a href="admEditCity.php?c='.$c.'">'.$nomeCidade. '</a></th>'; echo '<th id="opcoes"><a href="admEditCity.php?c='.$c.'"><i class="bi-pencil-square"></i></a></th> </tr> </thead>'; } ?> </table> </div> <div class='pagination-container'> <!-- Exibe a paginação --> <ul class="pagination"> <?php for ($pagina = 1; $pagina <= $totalPaginas; $pagina++) { echo '<li class=page-item' .($pagina == $paginaAtual ? 'active' :''). '"><a class="page-link" href="?pagina=' .$pagina.'">' .$pagina .'</a></li>'; } ?> </ul> </div> </div> </div> </main> <footer> <?php include_once '../footer.html'; ?> </footer> </body> </html>
  15. Estou tendo dificuldade de passar essas querys por objeto: A linha return $listarProvas; do arquivo Prova.php não repassa as variáveis $prova1 e $prova2 chamadas na linha $listar_questoes = $listar_questoes->ListarProvas(); do arquivo prova.php. Arquivo onde se encontra a função: Prova.php <?php Class Provas { public function ListarProvas() { $objConexao = new Conexao(); $conexao = $objConexao->getConexao(); $sql = "select * from questoes where Id = 1"; $resposta = $conexao->query($sql); $prova1 = $resposta->fetch_assoc(); $sql = "select * from questoes where Id = 2"; $resposta = $conexao->query($sql); $prova2 = $resposta->fetch_assoc(); $listarProvas = new Provas($prova1,$prova2); return $listarProvas; } } ?> Arquivo onde os resultados devem ser apresentados prova.php <?php $listar_questoes = new Provas(); $listar_questoes = $listar_questoes->ListarProvas(); Questão 1: echo (isset ($prova1["Questao"])?$prova1["Questao"]:""); (A) echo(isset ($prova1["Alt_A"])?$prova1["Alt_A"]:""); (B) php echo(isset ($prova1["Alt_B"])?$prova1["Alt_B"]:""); (C) php echo(isset ($prova1["Alt_C"])?$prova1["Alt_C"]:""); (D) php echo(isset ($prova1["Alt_D"])?$prova1["Alt_D"]:""); (E) php echo(isset ($prova1["Alt_E"])?$prova1["Alt_E"]:""); Questão 2: echo (isset ($prova2["Questao"])?$prova2["Questao"]:""); (A) echo(isset ($prova2["Alt_A"])?$prova2["Alt_A"]:""); (B) echo(isset ($prova2["Alt_B"])?$prova2["Alt_B"]:""); (C) echo(isset ($prova2["Alt_C"])?$prova2["Alt_C"]:""); (D) echo(isset ($prova2["Alt_D"])?$prova2["Alt_D"]:""); (E) echo(isset ($prova2["Alt_E"])?$prova2["Alt_E"]:""); ?>
  16. Estou tentando criar um plugin pro limesurvey que consiste em pegar os funcionários do chefe logado e adiciona-los em uma one choice para ser realizado uma avaliação do funcionário da vez. Porém, estou com um certo problema ao adicionar as opções na question. A question já foi criada e tem um certo código ($questionCode), logo pegando esse código tento adicionar os funcionários de uma API externa ($options). Alguém já fez algo parecido que possa me ajudar? De primeira tentei colocar tabela de questions mas descobri que talvez devesse adicionar na de asnwers. Porém, parece existir outra forma utilizando o js inserido do código fonte da questão. https://manual.limesurvey.org/Workarounds:_Manipulating_a_survey_at_runtime_using_Javascript#Update_for_LimeSurvey_2.05.2B Qual seria a melhor forma? private function updateQuestionOptions($questionCode, $options) { $event = $this->getEvent(); $surveyId = $event->get('surveyId'); $questionId = $this->getQuestionIdByCode($surveyId, $questionCode); if ($questionId) { $optionValues = []; foreach ($options as $data) { foreach ($data as $option) { $optionValues[] = $option['first_name'] . " " . $option['last_name']; } } $this->setQuestionOptions($questionId, $optionValues); } } private function getQuestionIdByCode($surveyId, $questionCode) { $sql = "SELECT * FROM {{questions}} WHERE sid = :surveyId AND title = :questionCode"; $result = Yii::app()->db->createCommand($sql) ->bindValue(':surveyId', $surveyId) ->bindValue(':questionCode', $questionCode) ->queryRow(); return $result['qid'] ?? null; } private function setQuestionOptions($questionId, $options) { $optionValues = implode("\n", $options); // $sql = "UPDATE {{questions}} SET defaultvalue = :optionValues WHERE qid = :questionId"; // Yii::app()->db->createCommand($sql) // ->bindValue(':optionValues', $optionValues) // ->bindValue(':questionId', $questionId) // ->execute(); //$sql = "SELECT * FROM {{answers}}"; //$result = Yii::app()->db->createCommand($sql)->queryAll(); //print_r($result); //adicionar optionValues na question }
  17. Montei um formulário para cadastrar notícias que vão aparecer no sistema. O formulário, input no banco, pesquisa tudo certo, só empaquei numa coisa..kkk A notícia tem parágrafos, quebra de linha entre parágrafos etc. No banco está gravando direitinho com as quebra na consulta volta certo direto no BD, só que quando monto a pagina de retorno vem como se fosse só uma linha. Como fazer ele respeitar como foi cadastrado no banco, com parágrafos, quebra de linhas etc? Formulário de Imput: <div class="form-group"> <label class="col-sm-12 control-label"><h4>Conteúdo da Notícia</h4></label> <div class="col-sm-8"> <textarea class="form-control" rows="5" cols="4" id="conteudo" name="conteudo" placeholder="Digite o conteúdo da nova enquete"></textarea> </div> Consulta: <?php $id=$_GET['id_noticia']; require ("conexao.php"); $bd = mysql_select_db("db_postagens"); $sql = "SELECT * FROM tb_noticia where cd_noticia = '$id'"; $resultado = mysql_query($sql); while($linha = mysql_fetch_array($resultado)) { ?> Pegando o Resultado e montando a pagina de retorno: <section id="news" style="background-color: white; padding: 20px;"> <div class="row featurette"> <div class="col-md-7" id='<?php echo $linha['nm_noticia']?>'> <h1 class="featurette-heading"> <?php echo $linha['nm_noticia']?></h1> <hr> <p class="lead"><p Align="justify"><?php echo $linha['ds_noticia'];?></p> </div> <div class="col-md-5 col-sm-12"> <?php echo "<img class='featurette-image img-fluid mx-auto' style='max-height:300px; min-width: 90%;' src='admNoticias/uploads/".$linha['nm_imagem_noticia']."'>";?> </div> </div>
  18. Olá, Alguém sabe me dizer como faço a mudança nessa programação abaixo para exibir texto nessa programação em vez de numero ? <? = number_format($sorteio['valor'], 2, ",", ".") ?>
  19. Olá pessoal! sou novo aqui no fórum e iniciante em php. tenho uma dúvida e preciso de ajuda... bom é o seguinte. tenho uma pagina php com um formulário html com os campos ano; estado; nº de arvores cortadas; e volume. e tenho um outro arquivo php com uma classe com as devidas funções que tratarão os dados recebidos do formulário html. ainda tenho uma outra pagina que mostrarão os resultados processados pelas funções da classe citada acima. o problema é que não estou conseguindo fazer essas paginas se comunicarem. Em suma: o arquivo calculadora.php envia dados para a classe reflorestamento.php que retorna os resultados para resultado.php
  20. Venho a baixo depois de muitas pesquisas nos foruns, etc. juntando um script aqui outro ali, e fui montando o sistema que esta funcionando 100%, mas gostaria da ajuda dos senhores mais experientes com a melhoria do mesmo sendo assim decidi postar ele completo pra voces. para ver funcionando e testar.. USANDO PHP 7 e PDO e mysqli... obs. tem um sistema de login tb. pra proteger um pouco de curiosos.. Ola.. baixei a versao online limpei o banco de dados, e modifiquei os arquivos de conexao pra conexao local. usando o Xamp crie o banco de dados polo, carregue o arquivo polo.sql que ele vai criar as tabelas login: [email protected] senha: 123 qualquer alteração que fizer por favor poste aqui pra galera ok. novo link de download.. https://drive.google.com/drive/folders/1b4eWmDi1bw5YxUuQnEvIZqqOsj9Zbmvp?usp=sharing
  21. Não sei o que fazer, sou novo em programação, então fica difícil. alguma sugestao?
  22. Pessoal como faço uma condição para evitar ter o mesmo usuário cadastrado mais de uma vez no BD?
  23. Boa tarde Não estou familiarizado com WSDL Trata-se de uma empresa de logistica com cotação online Gostaria de uma ajuda, se possível, para acessar as informações usando PHP https://ssw.inf.br/ws/sswColeta/index.php?wsdl Muito obrigado <definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:sswinfbr.sswColeta" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:sswinfbr.sswColeta"> <types> <xsd:schema targetNamespace="urn:sswinfbr.sswColeta"> <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/> </xsd:schema> </types> <message name="coletarRequest"> <part name="dominio" type="xsd:string"/> <part name="login" type="xsd:string"/> <part name="senha" type="xsd:string"/> <part name="cnpjRemetente" type="xsd:string"/> <part name="cnpjDestinatario" type="xsd:string"/> <part name="numeroNF" type="xsd:string"/> <part name="tipoPagamento" type="xsd:string"/> <part name="enderecoEntrega" type="xsd:string"/> <part name="cepEntrega" type="xsd:integer"/> <part name="solicitante" type="xsd:string"/> <part name="limiteColeta" type="xsd:dateTime"/> <part name="quantidade" type="xsd:integer"/> <part name="peso" type="xsd:decimal"/> <part name="observacao" type="xsd:string"/> <part name="instrucao" type="xsd:string"/> <part name="cubagem" type="xsd:decimal"/> <part name="valorMerc" type="xsd:decimal"/> <part name="especie" type="xsd:string"/> <part name="chaveNF" type="xsd:string"/> <part name="cnpjSolicitante" type="xsd:string"/> <part name="nroPedido" type="xsd:string"/> </message> <message name="coletarResponse"> <part name="return" type="xsd:string"/> </message> <portType name="sswinfbr.sswColetaPortType"> <operation name="coletar"> <documentation>Realiza o pre cadastro de coleta no sistema da transportadora.</documentation> <input message="tns:coletarRequest"/> <output message="tns:coletarResponse"/> </operation> </portType> <binding name="sswinfbr.sswColetaBinding" type="tns:sswinfbr.sswColetaPortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="coletar"> <soap:operation soapAction="urn:sswinfbr.sswColeta#coletar" style="rpc"/> <input> <soap:body use="encoded" namespace="urn:sswinfbr.sswColeta" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body use="encoded" namespace="urn:sswinfbr.sswColeta" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <service name="sswinfbr.sswColeta"> <port name="sswinfbr.sswColetaPort" binding="tns:sswinfbr.sswColetaBinding"> <soap:address location="https://ssw.inf.br/ws/sswColeta/index.php"/> </port> </service> </definitions>
  24. Olá. Por favor pessoal gostaria de uma ajuda em um código. Se o usuário colocar uma determinada data no campo 'Data Processo' e essa data for inferior ou igual a Data de Defesa ( que já está na tela), marcar o radio button Tempestivo caso contrário Intempestivo. function VerificarTempestividade(procDTPROCESSO, vecto) { var dtProcesso = new Date(procDTPROCESSO); var dtVecto = new Date(item.vecto); var radioTempestivo = document.getElementById("procCONDICAOT"); var radioIntempestivo = document.getElementById("procCONDICAOI"); if (dtProcesso <= dtVecto) { radioTempestivo.checked = true; radioIntempestivo.checked = false; } else { radioTempestivo.checked = false; radioIntempestivo.checked = true; } } {if $dataProcesso == 'M'} <div class="form_campo"> <div id="campo_tit" class="campo_tit">Data do Processo:</div> <div id="campo_edi"> <input id="procDTPROCESSO" name="procDTPROCESSO" value="{$procDTPROCESSO}" type="text" style="width:110px" title="Data do Processo" maxlength="10" onkeypress="admtjs_mascara(this, admtjs_mascara_data)" onblur="admtjs_validamascara(this, admtjs_mascara_data, false)" onchange="VerificarTempestividade(this.value, '{$vecto}')" accept="validar"/> </div> </div> {/if}
×
×
  • Criar Novo...