FORÇAR DOWNLOAD DE ARQUIVO COM JAVASCRIPT E LARAVEL PHP

Tenho um arquivo PDF hospedado no servidor onde ao clicar em um link no meu site é executada uma função javascript para baixar o PDF. Os browses atuais já tem o recurso para exibir o PDF em uma nova aba dentro do próprio browses, e por este motivo o arquivo PDF não baixa mais automaticamente, porém estava com uma demanda onde ao clicar no link seria necessário forçar o download do PDF paro o dispositivo do usuário e não exibir o mesmo no browser. Depois de muitas tentativas cheguei neste código que resolveu meu problema do dia.

No Front-end:


<a onclick="donwloadArquivo()" href="#">Baixar arquivo PDF</a>

<script>
donwloadArquivo () {
window.open('http://localhost:8000/api/forcar-download-arquivo', '_blank')
}
</script>

No Back-end:

<?php

public function forcarDownloadArquivo(){
// Caminho real do arquivo PDF
$filePath = public_path('download/Arquivo.pdf');

// Verifique se o arquivo realmente existe
if (file_exists($filePath)) {

$headers = [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="downloaded_file.pdf"',
];

return response()->download($filePath, 'Novo_Nome_Arquivo.pdf', $headers);

} else {
// Caso o arquivo não exista, você pode retornar uma resposta de erro ou redirecionar, conforme necessário.
return response()->json(['error' => 'Arquivo não encontrado'], 404);
}
}

?>

DESABILITAR FORMATAÇÃO AUTOMÁTICA AO SALVAR DO VS CODE E ESLINT

Após seguir esses passos abaixo, será desabilitado completamente a formatação automática do vs code e do ESLint ao salvar.

1- Instalar extensão ESLint:


2- Tecle Ctrl + Shift + P e pesquisar por Open User Settings


3- Abrir Menu Extensões e submenu ESLint e deixar como na imagem abaixo:


4- Abrir Menu Editor de Texto e submenu Formatação e deixar como na imagem abaixo:

5- Tecle Ctrl + ,(virgula) escreva a palavra formate na pesquisa e deixa as marcações da forma como na imagem abaixo: 

Desta forma, as formatações não serão aplicadas ao salvar.






MULTISELECT VUE.JS

Precisei de um código multselect simples em vue.js e não encontrava, então resolvi desenvolver este, onde a unica biblioteca importada foi a do VUE.JS. Veja o exemplo abaixo.

NO HTML
 
<div id="app">
    <select @change="selecionarOpcaoComboGraduacao($event)" id="graduacao">
        <option value="">--Selecione a graduação--</option>
        <option v-for="(v,index) in listaGraduacao" :value="v.id">{{v.nome}}</option>
    </select>
    <br />
 <div v-if="opcaoSelecionadaComboGraduacao.length>0">
 <table>
  <tr v-for="(v, indice) in opcaoSelecionadaComboGraduacao">
     <td >
      <input type="hidden" name="opcaoSelecionadaComboGraduacao[]" :value="v.id" />
       {{v.nome}}
     </td>
     <td> <span @click="removerOpcaoSelecionadaComboGraduacao(indice)">
                <button title="remover">X</button> </span></td>
   </tr>
  </table>
 </div>
