-
Conteúdo Similar
-
Por Frank K Hosaka
Ontem de madrugada encontrei essa dica javascript - How do I get the value of the selected item in a datalist using pure JS? - Stack Overflow e com ele eu consegui terminar o meu código de paginação. O Laravel já tem um código pronto para ser usado, mas ele é funcional para uma tabela com 150 itens, o meu tem mais de 1500 itens, isso iria entupir a apresentação com um monte de guias. O meu só tem duas guias, o próximo e o anterior. E só lista 10 itens de cada vez.
O mais bacana dessa madrugada é que eu aprendi a usar um pouco mais a função console.log( ) do JavaScript, procurei exaustivamente uma maneira de obter o número do item da option do datalist, mas foi em vão. A dica que eu encontrei na internet é muito engenhosa, o rapaz encontrou no JavaScript uma função que procura um atributo da option que foi selecionada. Como o option não tem a opção de index, ele sugere criar uma.
No Controller eu havia pedido para o Laravel trabalhar com os produtos em ordem alfabética, ou seja, a própria consulta já é um index. O único problema foi encontrar um jeito de colocar o index da consulta no option do datalist.
Com quase tudo resolvido, o problema é fazer o loop do JavaScript funcionar. Graças ao fórum iMasters ou Script Brasil eu consegui uma ajuda. Eu recebi a sugestão de garantir que uma das variáveis dentro do loop do JavaScript seja do tipo inteiro. Eu achei a sugestão um absurdo, mas depois eu lembrei que o mundo dos computadores é bem diferente das abstrações que a gente inventou como os números inteiros e os números reais.
Finalmente, aqui está o código. Ele foi escrito em Blade PHP, não é muito diferente do PHP: a diferença é que ele usa @ ao invés do tradicional <?php >. Nesse projeto pretendo trabalhar com o Bootstrap. Já o class="w600" não é Bootstrap, e sim uma gambiarra que eu fiz onde .w600 {width=600px}. Na imagem que eu deixei, dá para ver que eu ajuntei o nome do produto junto com o código dele, a minha ideia é para o usuário procurar o produto tanto pelo nome bem como pelo código. O datalist é muito bacana, pena que não dá para alterar a fonte e nem fazer a busca semelhante, ou seja, se você digitar "limão", ele não lista se foi cadastrado "limao".
@include('menu') <script> var icontrole document.title='Produto';btmenu.innerHTML='Procurar produto por nome' function controle(comando){ if(comando=="proximo"){ if(icontrole<produtos.options.length){icontrole+=10;show(icontrole)}} if(comando=="anterior"){ if(icontrole>9){icontrole-=10;show(icontrole)}}} function lista(input){ option=Array.prototype.find.call(produto.list.options,function(option){ return option.value === input}) show(option.getAttribute("id"))} function show(j){ j=parseInt(j) divshow.innerHTML="" for(i=j;i<=j+9;i++){ divshow.innerHTML+=produtos.options[i].value+"<br>"} produto.value="" icontrole=j} </script> <div class="w600 m-auto"> <input list=produtos autofocus id=produto onchange=lista(value)> <datalist id=produtos> @foreach($prod as $key=> $pr) <option id={{$key}}>{{$pr->prod}} [{{$pr->codprod}}] @endforeach </datalist></div> <div class="w600 m-auto" id=divshow></div> @if(empty($show)) <script>show(0)</script> @php $show="já começou" @endphp @endif <div class="w600 m-auto"> <input type=submit value=Anterior onclick="controle('anterior')"> <input type=submit value=Próximo onclick="controle('proximo')"> </div>
-
Por ckcesar
Pesoal eu instalei o Laravel em meu pc, mais ao rodar estou enfrentando um erro de permissão.
Eu segui os passas da documentação => https://laravel.com/docs/9.x#getting-started-on-windows
Ao entrar no localhost ele retorna esse erro. A lembrando que no docker ele inicial certinho o mysql roda ok, é somente essa pasta storege. Estou tentando resolver mais tudo que eu faço não funfa, estou dando permissão nas pastas, já mudei o arquivo .env e nada.
The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file "/var/www/html/storage/logs/laravel.log"
-
Por joeythai
Boa tarde pessoal,
Eu tenho um foreach que está me trazendo apenas um resultado a partir de uma consulta, mas na verdade tem que me retornar 10 itens:
<code>
public function getBillsUnpaid($date)
{
$results = [];
$numberBills = $this->lotModel->select(DB::RAW("
Lotes.ID AS Lote_ID,
Compradores.ID as Comprador_ID,
Compradores.CompradorWeb_ID,
Compradores.NM as NM_Comprador,
Lotes.Leilao_ID as Leilao_ID,
Lotes.NU as NU_Lote,
FORMAT(lotes.DT_VenctoBoleto, 'yyyy-MM-dd') as DT_VenctoBoleto,
REPLACE(
(CASE
WHEN
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDCel,'')))) > 0 AND
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Celular,'')))) > 0
THEN CONCAT(
LTRIM(RTRIM(Compradores.NM_DDDCel)),'',
LTRIM(RTRIM(Compradores.NM_Celular))
)
WHEN
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDTel,'')))) > 0 AND
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Telefone,'')))) > 0
THEN CONCAT(
LTRIM(RTRIM(Compradores.NM_DDDTel)),'',
LTRIM(RTRIM(Compradores.NM_Telefone))
)
ELSE ''
END)
,'-', '') AS NM_Celular,
Lotes.VL_Venda,
ISNULL(Lotes.VL_Cobranca, 0) as VL_Cobranca,
ISNULL((
SELECT SUM(VL_Cobertura)
FROM LotesXPagamentos
WHERE Lote_ID = lotes.ID
AND Pagamento_ID IS NOT NULL
), 0) as VL_Pago,
CONCAT(Lotes.NM_Descricao, '', Lotes.MM_ExtDescricao) as NM_Descricao
"))
->join('Leiloes', 'Leiloes.ID', '=', 'Lotes.Leilao_ID')
->join('Compradores', 'Compradores.ID', '=', 'Lotes.Comprador_ID')
->where('Lotes.ST_Lote', 3)
->where('Lotes.DT_VenctoBoleto', '>', '2021-03-01')
->whereRaw("
ISNULL((
SELECT SUM(VL_Cobertura)
FROM LotesXPagamentos
WHERE Lote_ID = Lotes.ID
AND Pagamento_ID IS NOT NULL
), 0) = 0")
->orderBy('Lotes.NU')
->take(10)
->get();
if(count($numberBills) > 0){
foreach($numberBills as $bills){
$results['CompradorWeb_ID'] = $bills->CompradorWeb_ID;
$results['DT_VenctoBoleto'] = $bills->DT_VenctoBoleto;
$results['VL_Cobranca'] = $bills->VL_Cobranca;
$results['Lote_ID'] = $bills->Lote_ID;
$results['Comprador_ID'] = $bills->Comprador_ID;
$results['NM_Comprador'] = $bills->NM_Comprador;
$results['NM_Descricao'] = $bills->NM_Descricao;
$results['VL_Pago'] = $bills->VL_Pago;
$results['NU_Lote'] = $bills->NU_Lote;
$results['Leilao_ID'] = $bills->Leilao_ID;
$phones = $this->getPhoneUsers($bills->CompradorWeb_ID);
$results['NM_Celular'] = (!is_null(@$phones->fone_celular)) ? $phones->fone_celular : $bills->NM_Celular;
return $results;
}
}
}
</code>
Se eu retorno somente a variavel $numberBills, ele me traz o resultado certinho, porém, eu não posso retornar essa variavel pq preciso pegar o resultado dela e chamar a minha outra função que faz conexão com outra base de dados e por isso eu criei esse array result, percebam que o numero do telefone vai vir da minha tabela A(função que pega o telefone) e caso não tenha o telefone nela, eu pego o numero da tabela B(resultado dessa query) porem qdo do return $results, so me retorna o primeiro registro, o que estou fazendo de errado ?
-
Por joeythai
Boa tarde pessoal,
Eu tenho um foreach que está me trazendo apenas um resultado a partir de uma consulta, mas na verdade tem que me retornar 10 itens:
<code>
public function getBillsUnpaid($date)
{
$results = [];
$numberBills = $this->lotModel->select(DB::RAW("
Lotes.ID AS Lote_ID,
Compradores.ID as Comprador_ID,
Compradores.CompradorWeb_ID,
Compradores.NM as NM_Comprador,
Lotes.Leilao_ID as Leilao_ID,
Lotes.NU as NU_Lote,
FORMAT(lotes.DT_VenctoBoleto, 'yyyy-MM-dd') as DT_VenctoBoleto,
REPLACE(
(CASE
WHEN
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDCel,'')))) > 0 AND
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Celular,'')))) > 0
THEN CONCAT(
LTRIM(RTRIM(Compradores.NM_DDDCel)),'',
LTRIM(RTRIM(Compradores.NM_Celular))
)
WHEN
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDTel,'')))) > 0 AND
LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Telefone,'')))) > 0
THEN CONCAT(
LTRIM(RTRIM(Compradores.NM_DDDTel)),'',
LTRIM(RTRIM(Compradores.NM_Telefone))
)
ELSE ''
END)
,'-', '') AS NM_Celular,
Lotes.VL_Venda,
ISNULL(Lotes.VL_Cobranca, 0) as VL_Cobranca,
ISNULL((
SELECT SUM(VL_Cobertura)
FROM LotesXPagamentos
WHERE Lote_ID = lotes.ID
AND Pagamento_ID IS NOT NULL
), 0) as VL_Pago,
CONCAT(Lotes.NM_Descricao, '', Lotes.MM_ExtDescricao) as NM_Descricao
"))
->join('Leiloes', 'Leiloes.ID', '=', 'Lotes.Leilao_ID')
->join('Compradores', 'Compradores.ID', '=', 'Lotes.Comprador_ID')
->where('Lotes.ST_Lote', 3)
->where('Lotes.DT_VenctoBoleto', '>', '2021-03-01')
->whereRaw("
ISNULL((
SELECT SUM(VL_Cobertura)
FROM LotesXPagamentos
WHERE Lote_ID = Lotes.ID
AND Pagamento_ID IS NOT NULL
), 0) = 0")
->orderBy('Lotes.NU')
->take(10)
->get();
if(count($numberBills) > 0){
foreach($numberBills as $bills){
$results['CompradorWeb_ID'] = $bills->CompradorWeb_ID;
$results['DT_VenctoBoleto'] = $bills->DT_VenctoBoleto;
$results['VL_Cobranca'] = $bills->VL_Cobranca;
$results['Lote_ID'] = $bills->Lote_ID;
$results['Comprador_ID'] = $bills->Comprador_ID;
$results['NM_Comprador'] = $bills->NM_Comprador;
$results['NM_Descricao'] = $bills->NM_Descricao;
$results['VL_Pago'] = $bills->VL_Pago;
$results['NU_Lote'] = $bills->NU_Lote;
$results['Leilao_ID'] = $bills->Leilao_ID;
$phones = $this->getPhoneUsers($bills->CompradorWeb_ID);
$results['NM_Celular'] = (!is_null(@$phones->fone_celular)) ? $phones->fone_celular : $bills->NM_Celular;
return $results;
}
}
}
</code>
Se eu retorno somente a variavel $numberBills, ele me traz o resultado certinho, porém, eu não posso retornar essa variavel pq preciso pegar o resultado dela e chamar a minha outra função que faz conexão com outra base de dados e por isso eu criei esse array result, percebam que o numero do telefone vai vir da minha tabela A(função que pega o telefone) e caso não tenha o telefone nela, eu pego o numero da tabela B(resultado dessa query) porem qdo do return $results, so me retorna o primeiro registro, o que estou fazendo de errado ?
-
Por eduardodsilvaq
Erro retornado no console do navegador: 400 bad request
Rastreei o erro ate essa parte no arquivo admin-ajax.php mudando o valor de resposta de 0 para 1:
if ( is_user_logged_in() ) { // If no action is registered, return a Bad Request response. if ( ! has_action( "wp_ajax_{$action}" ) ) { wp_die( '0', 400 ); } Tentei de tudo, mas infelizmente nao entendi oq realmente significa esse login e como ele funciona.
Vi algumas pessoas tendo problema com o host, no meu caso estou usando hostinger. (Nao creio que isso e relevante mas ta ai.)
Código utilizado:
Javascript
function formValidation() { event.preventDefault(); var name = document.forms["contactForm"]["name"].value; var email = document.forms["contactForm"]["email"].value; var subject = document.forms["contactForm"]["subject"].value; var message = document.forms["contactForm"]["message"].value; document.getElementById('status').innerHTML = ''; var errorMessage="<span class='error'>All fields are required.</span>"; var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; if (name.trim() == "" ||email.trim() == "" || subject.trim() == "" || message.trim() == "") { document.getElementById('status').innerHTML = errorMessage; return false; } if (!regEx.test(email)) { var errorMessage="<span class='error'>Invalid email.</span>"; document.getElementById('status').innerHTML = errorMessage; return false; } processContactSubmit(); return true; } function processContactSubmit() { var request = new XMLHttpRequest(); request.open("POST", "/wp-admin/admin-ajax.php?action=process_contact_form"); request.onreadystatechange = function() { if(this.readyState === 4 && this.status === 200) { document.getElementById("status").innerHTML = this.responseText; } }; var myForm = document.getElementById("contactForm"); var formData = new FormData(contactForm); request.send(formData); } functions.php
add_action('wp_ajax_nopriv_process_contact_form', 'process_contact_form'); add_action('wp_ajax_process_contact_form', 'process_contact_form'); //Retirar essa parte para error no console, no contrario ira aparecer no navegador o numero 0. function process_contact_form() { $to = "Recipient Email Address"; $subject = $_POST["subject"]; $headers = "Testing"; $message = $_POST["message"]; $attachments = ""; $sent = wp_mail($to, $subject, $message, $headers, $attachments); if (! $sent) { echo "<span class='error'>Problem in sending mail.</span>"; } else { echo "<span class='success'>Hi, thank you for the message.</span>"; } wp_die(); } Html
<form name="contactForm" id="contactForm" method="post" onsubmit="return formValidation()" action=""> <p class="comment-form-comment"><textarea id="message" name="message" required="" placeholder="" aria-required="true"></textarea></p> <p class="comment-form-author"><label for="author">Nome: </label> <input id="name" name="name" required="" size="30" type="text" value=" " /></p> <p class="comment-form-author about"><label for="author">Assunto: </label> <input id="subject" name="subject" required="" size="40" type="text" value=" " /></p> <p class="comment-form-email"><label for="email">Email: </label> <input id="email" name="email" required="" size="30" type="text" value="" /></p> <p class="form-submit"><input id="submit" class="submit" name="email_contato" type="submit" value="Enviar" /></p> </form> <h3><div id="status"></div></h3>
-