Jump to content

gabrielms

Members
  • Content count

    79
  • Joined

  • Last visited

Everything posted by gabrielms

  1. gabrielms

    Barra Superior Acompanhar Scroll JQUERY

    @s3c0 Bom essa função só é chamada quando o usuário mexe no scroll, quando ele recarrega uma pagina no meio o script não é chamado, já que ele não mexeu no scroll. Para resolver isso, basta adicionar uma verificação depois que a página for carregada. Exemplo if($(window).scrollTop() > 68) // Caso o scroll dá página esteja em uma posição maior que 68 ele vai adicionar o css de baixo { $('.topo').css({ "position":"fixed", "z-index":"2", "margin-top":"0px", }); } O código final, ficaria assim: $(function() { // Verificação do scroll dá pagina if($(window).scrollTop() > 68) { $('.topo').css({ "position":"fixed", "z-index":"2", "margin-top":"-68px", }); } $(window).scroll(function() // Essa função só vai ser executada quando um usuário mexer no scroll dá página. { if ($(this).scrollTop() > 150){ $('.topo').fadeIn(); $('.topo').css({ "position":"fixed", "z-index":"2", "margin-top":"-68px", }); } else { $('.topo').css({ "position":"absolute", "z-index":"2", "margin-top":"0px" }); } }); }); Obs..: Por qual motivo você atribui dois z-index diferentes para o mesmo elemento?
  2. gabrielms

    Função não funciona

    @DinhoPHP Você salva o valor no atributo placeholder e não no atributo value. Na sua função desc(), você tenta pegar o valor da atributo value como ela está sem o valor ele não funciona. Assim ele deve funcionar function desc(){ var txtDobro = document.querySelector('#seuValorMult'); // VALOR QUE FOI DOBRADO var txtSacado = document.querySelector('#seuValorDia2'); var txtRestante = document.querySelector('#seuValorRes'); var resDobro = Number(txtDobro.placeholder); var resSacado = Number(txtSacado.placeholder); //var resRestante = Number(txtRestante.value); var resRest = resDobro; txtRestante.placeholder = resRest.toFixed(2); } OBs..: Esse seu código está muito bagunçado e tem muita coisa desnecessária, tenta melhorar ele um pouco.
  3. gabrielms

    API - Como funciona

    @Good Isso você pode fazer usando qualquer linguagem, um bom exemplo e o Laravel(Framework em PHP) que armazenando session em arquivo. o PHP e o mysql suportam muita coisa com apenas 128MB de memorial. O que você pode fazer é melhor os recursos para ambos e colocar um sistema de múltiplos servidores com um sistema de segurança ante DDOS. E também projetar bem o seu banco de dados.
  4. gabrielms

    conversão de moedas

    @Claudia França Como você quer automatizar isso? E qual a finalidade do resultado? Caso você queira algo mais simples, você pode usar apenas javascript para fazer a requisição para o server que converter a moeda. Exemplo: <h1>Digite um valor </h1> <select name="currency" required> <option value="USD" id="dolar" selected>Dolar $=</option> <option value="EUR" id="euro">Euro E=</option> </select> <input type="text" name="amount" size="15" value="20.00" > <span id="demo"></span> </br> <script> var select, valor, resultado; window.onload = function() { select = document.getElementsByName("currency")[0]; valor = document.getElementsByName("amount")[0]; resultado = document.getElementById("demo"); valor.addEventListener("keyup", converter); } function converter() { resultado.innerHTML = ("Carregando..."); if (!verificarValores()) { resultado.innerHTML = ("O valor inserido não é um valor valido"); return false; } let val = valor.value, curry = select.value, xhttp; if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { resultado.innerHTML = this.responseText; } else if (this.readyState == 4 && this.status >= 200) { resultado.innerHTML = ("Ocorreu um erro no servidor, tente novamente mais tarde."); } }; xhttp.open("GET", "http://free.currencyconverterapi.com/api/v5/convert?q="+curry+"_BRL&compact=y&&apiKey=2e5b8ec911e1ff89c8c4", true); xhttp.send(); return true; } function verificarValores() { let val = valor.value, curry = select.value; if (val == 0 || val == "0") { return false; } if (!parseFloat(val)) { return false } if (curry == "EUR" || curry == "USD") { return true; } } </script>
  5. gabrielms

    API - Como funciona

    @Good Pra que N motivos você teria um server PHP e um em Node.js? Se sua aplicação e desenvolvida em php não tem nenhum motivo para criar um server em Node.js. O único motivo para isso, seria o uso do socket web para trabalhar em tempo real. Os protocolos de requisição como HTTP, GET e POST são os mesmo para qualquer linguagem, se você quer criar uma API para se comunicar com diversas aplicações, basta criar um server para receber essas requisições e enviar de acordo com cada requisição.
  6. gabrielms

    Função não funciona

    @DinhoPHP Boa tarde! Eu consigo achar aonde a função cadValor() é chamada, mas eu não consigo achar aonde a função desc() é chamada. <button type="submit" value="ativa" class="btn btn-danger text-uppercase ml-3" data-toggle="modal" data-target="#modalHolerite" onclick="cadValor()">ativa</button> Eu acho que você esqueceu de adicionar um evento para chama a função desc() no button. <button type="submit" value="saque" class="btn btn-danger text-uppercase btn-sm mr-3">descontar</button> Falta o onclick="desc()" no button.
  7. gabrielms

    Lendo dado JSON webservice

    @Gilberto Jr O problema é bem simples! Quando você utiliza o loop(for) você acabo adicionando os valores nos mesmos elementos, assim o loop vai executando e todo vez ele vai substituído o ultimo valor adicionado, até sobrar o ultimo. Para corrigir isso basta você, em vez de você adicionar os valores em um elemento já existente, você criar um elemento e adicionar o valor nele e depois você adiciona o elemento na página. Exemplo: <html> <head> <meta charset="UTF-8"> <title>Teste</title> <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.4.1.min.js"></script> <!-- Adicionando Javascript --> <script type="text/javascript" > $(document).ready(function(){ $("#search").click(function(){ $.ajax({ type: "GET", dataType: "json", url: "https://jsonplaceholder.typicode.com/photos ", success: function(data) { for (i = 0; i < 10; i++) { //vai passar por todos os objetos dentro do array console.log(1); $(".container").append(` <div class="row"><br/> <div>${data[i]["id"]}</div><br/> <div>${data[i]["albumId"]}</div><br/> <div>${data[i]["title"]}</div><br/> <img src="${data[i]["thumbnailUrl"]}"><br/> <img src="${data[i]["url"]}"><br/> </div> `); } } }); }); }); // END Function, END ready </script> </head> <body> <input type="button" placeholder="Busca" id="search" value="Buscar"> <section> <div class="container"></div> </section> </body> </html> OBS..: Eu modifiquei o for, porque a quantidade de elemento que ele carrega é muito grande, para evitar o lag eu coloquei um limite de 10.
  8. gabrielms

    API - Como funciona

    @Good Boa Tarde! Bom o Node.js não é uma linguagem, e sim um interpretador de javascript, ele expande o uso do javascript. Em questão de praticidade o PHP é mais solido e confiável, ele também tem uma das comunidade mais ativas. Para você entender como funciona um sistema de API Web, você primeiro deve entender o que é front-end e back-end. Eu não vou explicar, você acha muitos trópicos falando sobre. Eu faria usando, e os sistemas utilizam uma arquitetura de software. Uma bem famosa é o MVC. Depois dá uma olhada em XMLHTTPRequest.
  9. gabrielms

    Matriz através de valores de uma input

    @mpcarvalho Eu não encontrei esse erro de duplicata, mas pode ser um problema de duplo click. Uma coisa que eu notei, é que você acaba criando dois elemento img. Você cria o elemento img e depois adiciona um src(link) e um evento de onload, que está funcionado sem problemas, porem quando você vai adicionar na div, você acaba criando outro elemento img sem a necessidade. let img = document.createElement('img'); // Primeiro elemento img div.innerHTML += ` <div onclick="removerImage(this)" class="dl_imgs-wrap"> <img class="imgs" id="" src="${img.src}" /><!-- Segundo elemento img--> <p style="width: 230px; float=: left; font-size: 12px; margin:0px; margin-top:5px;">${img.width} x ${img.height}<span style="float:right;"></span></p> </div> `; Eu fiz um exemplo para caso você queira dar uma olhada: https://codepen.io/morto/pen/pozgwZJ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>IMG LOAD</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <script src="https://kit.fontawesome.com/a076d05399.js"></script> <link href="https://fonts.googleapis.com/css?family=Roboto&display=swap" rel="stylesheet"> <style> html, body{ width: 100%; height: 100%; padding: 0px; margin: 0px; background: #323232; font-family: 'Roboto', sans-serif; overflow-y: hidden; } div.container{ overflow-y: auto; display: block; height: 100%; } #demo{ padding: 20px; display: flex; flex-wrap: wrap; text-align: center; align-content: center; justify-content: center; } #demo > div{ width: 240px; height: 240px; padding: 5px; background: #242424; overflow: hidden; margin: 10px; text-align: center; overflow-wrap: break-word; color: #fff; } #demo > div > img{ width: 100%; height: 100%; margin: 0px; } a.btn{ font-size: 36px; text-decoration: none; color:#ccc; text-align: center; } div.modal{ display: none; position: fixed; z-index: 1; padding-top: 100px; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgb(0, 0, 0); background-color: rgba(0, 0, 0, 0.9); } div.modal > div.modal-container{ margin: auto; display: block; width: 80%; max-width: 720px; } form[name="pesquisar"]{ background: #191919; color: #fff; padding: 20px; display: block; } form[name="pesquisar"] > div > label{ width: 100%; margin: 0px; padding: 0px; border: 0px; } form[name="pesquisar"] > div > input{ margin: 5px 0px; padding: 5px 0px; border: 0px; width: 100%; } div.modal-container, #demo > div{ animation-name: zoom; animation-duration: 0.6s; } @keyframes zoom{ from { transform:scale(0) } to { transform:scale(1) } } .btn-close{ position: absolute; top: 15px; right: 35px; color: #f1f1f1; font-size: 40px; font-weight: bold; transition: 0.3s; } .btn-close:hover, .btn-close:focus{ color: red; text-decoration: none; cursor: pointer; } @media only screen and (max-width: 720px){ div.modal-container{ width: 100%!important; } } </style> </head> <body> <div style="text-align: center; padding: 10px; background: #191919;"> <a href="javascript:void(0)" onclick="document.getElementsByClassName('modal')[0].style.display = 'block';" class="btn open"><i class="far fa-file-image"></i> Carregar imagens</a> <a href="javascript:void(0)" style="display: none;" class="btn load" ><i class="fas fa-sync fa-spin" style="font-size:24px"></i> Carregando...</a> </div> <div class="container"> <div id="demo"> </div> </div> <div class="modal"> <span class="btn-close" onclick="document.getElementsByClassName('modal')[0].style.display = 'none';" ><i class="fas fa-times"></i></span> <div class="modal-container"> <form onsubmit="return false;" name="pesquisar"> <div> <label>URL: </label> <input type="text" name="url" placeholder="URL do local das imagens, Exemplo: https://menusite.com/fotos/ "><br> <label>Imagens: </label> <input type="text" name="imagens" placeholder="Complemento dá url mais o nome e tipo da imagem, Exemplo: fotos1.jpg, fotos2.jpg "><br> <input type="submit" value="Carregar"> </div> </form> </div> </div> <script> var demno, form; const verificador = { loop : null, elementoCerregados : 0, elementNumero : 0, elementErro : 0, verificar : function(x, y){ document.getElementsByClassName("open")[0].style.display = "none"; document.getElementsByClassName("load")[0].style.display = "block"; this.elementoCerregados = y; this.elementNumero = x; this.loop = setInterval(function(){ if(verificador.elementoCerregados == verificador.elementNumero) { document.getElementsByClassName("load")[0].style.display = "none"; document.getElementsByClassName("open")[0].style.display = "block"; clearInterval(verificador.loop); verificador.loop = null; verificador.elementoCerregados = 0; verificador.elementErro = 0; verificador.elementNumero = 0; } }, 1000); } } window.onload = function() { form = document.forms["pesquisar"]; demno = document.getElementById("demo"); form.addEventListener("submit", function(event) { let url = form["url"].value, imagens = form["imagens"].value; event.preventDefault(); url.trim(); imagens.trim(); if(url == "") { return false; } if(imagens == "") { return false; } imagens = imagens.split(','); if (typeof imagens != "object" || imagens.length < 1) { return false; } carregarImgs(url, imagens); return false; }); } function carregarImgs(url, imagens) { document.getElementsByClassName('modal')[0].style.display = "none"; elmentosCarregados = 0; verificador.verificar(imagens.length, 0); for (i in imagens){ let elemtentImg = document.createElement("img"); tempo = i * 500; elemtentImg.setAttribute("delay", tempo); elemtentImg.onerror = function(){ let elementDiv = document.createElement("div"); elementDiv.innerHTML = ("Ocorreu um erro no load dessa Imagem : "+this.src); setTimeout(function(){ demno.appendChild(elementDiv); verificador.elementoCerregados++; }, this.getAttribute("delay")); verificador.elementErro++; } elemtentImg.src = url + imagens[i]; elemtentImg.onload = function() { let elementDiv = document.createElement("div"); elementDiv.appendChild(this) setTimeout(function(){ demno.appendChild(elementDiv); verificador.elementoCerregados++; elemtentImg.removeAttribute("delay"); }, this.getAttribute("delay")); } } } </script> </body> </html>
  10. gabrielms

    Ajuda com svg

    @Overtron8000 Olhando o seu projeto eu achei dois problema nessa sua condição if. Quando você faz a verificação do atributo cy, você tenta pegar ele de uma forma invalida. Esse if nunca vai funcionar. Você utiliza no seu projeto o Jquery e para manipular o atributo você utiliza o método attr() do Jquery para modificar o valor do atributo. Você também pode usar esse método para retorna o valor do atributo, nesse caso vamos usar para retorna o valor de cy. if (balloon.attr("cy") == 265) { numero = 0; contador.innerHTML = numero; } Porém mesmo você fazendo essa modificação o seu projeto não vai funcionar dá maneira que você quer. O motivo dele não funcionar é o fato de que a condição vai ser executada antes da bolinha chegar aos 265px. Eu tenho uma solução, eu não sei se é a melhor opção para o seu projeto, mas você pode adiciona um delay na verificação dessa condição usando o setTimeout com o tempo de duração da queda da bolinha; Exemplo setTimeout(function() { if (balloon.attr("cy") == 265) { numero = 0; contador.innerHTML = numero; } },755);
  11. gabrielms

    Matriz através de valores de uma input

    @mpcarvalho Eu achei dois problemas na sua função Um, é logo após você separa a string dá variável ean usando o split. Você converte aquela string em um array dividindo a string com base na virgula e depois você salva o resultado dá divisão na variável novoArray, porem você acaba salvando o arrray em um array com uma unica coluna. Quando você coloca a variável novaArray entre [ ], você acaba colocamo um array dentro de outro. Debug: Valor ean = "7896003703863,7897005100223,7897005101589,7896360210097,7896003703863,7897005100223,7897005101589"; novoArray = ean.split(','); var matriz = [novoArray]; // Resultado do Valor na variável "matriz": Tipo: object; Numero de colunas: 1; Valor: [ 0:["7896003703863", "7897005100223", "7897005101589", "7896360210097", "7896003703863", "7897005100223", "7897005101589"] ] Quando você utilizar o for na variável matriz ele vai pegar o valor da unica coluna que o array possui e vai converter o valor dessa coluna que é um array para uma unica string. Por isso ele retorna aquela string, como se ele nem executasse uma operação nela. O segundo é quando você concatena os valor e coloca dentro de uma div. Você não seleciona o índice do array que você está fazendo o loop. Isso também vai fazer com que ele retorna aquela string, como se ele nem executasse uma operação nela. Para corrigir isso, bastas usar o valor dá variável novaArray no seu for ou caso você queira salvar o valor na variável matriz, você colocar o valor sem está entre [ ]. Exemplo: novoArray = ean.split(','); for(i = 0 ; i < novoArray.length; i++) { div.innerHTML += '<img src="'+url+""+novoArray[i]+''+ext+'" />'; } // Ou novoArray = ean.split(','); var matriz = novoArray.slice(); for(i = 0; i < matriz.length; i++) { div.innerHTML += '<img src="'+url+""+matriz[i]+''+ext+'" />'; } Você também pode encurtar o for usando um for/in. Exemplo: novoArray = ean.split(','); for(indice = novaArray) { div.innerHTML += '<img src="'+url+""+novaArray[indice]+''+ext+'" />'; } Obs..:No javascript o array são objetos. E objeto são atribuídos por referência. Seja com o uso do igual, seja através de passagem de argumento em uma função.
  12. gabrielms

    Liberar elemento ou div ao selecionar uma opção

    @Akahs Tenta isso aqui deve funcionar. Eu tbm fiz algumas modificações no html. HTML: <div class="col-md-6"> <div class="form-group"> <select class="form-control" name="traslado" id="traslado"> <option value="false" selected disabled>Necessita Traslado?*</option> <option value="true">Sim</option> <option value="false">Não</option> </select> </div> </div> <div class="col-md-6"> <div class="form-group" style="display:none;"> <select class="form-control" name="hotel" id="hotel"> <option value="0" selected disabled>Se Sim, escolha o Hotel de Origem*</option> <option value="SleepIn Jacarei">SleepIn Jacareí</option> <option value="Ibis Jacarei">Íbis Jacareí</option> <option value="Ibis SJC">Ibis SJC</option> <option value="Novotel SJC">Novotel SJC</option> </select> </div> </div> Javascript: var select1, select2; window.onload = function() { select1 = document.getElementsByName("traslado")[0]; select2 = document.getElementsByName("hotel")[0]; select1.addEventListener("change", function() { if (this.value == "true") { select2.parentElement.style.display = "block"; } else { select2.parentElement.style.display = "none"; select2.getElementsByTagName("option")[0].selected = true; } }); } Caso você queira usar Jquery: $(function() { $("[name=traslado]").on("change", function() { if($(this).val() == "true") { $($("[name=hotel]").parent()[0]).css("display", "block"); } else { $($("[name=hotel]").parent()[0]).css("display", "none"); $($("[name=hotel]").children()[0]).prop("selected", true); } }); });
  13. @vinihhylian0103 Esse erro significa que você não tem um server de mail configurado. Se você está usando um ambiente de teste verifique se você tem um server de mail instalado no seu ambiente de teste.
  14. gabrielms

    Sistema multinivel

    @drx No seu caso, eu acho que o melhor CMS para trabalhar é o Wordpress. 1 - O Wordpress já é usando para montar um sistema multinível. 2 - Não conheço. 3 - O Wordpress é uma ferramenta em php que vai facilita o trabalho. 4 - Sim. O Mysql é suficiente para suportar o aumento de tráfego, mas para isso ocorrer ele só vai depender de sua configuração e do seu servidor.
  15. gabrielms

    Localização errada no GeoIP

    @Webster Moitinho O problema é bem simples! Quando você utiliza o file_get_contents para fazer uma requisição para o site do Geoip, quem faz essa requisição é o seu servidor é não o usuário, por isso ele retorna os dados do seu servidor. O Geoip trabalha com base no Ip para pegar a localização, quando você utiliza o link "https://geoip-db.com/jsonp", ele vai pegar o ip de quem fez a requisição para ele como foi o server quem fez a requisição ele vai pegar a localização do server. Você pode pegar o IP do usuário usando o $_SERVER['REMOTE_ADDR'] e passar ele junto do link do Geoip, assim o Geoip vai usar o IP que você passou para ele acha a localização. Exemplo: $json = file_get_contents('https://geoip-db.com/json/'.$_SERVER['REMOTE_ADDR']);
  16. gabrielms

    É a mesma coisa mas não funciona do mesmo jeito

    @Omar~ Quando você faz um include dentro de um método, esse include só vai herda o escopo do método e não do arquivo raiz. Vou fazer um exemplo para você entender melhor, nesse exemplo vou criar dois arquivo um com o nome de pai, que vai fazer o include, e o outro com o nome de filho, que vai fazer algumas verificações. pai.php <?php $variavelLocal = 100; function incluirArquivo() { $variavelLocalMetodo = 200; include("filho.php"); } function incluirArquivo_2() { global $variavelLocal; // Pegando a variável 'variavelLocal' e colocando dentro do escorpo do método $variavelLocalMetodo = 300; include("filho.php"); } echo("// Resultato 01 <br>"); include("filho.php"); // Incluindo o arquivo direto echo("=============================== <br><br>"); echo("// Resultato 01 <br>"); incluirArquivo(); // Incluido o arquivo por meio do método incluirArquivo echo("=============================== <br><br>"); echo("// Resultato 02 <br>"); incluirArquivo_2(); // Incluido o arquivo por meio do método incluirArquivo_2 echo("=============================== <br><br>"); filho.php <?php if(isset($variavelLocal)) { echo("Nesse exemplo eu encontrei a variável 'variavelLocal' com o valor: ".$variavelLocal."<br>"); } else { echo("Nesse exemplo eu não encontrei a variável 'variavelLocal' <br>"); } if(isset($variavelLocalMetodo)) { echo("Nesse exemplo eu encontrei a variável 'variavelLocalMetodo' com o valor: ".$variavelLocalMetodo."<br>"); } else { echo("Nesse exemplo eu não encontrei a variável 'variavelLocalMetodo' <br>"); } O resultado : // Resultato 01 Nesse exemplo eu encontrei a variável 'variavelLocal' com o valor: 100 Nesse exemplo eu não encontrei a variável 'variavelLocalMetodo' =============================== // Resultato 01 Nesse exemplo eu não encontrei a variável 'variavelLocal' Nesse exemplo eu encontrei a variável 'variavelLocalMetodo' com o valor: 200 =============================== // Resultato 02 Nesse exemplo eu encontrei a variável 'variavelLocal' com o valor: 100 Nesse exemplo eu encontrei a variável 'variavelLocalMetodo' com o valor: 300 =============================== Aqui tem um artigo falando melhor sobre: https://www.php.net/manual/pt_BR/function.include.php.
  17. gabrielms

    Problemas com Carousel Bootstrap no JS

    @DinhoPHP Bom eu não sei bem se o problema realmente e o Bootstrap. Você tem um erro de PHP PDO na sua página Erro: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: NO) E o código HTML está todo bugado. Ainda tem os erros no console. Failed to load resource: the server responded with a status of 404 (Not Found) owl.theme.default.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found) logo.png:1 Failed to load resource: the server responded with a status of 404 (Not Found) owl.carousel.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found) owl.theme.default.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found) Tenta resolver isso, esses bugs devem ser o problema do seu carrossel.
  18. gabrielms

    Problemas com Carousel Bootstrap no JS

    @DinhoPHP O que falto na sua página para o carrossel funcionar foi o CSS. @media (min-width: 768px) { /* show 3 items */ .carousel-inner .active, .carousel-inner .active + .carousel-item, .carousel-inner .active + .carousel-item + .carousel-item { display: block; } .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left), .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left) + .carousel-item, .carousel-inner .carousel-item.active:not(.carousel-item-right):not(.carousel-item-left) + .carousel-item + .carousel-item { transition: none; } .carousel-inner .carousel-item-next, .carousel-inner .carousel-item-prev { position: relative; transform: translate3d(0, 0, 0); } .carousel-inner .active.carousel-item + .carousel-item + .carousel-item + .carousel-item { position: absolute; top: 0; right: -33.3333%; z-index: -1; display: block; visibility: visible; } /* left or forward direction */ .active.carousel-item-left + .carousel-item-next.carousel-item-left, .carousel-item-next.carousel-item-left + .carousel-item, .carousel-item-next.carousel-item-left + .carousel-item + .carousel-item, .carousel-item-next.carousel-item-left + .carousel-item + .carousel-item + .carousel-item { position: relative; transform: translate3d(-100%, 0, 0); visibility: visible; } /* farthest right hidden item must be abso position for animations */ .carousel-inner .carousel-item-prev.carousel-item-right { position: absolute; top: 0; left: 0; z-index: -1; display: block; visibility: visible; } /* right or prev direction */ .active.carousel-item-right + .carousel-item-prev.carousel-item-right, .carousel-item-prev.carousel-item-right + .carousel-item, .carousel-item-prev.carousel-item-right + .carousel-item + .carousel-item, .carousel-item-prev.carousel-item-right + .carousel-item + .carousel-item + .carousel-item { position: relative; transform: translate3d(100%, 0, 0); visibility: visible; display: block; visibility: visible; } }
  19. gabrielms

    Problema ao realizar um UPDATE com o PHP pdo mysql

    @luismanoel12 Bom quando você tenta atualizar o usuário você seleciona o campo do usurário com o novo nome e não com o antigo. $cmd = $pdo->prepare("UPDATE usuarios SET usuario = :usuario /* Aqui ele vai passar o valor do usuairo novo */, email = :email WHERE usuario = /* Aqui você tem que colocar o nome do usuário atual e não o nome de usuário novo */ "); $cmd->bindValue(":usuario",$usuario); // valor com o nome de usuário novo $cmd->bindValue(":email",$email); Você tem que colocar o valor do usuário atual em where . $cmd = $pdo->prepare("UPDATE usuarios SET usuario = :usuario, email = :email WHERE usuario = '".$_SESSION['usuario']."'; "); $cmd->bindValue(":usuario",$usuario); $cmd->bindValue(":email",$email); Eu não recomento a você utilizar o valor em session para fazer isso,. mas como teste ele pode servir.
  20. gabrielms

    Executar comando php sem ter que ter um formulário

    @andre2654 Para fazer isso você tem que utilizar o AJAX. Aqui tem um artigo falando sobre https://www.w3schools.com/whatis/whatis_ajax.asp.
  21. @kriskastro Bom amigo não deu para entender seu código ele está meio bagunçado. Algo muito estralho, é que você utilizar setTimeout para inserir o evento de click no botão. Se você quer espera a página carregar para inserir esses eventos e evitar erros, você pode utilizar o evento onload ou o método Ready Event Jquery. Exemplo: window.omload = function() { jQuery('#clica-botao-house').on('click', function(){chama ()}); jQuery('[data-avia-form-id]').hide(); } /* Método Jquery */ $(document).ready(function(){ jQuery('#clica-botao-house').on('click', function(){chama ()}); jQuery('[data-avia-form-id]').hide(); }); /* Método ainda mais curto Jquery */ $(function(){ jQuery('#clica-botao-house').on('click', function(){chama ()}); jQuery('[data-avia-form-id]').hide(); }); Para adicionar um código de redirecionamento caso ocorra uma requisição bem sucedida, eu precisos saber aonde acontece a requisição e como funciona o retorno dela. Você passa os dados do formulário para uma função chamada hc_envia_mensagemm e depois salva o retorno dela em uma variável, porem você não utiliza o retorno da função nem mesmo verifica o retorno. Vou deixa um exemplo do formulário com algumas modificações que eu fiz, com ele você pode modifica e adiciona o redirecionamento que você deseja. <div> <form onsubmit="return false;" class="avia_ajax_form av-form-labels-visible avia-builder-el-123 el_after_av_hr avia-builder-el-last av-custom-form-color av-light-form" method="post" name="formhouse"> <fieldset> <p id="element_avia_1_1" class=" first_form form_element form_element_third"> <label for="avia_1_1">Nome <abbr class="required" title="required">*</abbr></label> <input id="avia_1_1" class="text_input is_empty" name="nome" type="text" value="" placeholder="Nome" required> </p> <p id="element_avia_2_1" class=" form_element form_element_third"> <label for="avia_2_1">E-Mail <abbr class="required" title="required">*</abbr></label> <input id="avia_2_1" class="text_input is_empty" name="email" type="text" value="" placeholder="E-mail" required> </p> <p id="element_avia_3_1" class=" form_element form_element_third"> <label for="avia_3_1">Telefone <abbr class="required" title="required">*</abbr></label> <input id="avia_3_1" class="text_input is_phone" name="telefone" type="text" value="" placeholder="DDD + Telefone" required> </p> <p id="element_avia_4_1" class=" first_form form_element form_fullwidth av-last-visible-form-element"> <label class="textare_label hidden textare_label_avia_4_1" for="avia_4_1">Mensagem <abbr class="required" title="required">*</abbr></label><br> <textarea id="avia_4_1" class="text_area is_empty" cols="40" name="mensagem" rows="7" required></textarea> </p> <input id="avia_5_1" name="avia_5_1" type="hidden" value=""> <input name="avia_generated_form1" type="hidden" value="1"> <input id="clica-botao-house" class="button" type="submit" value="Enviar"> </fieldset> </form> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <script> $(function(){ $("[name=formhouse]").on("submit", function(event){ let formulario = $(this), dados = formulario.serializeArray(); /* Filtros */ /* Verificar Nome */ dados[0]["value"] = dados[0]["value"].trim(); if (dados[0]["value"] == "") { alert("O campo nome é obrigatório."); return false; } /* Verificar e-mail */ dados[1]["value"] = dados[1]["value"].trim(); if (!validacaoEmail(dados[1]["value"])) { alert("E-mail invalido."); return false; } /* Verificar Telefone */ dados[2]["value"] = dados[2]["value"].replace(/[^0-9]/g, ""); if(!validatePhone( dados[2]["value"])) { alert("Numero de telefone é invalido."); return false; } /* Verificar Messagem */ dados[3]["value"] = dados[3]["value"].trim(); if (dados[3]["value"] == "") { alert("O campo mensagem está em branco."); return false; } /* Ajax */ $.ajax({ url : "URL", method : "POST", data : dados, success : function(){ window.location.href = "URL DE SUCESSO"; }, error : function(){ alert("Ocorreu um erro. Tente novamente mais tarde."); } }); event.preventDefault(); return false; }); $("[data-avia-form-id]").hide(); }); /* Função de verificação de e-mail. Fonte: https://www.devmedia.com.br/validando-e-mail-em-inputs-html-com-javascript/26427*/ function validacaoEmail(field) { usuario = field.substring(0, field.indexOf("@")); dominio = field.substring(field.indexOf("@") + 1, field.length); if ( (usuario.length >= 1) && (dominio.length >= 3) && (usuario.search("@") == -1) && (dominio.search("@") == -1) && (usuario.search(" ") == -1) && (dominio.search(" ") == -1) && (dominio.search(".") != -1) && (dominio.indexOf(".") >= 1)&& (dominio.lastIndexOf(".") < dominio.length - 1) ) { return true; } return false; } /* Função de verificação de telefone. Fonte: https://pt.stackoverflow.com/questions/293950/valida%C3%A7%C3%A3o-campo-telefone */ function validatePhone (phone) { var regex = new RegExp('^((1[1-9])|([2-9][0-9]))((3[0-9]{3}[0-9]{4})|(9[0-9]{3}[0-9]{5}))$'); return regex.test(phone); } </script>
  22. gabrielms

    Callback de resultado do AJAX - Como faço?

    @FabianoSouza A função upDateRating() vai retorna um array, mas pra isso acontecer você tem que passar um valor para ela, nesse caso é o valor que vai ser usado no método getTarget(). O retorno dessa função é utilizado em outro função, a função upDateCard(), que espera receber um array, ele vai fazer uma conversão desse valor array e chama a função ajax() passando esse valor convertido. No código que eu montei eu chama a função upDateCard() passando a função upDateRating(), como o retorno da função upDateRating() e um array, a função upDateCard() vai pegar esse retorno, que e um array, e ele vai fazer a conversão dessa array e chamar a função ajax() passando o valor convertido. upDateCard(upDateRating()); Como na sua função upDateRating() você esperar um valor, eu achei que você sabia aonde colocar o valor. O valor vai ser utilizado no método getTarget() dentro da função upDateRating(), e caso esse valor não seja inserido ele não vai retorna nada e vai dar um erro de sintaxe. Provavelmente esse é o erro na sua aplicação.
  23. gabrielms

    Sombreamento Celula

    @joao.felipe Bom tarde! Cara quando você for publica no fórum tenta usar a tag code, o código fica bem mais organizado. Em relação ao código, eu notei que tem um erro no array mapCherbox, no primeiro object dentro do array o indece com o nome de alert está sem o dois pontos, e também tem um outro erro no atributo onclick dentro do elemento input com o nome de "btn1", você acabo deixando passar um ponto junto do nome da função que você ia chamar quando ocorresse aquele evento. Eu adicionei um evento de verificação de load da págia no seu código também adicionei o charset UTF-8 no cabeçalho da página, assim você não vai ter problema com carácter especial. Obs.. pra que um array com um object que só tem um método alert? <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Joao</title> </head> <body> <form onsubmit="return false"> <table width="" border="1" cellspacing="10" cellpadding="4"> <tr align="center"> <td>--</td> <td> -- <br></td> <td>A</td> <td>B</td> <td>C</td> <td>D</td> <td>E</td> <td>F</td> <td>G</td> <td>H</td> <td>I</td> <td>J</td> <td>K</td> <td>L</td> <td>M</td> <td>N</td> <td>O</td> <td>P</td> <td>Q</td> <td>R</td> <td>S</td> <td>T</td> <td>U</td> <td>V</td> <td>X</td> </tr> <tr align="center"> <td><input type="button" name="btn1" value="Filtrar" onclick="obterMarcados()"> </td> <td> <input type="button" name="btn" value="Verificar Marcados" onclick="obterMarcados()"> <br></td> <td COLSPAN="12" align="center">RAIZES 8</td> <td COLSPAN="4" align="center">RAIZES 7</td> <td COLSPAN="2" align="center">RAIZES 6</td> <td td COLSPAN="3" align="center">VEREDAS 2</td> <td>CARANDÁ</td> <td>PALMAS</td> </tr> <tr align="center"> <td>--</td> <td> -- <br></td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>7</td> <td>8</td> <td>9</td> <td>10</td> <td>11</td> <td>12</td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>1</td> <td>2</td> <td>1</td> <td>2</td> <td>3</td> <td>1</td> <td>1</td> </tr> <tr align="center"> <td>01</td> <td align="left"> <input type="checkbox" id = "3DS Max" name="checkbox1" value="3DS Max" > 3DS Max <br></td> <td bgcolor="green" id="A1">A1 </td> <td id="B1">B1</td> <td>C1</td> <td>D1</td> <td>E1</td> <td>F1</td> <td>G1</td> <td>H1</td> <td>I1</td> <td>J1</td> <td>K1</td> <td>L1</td> <td>M1</td> <td>N1</td> <td>O1</td> <td>P1</td> <td>Q1</td> <td>R1</td> <td>S1</td> <td>T1</td> <td>U1</td> <td>V1</td> <td>X1</td> </tr> <tr align="center"> <td>02</td> <td align="left"> <input type="checkbox" id = "Adobe + Audacity" name="checkbox1" value="Adobe + Audacity" > Adobe + Audacity <br></td> <td bgcolor="white" id="A2">A2 </td> <td>B2</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> </tr> <tr align="center"> <td>03</td> <td align="left"> <input type="checkbox" id = "Anaconda Python 5" name="checkbox1" value="Anaconda Python 5" > Anaconda Python 5 <br></td> <td bgcolor="white" id="A3">A3 </td> <td>B3</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> <td>6</td> <td>1</td> <td>2</td> <td>3</td> <td>4</td> <td>5</td> </tr> </table> </form> <script> window.onload = function() { mapCheckbox = [ { alert : alert('funcao Mapeia Checkbox') // checkbox que será clicado }, { checkboxId: '3DS Max', // checkbox que será clicado cells: ['B1', 'C1'], // as células que serão pintadas color: '#00ff55' // a cor das células }, { checkboxId: 'Adobe + Audacity', cells: ['A2', 'B3'], color: '#7ddce4' }, { checkboxId: 'Anaconda Python 5', cells: ['G1', 'H1'], color: '#8e90c0' }, ] // Percorre todos os checkbox com o atributo "name" igual a "checkbox1" // E adiciona um ouvinte de clique em cada um (que executa a ação abaixo quando ocorre o clique) document.querySelectorAll('input[name=checkbox1]').forEach(checkbox => checkbox.addEventListener("click", function() { // Atribui à variável as opções do checkbox clicado const checkboxOptions = mapCheckbox.find(items => items.checkboxId.trim() === checkbox.id.trim()); // Pega as células que serão pintadas ao clicar neste checkbox const cells = checkboxOptions ? checkboxOptions.cells : null; // Pega todos as tags "td" const tdItems = document.getElementsByTagName('td'); // Percorre todas as tags "td" (células) para verificar se alguma corresponde à célula do checkbox clicado for (let i = 0; i < tdItems.length; i++) { const tdContent = tdItems.textContent.trim(); // Pega o texto da célula atual para verificar const cellFound = cells && cells.findIndex(cell => cell === tdContent) > -1; // Verifica se a célula atual está contida no mapCheckbox do checkbox clicado // Se o checkbox está marcado e a célula foi encontrada if (checkbox.checked && cellFound) { // Adiciona a cor predefinida tdItems.setAttribute('bgcolor', checkboxOptions.color); } // Se o checkbox não estiver marcado e a célula atual (no loop) está contida no mapCheckbox do checkbox clicado // Remove a cor else if(!checkbox.checked && cellFound ) { tdItems.removeAttribute('bgcolor'); } } })); } function obterMarcados() { var numeros = 0; var listaMarcados = document.getElementsByName("checkbox1"); if (listaMarcados.length > 0) { for (loop = 0; loop < listaMarcados.length; loop++) { let item = listaMarcados[loop]; console.log(item.checked) if (item.type == "checkbox" && item.checked) { numeros++; alert(item.value); alert(listaMarcados.length); } } if (numeros == 0) { alert("Nenhum CheckBox foi Marcado"); } } else { alert("Nao existe nenhum CheckBox com esse nome(name)"); } } </script> </body> </html>
  24. gabrielms

    Callback de resultado do AJAX - Como faço?

    @FabianoSouza Para você fazer isso é bem simples, basta mudar o return $strResp, para return upDateRating($strResp), ou upDateRating($strResp), da maneira que você colocou você está retornado o valor de $strResp para o método onreadystatechange. Notei também que tem alguma coisa estranha no seu código, você colocou uma função dentro de outra? Você também tem um problema na sua função A, se você enviar a resposta para a função A a função vai chamar o método upDateCard que chama o método ajax e o método ajax vai chamar novamente a função a, assim a função A vai acabar colocando a aplicação em um loop infinito. Eu nunca vi esse método createXMLHTTP(), ele é algum método que você criou? Vou deixa um exemplo de código com base no seu: function upDateRating(e) // Essa função só vai retorna um valor não vai mais chamar o método upDateCard(); { var $alvoClick = getTarget(e), $ul = $alvoClick.parentNode, $idItem = $alvoClick.parentNode.parentNode.parentNode.parentNode.id, $valRating = $alvoClick.value; var $array = [ { idItem : $idItem, favorito : 1, rating : $valRating } ] return($array); } function upDateCard($array) { $array = JSON.stringify($array); ajax($array); } function ajax($array) { if (window.XMLHttpRequest) { // code for modern browsers $obj = new XMLHttpRequest(); } else { // code for old IE browsers $obj = new ActiveXObject("Microsoft.XMLHTTP"); } $obj.open('post', 'server.php', true); $obj.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); $obj.onreadystatechange = function() { if ($obj.readyState == 4 && $obj.status == 200) { try { var $strResp = JSON.parse($obj.responseText); } catch(e) { alert('Erro. Dados em formato inválido.') return false; } return FuncaoC(upDateRating($strResp)); // É melhor cria outro método para manipular o reporta da função A } } $obj.send(encodeURI('str='+$array)); } function FuncaoC($res) { alert($res); } upDateCard(upDateRating()); // Chamando o upDateCard() com o retorno do método upDateRating();
  25. gabrielms

    Enviar texto e imagem para o banco de dados

    @Sapinn Bom tarde. O que você quer fazer é um sistema de CRUD, eu não vou explicar, mas você procura ai no GOOGLE que você vai entender o que é. Em relação ao sistema de blogs, geralmente só se guarda no bando de dados o HTML dá página, as imagem, videos e audios, você monta um sisteme de upload para o seu servidor, e com o HTML contido na página você pode ter elementos como img, video e audio, você pode puxa os arquivo do servidor guardando somente o endereço no HTML daquela página em especifico. Existe algumas Frameworks para facilitar sua vida com isso, como o Wordpress, ele foi feito para esse tipo de operação.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.