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.