Tenho uma pequena aplicação em php que gera arquivos pdf com a MPDF e envia email com a PHPMAILER. De repente a app parou de enviar os emails e apresenta a seguinte mensagem de erro:
Error PHPMailer: SMTP Error: Could not authenticate.
Faço uso de um hotmail para a configuração do PHPMAILER.
Preciso criar uma Rotina onde o usuário possa buscar na Base de Dados de Produtos, tanto por Código e Descrição, ou seja:
- caso o usuário digita o Código, mostra os dados do Produto.
- caso o usuário digita a Descrição, mostra os dados do Produto
Fiz uma Rotina, onde o usuário digita a DESCRIÇÃO com a função AUTOCOMPLETE. <=== está funcionando certinho.
Minha dúvida é como faço para DIGITAR o Código e mostrar os dados também.
o meu AutoComplete na MODEL está assim.
public function autoCompleteProduto($q){
$this->db->select('*' )
->from('produtos')
->where('produtos.statusProd',1)
->like('descricao', $q)
->limit(5)
->order_by('descricao', 'ASC');
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row) {
$row_set[] = ['label' => str_pad($row['idProdutos'], '5', '0', STR_PAD_LEFT).' - '.$row['descricao'], 'id' => $row['idProdutos'], 'descricao' => $row['descricao'], 'cod_interno' => $row['cod_interno'], 'prd_unid' => $row['prd_unid'], 'estoque_atual' => $row['estoque_atual'] ];
}
echo json_encode($row_set);
}
}
no CONTROLLER está assim:
public function autoCompleteProduto()
{
$this->load->model('estoque/lancamentos_model');
if (isset($_GET['term'])) {
$q = strtolower($_GET['term']);
$this->lancamentos_model->autoCompleteProduto($q);
}
}
na VIEW está assim:
<div class="col-md-10">
<label for="idProdutos">Produto:</label>
<input type="hidden" name="idProdutos" id="idProdutos">
<input type="text" class="form-control" id="descricao" name="descricao"
style="font-size:15px; font-weight:bold;"
placeholder="Pesquisar por descrição do produto" disabled>
</div>
VIEW + JAVASCRIPT
//Função para trazer os Dados pelo o AutoComplete.
function resolveAutocomplete() {
$("#descricao").autocomplete({
source: "<?php echo base_url(); ?>estoque/lancamentos/autoCompleteProduto/",
minLength: 2,
select: function (event, ui) {
$("#idProdutos").val(ui.item.id);
$("#cod_interno").val(ui.item.cod_interno);
$("#descricao").val(ui.item.descricao);
$("#prd_unid").val(ui.item.prd_unid);
$("#estoque_atual").val(ui.item.estoque_atual);
$("#qtde").focus();
}
});
}
// inicia o autocomplete
resolveAutocomplete();
Grato,
Estou tentando criar um projeto laravel e está dando o seguinte erro
curl error 60 while downloading https://getcomposer.org/versions: SSL certificate problem: unable to get local issu
er certificate
Já tentei atualizar o composer, mas dá o mesmo erro acima.
Estou com uma dúvida de validação de INPUT com função moeda.
Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56
o problema é quando precisa atualizar o valor.
Quando o usuário atualizar o input fica assim: 1.234,
como faço para atualizar as casas decimais, conforme o valor for sendo alterado ?
o input está assim:
<div class="col-md-2">
<label for="">Valor Unitário</label>
<input type="text" class="form-control" id="estoqprod" name="estoqprod"
style="font-size:15px; font-weight:bold; width:100%; text-align:center;"
placeholder="0,00" OnKeyUp="calcProd();"
onkeypress="return(FormataMoeda(this,'.',',',event))" >
</div>
a função para formatar o input para moeda está assim:
obs.: a Função CalcProd está executando corretamente
function calcProd(){
//Obter valor digitado do produto
var estoq_prod = document.getElementById("estoqprod").value;
//Remover ponto e trocar a virgula por ponto
while (estoq_prod.indexOf(".") >= 0) {
estoq_prod = estoq_prod.replace(".", "");
}
estoq_prod = estoq_prod.replace(",",".");
//Obter valor digitado do produto
var prod_qtde = document.getElementById("qtde").value;
//Remover ponto e trocar a virgula por ponto
while (prod_qtde.indexOf(".") >= 0) {
prod_qtde = prod_qtde.replace(".", "");
}
prod_qtde = prod_qtde.replace(",",".");
//Calcula o Valor do Desconto
if (prod_qtde > 0 && estoq_prod > 0) {
calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod);
var numero = calc_total_produto.toFixed(2).split('.');
//Calculo para não deixar GRAVAR valores negativos
if (calc_total_produto < 0 ) {
numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1;
document.getElementById("qtdeTotal").value = numero.join(',');
} else {
numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.');
document.getElementById("qtdeTotal").value = numero.join(',');
}
} else {
if (estoq_prod > 0) {
document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value;
} else {
document.getElementById("qtdeTotal").value = "0,00";
}
}
}
/*---Função para Formatar Campo para Moeda [R$]---*/
function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13) return true;
key = String.fromCharCode(whichCode); // Valor para o código da Chave
if (strCheck.indexOf(key) == -1) return false; // Chave inválida
len = objTextBox.value.length;
for(i = 0; i < len; i++)
if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
aux = '';
for(; i < len; i++)
if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
aux += key;
len = aux.length;
if (len == 0) objTextBox.value = '';
if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux;
if (len > 2) {
aux2 = '';
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += SeparadorMilesimo;
j = 0;
}
aux2 += aux.charAt(i);
j++;
}
objTextBox.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
objTextBox.value += aux2.charAt(i);
objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
}
return false;
}
Grato,