</div>
NO JAVASCRIPT 
 <script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script> <script> new Vue({ el: "#app", data: { graduacao: '', listaGraduacao: [], opcaoSelecionadaComboGraduacao: [], }, created() { this.carregarGraduacaoEstatica(); //this.carregarGraduacaoDinamica(); }, methods: { carregarGraduacaoEstatica(){ this.listaGraduacao = [ {id: 1, nome: "ENGENHARIA"}, {id: 2, nome: "DIREITO"}, {id: 3, nome: "TECNOLOGIA"}, {id: 4, nome: "REDES"}, {id: 4, nome: "ADMINISTRAÇÃO"}, ] }, carregarGraduacaoDinamica(){ fetch('consulta-graduacao.php') .then(response => response.json()) .then(response => { this.listaGraduacao = response; })}, selecionarOpcaoComboGraduacao(e) { const indice = document.querySelector("#graduacao").selectedIndex; this.opcaoSelecionadaComboGraduacao.push({ id: e.target.value, nome: document.querySelector("#graduacao").options[indice].text }); }, removerOpcaoSelecionadaComboGraduacao(indice) { this.opcaoSelecionadaComboGraduacao.splice(indice, 1); }, } }) </script>


Se este Código do Dia lhe ajudou ou tiver qualquer dúvida ou encontrar algum erro deixe seu comentário que irei responder assim que possível. 

Obrigado pela visita.

 VAAALEU 😎👍

CONCATENAR RESULTADOS DA SUBCONSULTA PARA NÃO DUPLICAR O RESULTADO DA CONSULTA PRINCIPAL SQL

Precisei fazer uma consulta sql onde teria que trazer no mesmo resultado informações da tabela relacionada USUARIO_PARENTESCO, que continha mais de um registro relacionado a uma só linha da tabela USUARIO. De forma que o resultado da consulta principal não viesse com o NOME_USUARIO duplicado devido a tabela relacionada USUARIO_PARENTESCO retornar mais de um registro relacionada através da coluna ID_USUARIO, ao invés de usar JOIN pra relacionar a consulta principal a outra tabela, criei a subconsulta que retorna todos NOME_PARENTESCO separados por vírgula relacionados ao NOME_USUARIO.

 

Segue o exemplo abaixo.

 

  • TABELAS: 

 

---------------------------------------------
|                    USUARIO                                 |
---------------------------------------------
ID_USUARIO | NOME_USUARIO 

            01           | Nayron 
            02           | Eliane
            03           | Emanuel     


 --------------------------------------------
|       USUARIO_PARENTESCO                 |
---------------------------------------------
ID  | ID_USUARIO | NOME_PARENTESCO   
01  |             01           | Marcos    
02  |             01           | Rosilene
03  |             02
           | Jorge
04  |             02           | Alice
05  |             03           | Saymon

06  |             03           | Ayumi

 

  • CONSULTA: 

 

SELECT DISTINCT u.NOME_USUARIO,
                (
                COALESCE(
                                        (SELECT array_to_string(
                                                ARRAY(
                                            SELECT up.NOME_PARENTESCO from USUARIO_PARENTESCO up WHERE up.ID_USUARIO = u.ID_USUARIO
                                                 ),
                                            ',')
                                         ),
                                    '')
                ) AS NOME_PARENTESCO
FROM USUARIO u

 

  • RESULTADO DA CONSULTA COM SUBCONSULTA:

 

NOME_USUARIO | NOME_PARENTESCO
Nayron                      | Marcos,Rosilene
Eliane                         | Jorge,Alice
Emanuel                    | Saymon,Ayumi


Se fosse usado o JOIN para relacionar a consulta ao invés da subconsulta, o retorno mostraria duplicidade no NOME_USUARIO, como mostra o resultado abaixo:

 

NOME_USUARIO | NOME_PARENTESCO
Nayron                       | Marcos
Nayron                       | Rosilene
Eliane                          | Jorge
Eliane                          | Alice
Emanuel                     | Saymon
Emanuel                     | Ayumi 

 

Se este Código do Dia lhe ajudou ou tiver qualquer dúvida ou encontrar algum erro deixe seu comentário.que irei responder assim que possível. 

Obrigado pela visita.

VALEEEU 😎👍

 

AUTOCOMPLETE COM JQUERY E PHP SIMPLES E FÁCIL DE INSTALAR NO CÓDIGO HTML

Dessa vez precisei de um campo autocomplete na tag. Pesquisei pelo autocomplete do jquery, mas não obtive muito sucesso devido achar complicado a implementação para guardar o valor da opção escolhida, pois nem sempre o valor da opção selecionada é o mesmo do texto exibido no mesmo.

Veja o exemplo de como implementei no meu código. 

HTML: 
Aqui terá apenas que criar a tag select e adicionar no mesmo modelo identico abaixo, ressaltando que os atributos id e name da tag podem ser o nome que desejar, pois não irá impactar no autocomplete.

<select id="campo-select" name="campo-select" onclick="naytech_autocomplete(this.id)" style='width:100%;height:40px'>
                    <option>--SELECIONE--</option>
</select>


PHP:

Aqui criei um array com valores estáticos somente para mostrar o exemplo de como deve ficar o mesmo com os índices antes de retornar ao javascript. O nome dos índices é padrão, não podem ser alterados, já os seus valores podem ser alterados.

Só lembrando que esses valores também podem vim de uma consulta no banco de dados, arrumando o arrei do mesmo da forma que está abaixo antes de retornar ao javascript.

$texto = $_REQUEST['texto'];
$array[] = ['id_opcao'=>5,'opcao'=>"ActionScript"];
$array[] = ['id_opcao'=>10,'opcao'=>"AppleScript"];
$array[] = ['id_opcao'=>15,'opcao'=>"BASIC"];              
$array[] = ['id_opcao'=>20,'opcao'=>"ColdFusion"];
$array[] = ['id_opcao'=>25,'opcao'=>"Erlang"];
$array[] = ['id_opcao'=>30,'opcao'=>"Fortran"];

foreach($array as $k=>$v){
    if(stristr($v['opcao'],$texto)){
        $retorno[] = $v;
    }
}
exit(json_encode($retorno))

JAVASCRIPT


Este código é só copiar e colocar dentro do seu código javascript que está dentro arquivo onde contém o campo select. Nada pode ser alterado deste código.

function naytech_autocomplete(id){

////AQUI CRIA O CAMPO QUE SERÁ DIGITADO O TEXTO COM UM GIF LOAD CONCATENADO, LEMBRANDO DE COLOCAR O GIF NO CAMINHO CERTO INFORMADO NO IMG ABAIXO////////

$("#"+id).before("<input style='width:100%;height:40px' placeholder='digite tr&ecirc;s ou mais letras para buscar a op&ccedil;&atilde;o desejada' id='buscar-select' onkeypress=criarListaAutoComplete('"+id+"') ><img id='loadList' src='carregando.gif' style='display:none'/><ul style='list-style:none;margin:0;padding:0;background:#fff;overflow-x: auto;max-height:150px;' id='buscar-select-list' style='display:none;width:100%;border:1px solid #e0e0e0'></ul>");
$("#"+id).css("display","none");
$("#buscar-select").focus();

///////AQUI ENTRA QUANDO FOR APAGANDO O TEXTO DO CAMPO, CADA VEZ Q APAGAR UMA LETRA A CONSULTA É REFEITA
$('#buscar-select').keydown(function(e) {
if (e.keyCode === 8 || e.keyCode === 46) ///tecla de backspace e delete
        {
           $("#"+id).html("<option selected value=''>--SELECIONE--</option>");
           criarListaAutoComplete(id);
          }
});
                
}<!-- FECHA A FUNÇÃO naytech_autocomplete -->

 
function opcaoSelecionado(id,id_select){

////AQUI COLOCA NA TAG SELECT A OPCAO ESCOLHIDA. ESTE CAMPO FICA ESCONDIDO, POIS FICA APARECENDO SOMENTE O INPUT ONDE É DIGITADO O TEXTO DA PESQUISA, MAIS NA HORA DO SUBMIT O VALOR DA TAG SELECT É RECONHECIDO

            var texto = $("li#li_"+id).text();
            var cd = $("li#li_"+id).attr("value");
            $("#buscar-select").val(texto);
            $("ul#buscar-select-list").hide().html("");
            $("select#"+id_select).html('<option selected value="' +cd + '">' + texto + '</option>');
}<!-- FECHA A FUNÇÃO
opcaoSelecionado-->
       
function criarListaAutoComplete(id_select){
               setTimeout(function(){
                var texto = $("#buscar-select").val();
                var idSelect = $("#"+id_select).attr("id");
                if (texto.length >= 3) { ////limita a busca na base a partir de 3 letras digitadas
                    $.ajax({
                        url: "listar-opcoes-select.php",
                        data: {texto: texto},
                        type:"post",
                        dataType:"json",
                        beforeSend:function (){$("#buscar-select").focus();$("img#loadList").show();},
                        complete:function(){$("img#loadList").hide();},
                        success: function (resp) {
 ////////// O RETORNO DO PHP TEM QUE SER UM ARRAY COM ESSES ÍNDICES, EXEMPLO: $array[] = array("id_opcao"=>1,"opcao"=>"Primeira opcao").
                            $("ul#buscar-select-list").hide().html("");
                            if(resp.length>0){
                                    for (var i = 0; i < resp.length; i++) {
                                        $("ul#buscar-select-list").append('<li class="buscar-select-list-li" id="li_'+i+'" onclick=opcaoSelecionado('+i+',"'+idSelect+'") style="background:#eee;cursor:pointer;margin-bottom:5px;margin-left:7px;margin-top:5px;padding:10px;margin:0;border-bottom:1px solid #fff" value="'+ resp[i].id_opcao +'">' +  resp[i].opcao + '</li>');
                                    }
                                    
                                    $("ul#buscar-select-list").show();
                                    $("ul#buscar-select-list li").mouseover(function(){
                                        $(this).css({"background":"#ccc"})
                                    }).mouseout(function(){
                                        $(this).css({"background":"#eee"})
                                    })
                            }
                        }
                    })
                }else{
                  $("ul#buscar-select-list").hide().html("");  
                }
                },100)
}
<!-- FECHA A FUNÇÃO criarListaAutoComplete-->
 

Então é isso, é só copiar este código acima em azul nos seus respectivos lugares no seu projeto e seguir a descrição que vai dar tudo certo.

Se este código lhe ajudou deixe seu comentário.
Se ainda tiver qualquer dúvida
deixe seu comentário.

VALEEEU 😎👍
 

DEFINIÇÃO DE CONFIGURAÇÃO INI_SET PARA AUMENTAR MEMÓRIA E TEMPO DE UPLOAD DE ARQUIVO EM PHP

ini_set('memory_limit', '128M'); 

ini_set('upload_max_filesize', '128M'); 

ini_set('post_max_size', '128M'); 

ini_set('file_uploads', 'On'); 

ini_set('max_execution_time', '1800'); 

ini_set('file_uploads', 'On'); 

ini_set('session.gc_maxlifetime', '3600');

REMOVER TAGS DO MEIO DE UM TEXTO COM JAVASCRIPT

Precisava remover as TAGS concatenadas a um texto vindo do banco de dados antes de exibir no HTML, então usei a função javascript replace() passando como parâmetro expressão regular.

NO HTML: 

<div id="TEXTOCOMTAG">
        <span>TEXTO COM TAGS<b> CONCATENADOS</b></span>
</div>

NO JAVASCRIPT:
var textoLimpo = $("#TEXTOCOMTAG").html().replace(/<[^>]*>?/gm, ''); 

$("#TEXTOCOMTAG").html(textoLimpo);


Resultado no HTML:
<div id="TEXTOCOMTAG">TEXTO COM TAGS CONCATENADOS</div>
////todas as tags removidas que ficam dentro do elemento  id="TEXTOCOMTAG"

 

 

Então é isso, se este código lhe ajudou deixe seu comentário.
Se ainda tiver qualquer dúvida
deixe seu comentário.

VAAALEU 😎👍

 

FORÇAR QUEBRA DE PÁGINA MPDF PHP

Em uma função que gera um documento PDF com a biblioteca mPDF, precisei forçar a quebra de página ou passar para próxima página uma parte de uma lista de registros retornadas do banco de dados. Então encontrei a tag <pagebreak /> que supriu minha necessidade.

Segue o exemplo php com mpdf:

<?php  

 

####REGISTROS QUE SERÃO ESCRITOS NA PRIMEIRA FOLHA DO PDF##### 

 

$html = '
<table>
    <tr>
          <td><b>COLUNA DA TABELA 1</b></td>
    </tr>';

foreach ($arrayDados1 as $k => $v) { ////inserir os registros vindos do banco de dados no PDF

    $html .= '
        <tr>
             <td>'.$v['
RegistrosDaCol'].'</td>
        </tr>';

}
$html .= '</table>';

$html .= '<pagebreak />'; 
///// o pulo do gato, ou melhor, o pulo da página :D

 

####REGISTROS QUE SERÃO ESCRITOS NA SEGUNDA FOLHA DO PDF#####

 

$html .= '
<table>
    <tr>
          <td><b>COLUNA DA TABELA 2</b></td>
    </tr>';

foreach ($arrayDados2 as $k => $v) { ////inserir os registros no PDF vindos do banco de dados

    $html .= '
        <tr>
             <td>'.$v['RegistrosDaCol'].'</td>
        </tr>';

}
$html .= '</table>';

 

######CONFIGURAÇÕES INICIAIS DA BIBLIOTECA mPDF para gerar o documento PDF DO HTML ACIMA######

 

require_once 'mpdf/mpdf.php';
        
$mPDF = new mPDF('utf-8', 'A4-L', '', '', 15, 15, 70, 25, 10, 13); ///Codificação UTF-8, Gerar pdf nas dimessões A4 com "L" para informar que o A4 será na posição paisagem.

 

######PEGA O HTML ESCRITO ACIMA E GRAVA NO PDF######

 

$mPDF->WriteHTML($html);


######ADICIONA CABEÇALHO NO PDF######

 

$mPDF->SetHTMLHeader('
<div style="font-size:10px;float:left;width:400px">Gerado: '.date("d/m/Y").'</div>
<div style="font-size:10px;float:right;width:400px;text-align:right">Página - {PAGENO} de {nb}</div>') ;

######ADICIONA RODAPÉ NO PDF######

 

$mPDF->SetHTMLFooter("<p style='font-size:10px;text-align:center'>Rodovia Augusto Montenegro, - Belém – Pará<br />Fone: (91) 9999-9999</p>");

######DEFINI O NOME PADRÃO DO ARQUIVO PDF A SER GERADO######


$nomeArq = 'DOCUMENTO_PDF_GERADO_'.date('YmdHis').'.pdf';

 

######PROPRIEDADE DO mPDF para gerar o PDF passando a letra "D" para forçar o Browser a fazer o Download do arquivo PDF gerado######

 

$mPDF->Output($nomeArq, 'D');

 exit(); //// É NECESSÁRIO

 

?>

 

Então é isso, se este código lhe ajudou deixe seu comentário.

Se ainda tiver qualquer dúvida deixe seu comentário.

VAAALEU :D

 

Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081

Estava dando o seguinte erro após executar o comando react-native run-android para usar o emulador do Android Studio:

Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081

 Então, após muito pesquisar, executei as seguintes ações para resolver este problema:


Configurando SDK do Android no Windows

No Painel de Controle do Windows, abra o item “Sistema e Segurança” ou “Sistema”, clique em “Configurações avançadas do sistema”, selecione “Variáveis de ambiente” e clique no botão “Nova variável de ambiente”, indique o nome da variável como ANDROID_HOME, adicione o caminho do Sdk como mostrado na imagem abaixo:

Prompt

Na mesma janela de "Variáveis de ambiente" no Windows, clique na variável PATH e então em "Editar". Haverá uma lista de caminhos e você deve adicionar esses dois novos caminhos no fim da lista:

  1. %ANDROID_HOME%\platform-tools
  2. %ANDROID_HOME%\tools

Se sua versão do Windows for menor que a 10 sempre coloque ponto-e-virgula ";" no final dos caminhos para eles não se juntarem

 Agora, abra seu Prompt de Comando(CMS) como administrador e execute o seguinte comando:

C:\Android\Sdk\tools\bin> .\sdkmanager.bat "platform-tools" "platforms;android-27" "build-tools;27.0.3"

*Aceite todas licenças digitando y quando necessário. 

Após realizar as ações acima, tente novamente executar o comando no Prompt de Comando e verifique se não dará mais erros no emulador do Android Studio:

C:\NomeDoSeuProjetoReactNative_cli>react-native run-android


Caso ainda esteja ocorrendo o mesmo erro, então tente mais esse procedimento abaixo:
 

Baixe e instale o java jdk.
Após
a instalação, siga os passos abaixo.

1. Abra Configurações avançadas do sistema

No Painel de Controle do Windows, abra o item “Sistema e Segurança” ou “Sistema”, clique em “Configurações avançadas do sistema”.

2. Defina a variável de ambiente JAVA_HOME

Na “janela Propriedades do Sistema”, clique em “Variáveis ​​de Ambiente”

variáveis ​​de ambiente da janela de propriedades do sistema

variáveis ​​de ambiente da janela de propriedades do sistema

Em "Variáveis ​​do sistema", clique no botão "Novo ..." e insira JAVA_HOME como "Nome da variável" e o caminho para o diretório Java JDK em "Valor da variável"

Adicionar JAVA_HOME como variável de sistema

Adicionar JAVA_HOME como variável de sistema

3. Atualize o PATH do sistema

1. Na janela "Variáveis ​​de ambiente" em "Variáveis ​​do sistema" selecione o caminho

2. Clique em “Editar…”

3. Na janela “Editar variável de ambiente” clique em “Novo”

4. Digite  %JAVA_HOME%\bin

Atualizar caminho do sistema

Atualizar caminho do sistema

4. Teste sua configuração

Abra um novo prompt de comando e digite:

  1. echo% JAVA_HOME%

isto irá imprimir o diretório que JAVA_HOME aponta ou uma linha vazia se a variável de ambiente não estiver configurada corretamente

Agora digite:

  1. javac -version

isso imprimirá a versão do compilador java se a variável Path estiver definida corretamente ou “javac não é reconhecido como um comando interno ou externo ...” caso contrário. ATUALIZAÇÃO: nos comentários abaixo há várias sugestões para executar o prompt de comando como administrador caso veja a mensagem de erro. Certifique-se de tentar esta opção

Teste JAVA_HOME e caminho do sistema

Teste JAVA_HOME e caminho do sistema

Após realizar as ações acima, tente novamente executar o comando no Prompt de Comando e verifique se não dará mais erros no emulador do Android Studio:

C:\NomeDoSeuProjetoReactNative_cli>react-native run-android

 

CONSULTAS PARA LISTAR TODAS TABELAS DE UM BANCO DE DADOS

Precisei listar todas tabelas do meu banco de dados criado no MySQL, e o exemplo abaixo me foi muito útil.

Oracle

Para listar todas as tabelas:
SELECT tablespace_name, table_name, owner FROM dba_tables;

Para listar todas as tabelas do usuário corrente:
SELECT tablespace_name, table_name, owner FROM user_tables;

Para listar todas as tabelas às quais o usuário tem acesso (sendo ele o owner (dono) ou não):
SELECT tablespace_name, table_name, owner FROM all_tables;

MySQL

Para listar todas as tabelas
SHOW TABLES [from <nome do database>];
ou
SELECT table_schema, table_name, table_type FROM information_schema.tables [WHERE table_schema = <filtro>];

DB2

Para listar todas as tabelas:
db2 list tables for all

Para listar todas as tabelas para um determinado schema (banco):
db2 list tables for schema <nome do schema>

SQL Server

Para listar todas as tabelas de todos os catálogos e schemas:
SELECT table_catalog, table_schema, table_name, table_typeFROM information_schema.tables  [WHERE table_catalog = <filtro>];

PostgreSQL (PG)

Para listar todas as tabelas:
\l ou \dt

Para listar, somente, as tables do banco/schema atual:
\dt

IDENTIFICAR NAVEGADOR COM JAVASCRIPT

Utilizei esta função em um sistema web onde rodava melhor no browser Mozilla Firefox. Então caso o usuário tentasse entrar no sistema por outro browser, o sistema exibiria um alerta informando que o browser utilizado não estava homologado para rodar este sistema.

Segue a função javascript

function identific_nav(){ var nav = navigator.userAgent.toLowerCase(); if(nav.indexOf("msie") != -1){ var browser = "msie"; alert("Este browser("+browser+") não está homologado para rodar este sistema!"); }else if(nav.indexOf("opera") != -1){ var browser = "opera"; alert("Este browser("+browser+") não está homologado para rodar este sistema!"); }else if(nav.indexOf("mozilla") != -1){ if(nav.indexOf("firefox") != -1){ var browser = "firefox"; }else if(nav.indexOf("firefox") != -1){ var browser = "mozilla"; }else if(nav.indexOf("chrome") != -1){ var browser = "chrome"; alert("Este browser("+browser+") não está homologado para rodar este sistema!"); } }else{ alert("Navegador desconhecido!"); } } identific_nav()

ACRESCENTAR AUTOMATICAMENTE COM JAVASCRIPT ZERO A ESQUERDA DO VALOR DIGITADO NO CAMPO

Em um formulário, tenho um campo numérico onde só posso escrever até 3 números, sendo que se escrever somente um número, o campo automaticamente é preenchido com mais dois zeros a esquerda do valor digitado ou dependendo da quantidade de números digitados é acrescentado mais ou menos zeros a esquerda.

Veja o Exemplo de como implementar a função em seu código:

HTML
<input maxlength="3" type="text" onblur='zeroEsquerda(this,3)'>
/// Após digitar neste campo e clicar fora ou passar pra outro campo,  a função zeroEsquerda(this,3) é chamada e passa o objeto do campo e até quantos zeros poderão ser acrescentados a esquerda do número digitado, que nesse caso foi o "3".

FUNÇÃO JAVASCRIPT
function zeroEsquerda(objetoElemento, qtdZero){ qtdZero = qtdZero ? qtdZero : 0; ///se não informar qtdZero então não coloca zero a esquerda var zero = '' for(var i=1; i<=qtdZero; i++){zero += '0'} return objetoElemento.value = (zero + objetoElemento.value).slice(-qtdZero); }

Se este código foi útil ou tem alguma dúvida não esqueça de deixar seu comentário.

SUBSTITUIR ELEMENTO POR OUTRO COM JQUERY JAVASCRIPT

Precisei substitui um elemento por outro e a função jquery .replaceWith foi perfeita pra solucionar meu problema.

HTML:
<span id="Elemento-1"></span>
<div id="Elemento-2"></div>

JAVASCRIPT:
$("#Elemento-1").replaceWith("<div id='Elemento-3'></div>"); ///na linha acima estou pedindo pra substituir o elemento com o id="Elemento-1" pelo html <div id='Elemento-3'></div>
RESULTADO:
<div id="Elemento-3"></div>
<div id="Elemento-2"></div>

Se este código do dia foi útil ou tem alguma dúvida, deixe seu comentário.

REMOVER ESPAÇOS EM BRANCO DUPLICADOS OU REPETIDOS EM JQUERY JAVASCRIPT

Precisei de um comando em jquery para remover os espaços duplicados ou mais entre strings.
Pra quem gosta de expressão regular como eu, então vai gostar deste código. :D

$("#elemento_1").val($(#elemento_1).val().replace(/\s{2,}/g, ' '));
Remove mais de um espaço que tem repetido entre frases que estão no valor texto do #elemento_1 e atualiza o valor do #elemento_1 sem os espaços em branco repetidos, deixando somente um espaçamento entre as frases.

Se este código foi útil ou tem alguma dúvida não esqueça de deixar seu comentário.

VERIFICAR SE STRING CONTÉM SOMENTE NÚMEROS EM JAVASCRIPT

Hoje precisei desta função javascript para verificar se em uma string contém somente números.
A função parece simples mais na hora da correria é de grande ajuda.

function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); } isNumber('123'); // true isNumber('asda123'); // false

COMPARAR DUAS DATAS EM JAVASCRIPT

Uma forma simples e prática de comparar a data de hoje com uma data extraída de um campo input com o jquery $("#dataForm").val() de um formulário.

HTML:
<input id="dataForm" type="date" value="14/05/2020" />

JAVASCRIPT:
var dataForm = $("#dataForm").val().split("/"); var hoje = new Date(); var dataInformada = new Date(dataForm[2], dataForm[1] - 1, dataForm[0]); if (hoje < dataInformada) alerta{ ("Favor informe uma data igual ou menor a data de hoje."); $("#dataAbe").val(''); }

TRANSFERÊNCIA DE ARQUIVOS NO PHP VIA SFTP / SSH

TRANSFERÊNCIA DE ARQUIVOS NO PHP VIA SFTP / SSH

Em um dado momento no desenvolvimento de um sistema, foi preciso criar uma função para transferir arquivo de um servidor para outro, sendo que o servidor só dava suporte a transferência de arquivos via SSH. Foi então que desenvolvi esta função que funcionou perfeitamente.

///////////ENVIO VIA SSH////////
                $serverHost = seusite.com.br;
                $serverUser = 'seuLoginSFTP';
                $serverPass = 'senhaDoLoginSFTP';
                $diretorioLocal = 'arquivoTemporario/meuArquivo.txt'
                $diretorioRemoto = 'var/www/diretorioDestinoServidorExterno/meuArquivo.txt';

                /* Faz a conexão com o servidor remoto */
                if (!$ssh = @ssh2_connect($serverHost, 22)) {
                     SingletonPDO :: rollbackTrans();
                    $xml .= "<erro>ERRO AO ABRIR CONEXÃO SSH COM SERVER $servidor!</erro>";
                    die("$xml\n");
                }

                /* Faz a autenticação no servidor remoto */
                if (!@ssh2_auth_password($ssh, $serverUser, $serverPass)) {
                     SingletonPDO :: rollbackTrans();
                    $xml .= "<erro>ERRO AO TENTAR AUTENTICAR O USUARIO SSH AO SERVER $serverHost!</erro>";
                    die("$xml\n");
                }

                /**
                 * Copia o arquivo do servidor local para o servidor remoto.
                 * As permissões são opcionais
                 */
                if (!@ssh2_scp_send($ssh, $diretorioLocal, $diretorioRemoto, 0644)) {
                     SingletonPDO :: rollbackTrans();
                    $xml .= "<erro>ERRO AO ENVIAR ARQUIVO VIA SSH AO SERVIDOR $servidor! - $diretorioLocal - $diretorioRemoto</erro>";
                    die("$xml\n");
                }

///////////////////////////////////////

FUNÇÃO JQUERY WRAPALL() PARA ADICIONAR ELEMENTO PAI EM FILHO OU SEJA ACIMA DO ELEMENTO INFORMADO

FUNÇÃO JQUERY WRAPALL() PARA ADICIONAR ELEMENTO PAI EM FILHO OU SEJA ACIMA DO ELEMENTO INFORMADO Segue o Exemplo:

No HTML

<div id="PAI">Este elemento ainda não virou filho</div>

NO JAVASCRIPT

$("#PAI").wrapAll("<div id='PaiDoPai'>")
///observe que não precisa fechar a div(PaiDoPai) pois a função wrapAll ja sabe que o elemento PaiDoPai deve ser fechado após o elemento informado PAI

RESULTADO HTML

<div id='PaiDoPai'>
<div id="PAI">Este elemento ainda não virou filho</div>
</div>

DISPARAR AÇÃO APÓS TECLAR ENTER DENTRO DE IMPUT COM JQUERY

Segue o exemplo:

NO HTML
<input id="elementoInput" placeholder="Clique aqui e tecle enter" type="text" />

NO JAVASCRIPT jQuery('#elementoInput').keypress(function(event){ var keycode = (event.keyCode ? event.keyCode : event.which); if(keycode == '13'){ ////adiciona aqui a ação a ser executada após teclar enter. } });

PEGAR POSIÇÃO DO ELEMENTO FILHO COM MÉTODO INDEX() JQUERY

Precisei criar 3 abas que ao clicar em uma aba, exibi um conteúdo ligado ao título da aba clicada e da um hide nos demais conteúdos, ao clicar na segunda aba, exibe o conteúdo ligado a segunda aba e da hide na que tava aberta, e assim sucessivamente. Para saber qual conteúdo exibir quando clicava na aba, precisei pegar a posição da aba clicada que era igual a posição do conteúdo desta aba clicada.
Então conheci o método index() do jquery, que pega a posição do elemento filho de um determinado elemento pai.

Veja o código e o exemplo prático para entender melhor.

No HTML: 
<ul class="aba">
    <li style="cursor:pointer;">Aba 1</li>
    <li style="cursor:pointer">Aba 2</li>
    <li style="cursor:pointer">Aba 3</li>
</ul>
<div class="conteudo">
  <div style="display: none;"><b>Exibir Conteúdo da Aba 1</b></div>
  <div style="display: none;"><b>Exibir Conteúdo da Aba 2</b></div>
  <div style="display: none;"><b>Exibir Conteúdo da Aba 3</b></div>
</div>

NO JAVASCRIPT: $("ul.aba li").click(function(){ var index = $(this).index(); $("ul.aba li").css("color","black") $(this).css("color","blue") $("div.conteudo").children().hide() $("div.conteudo").children().eq(index).show() })
Veja o exemplo na prático abaixo clicando nas abas para que aparece o seu conteúdo.
  • Aba 1
  • Aba 2
  • Aba 3
Aqui Exibi o conteúdo da Aba 1, que foi a que você clicou.
Agora está exibindo o conteúdo da Aba 2
A aba 3 foi clicada, então aqui é exibido o conteúdo da Aba 3




Se este conteúdo te ajudou ou está com dúvida em algo relacionado a este assunto, por favor deixe seu comentário. Forte abraço!