Jump to content

All Activity

This stream auto-updates     

  1. Past hour
  2. Today
  3. phillipijf

    Scrol retornar

    Prezados, boa tarde! Ao ativar a rolagem do scroll pelo teclado e descer duas ou mais delas ele só retorna um estágio. Alguém sabe como resolver isso? URL: Link Projeto /*! * jQuery Scrollify * Version 1.0.20 * * Requires: * - jQuery 1.7 or higher * * https://github.com/lukehaas/Scrollify * * Copyright 2016, Luke Haas * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. if touchScroll is false - update index */ (function (global,factory) { "use strict"; if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define(['jquery'], function($) { return factory($, global, global.document); }); } else if (typeof module === 'object' && module.exports) { // Node/CommonJS module.exports = factory(require('jquery'), global, global.document); } else { // Browser globals factory(jQuery, global, global.document); } }(typeof window !== 'undefined' ? window : this, function ($, window, document, undefined) { "use strict"; var heights = [], names = [], elements = [], overflow = [], index = 0, currentIndex = 0, interstitialIndex = 1, hasLocation = false, timeoutId, timeoutId2, $window = $(window), portHeight, top = $window.scrollTop(), scrollable = false, locked = false, scrolled = false, manualScroll, swipeScroll, util, disabled = false, scrollSamples = [], scrollTime = new Date().getTime(), firstLoad = true, initialised = false, destination = 0, wheelEvent = 'onwheel' in document ? 'wheel' : document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll', settings = { //section should be an identifier that is the same for each section section: ".section", sectionName: "section-name", interstitialSection: "", easing: "easeOutExpo", scrollSpeed: 1100, offset: 0, scrollbars: true, target:"html,body", standardScrollElements: false, setHeights: true, overflowScroll:true, updateHash: true, touchScroll:true, before:function() {}, after:function() {}, afterResize:function() {}, afterRender:function() {} }; function getportHeight() { return (window.innerHeight + settings.offset); } function animateScroll(index,instant,callbacks,toTop) { if(currentIndex===index) { callbacks = false; } if(disabled===true) { return true; } if(names[index]) { scrollable = false; if(firstLoad===true) { firstLoad = false; settings.afterRender(); } if(callbacks) { if( typeof settings.before == 'function' && settings.before(index,elements) === false ){ return true; } } interstitialIndex = 1; destination = (!index) ? 0 : heights[index]; if(firstLoad===false && currentIndex>index && toTop===false) { //We're going backwards if(overflow[index]) { portHeight = getportHeight(); interstitialIndex = parseInt(elements[index].outerHeight()/portHeight); destination = parseInt(heights[index])+(elements[index].outerHeight()-portHeight); } } if(settings.updateHash && settings.sectionName && !(firstLoad===true && index===0)) { if(history.pushState) { try { history.replaceState(null, null, names[index]); } catch (e) { if(window.console) { console.warn("Scrollify warning: Page must be hosted to manipulate the hash value."); } } } else { window.location.hash = names[index]; } } currentIndex = index; if(instant) { $(settings.target).stop().scrollTop(destination); if(callbacks) { settings.after(index,elements); } } else { locked = true; if( $().velocity ) { $(settings.target).stop().velocity('scroll', { duration: settings.scrollSpeed, easing: settings.easing, offset: destination, mobileHA: false }); } else { $(settings.target).stop().animate({ scrollTop: destination }, settings.scrollSpeed,settings.easing); } if(window.location.hash.length && settings.sectionName && window.console) { try { if($(window.location.hash).length) { console.warn("Scrollify warning: ID matches hash value - this will cause the page to anchor."); } } catch (e) {} } $(settings.target).promise().done(function(){ locked = false; firstLoad = false; if(callbacks) { settings.after(index,elements); } }); } } } function isAccelerating(samples) { function average(num) { var sum = 0; var lastElements = samples.slice(Math.max(samples.length - num, 1)); for(var i = 0; i < lastElements.length; i++){ sum += lastElements[i]; } return Math.ceil(sum/num); } var avEnd = average(10); var avMiddle = average(70); if(avEnd >= avMiddle) { return true; } else { return false; } } var scrollify = function(options) { initialised = true; $.easing['easeOutExpo'] = function(x, t, b, c, d) { return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; }; manualScroll = { handleMousedown:function() { if(disabled===true) { return true; } scrollable = false; scrolled = false; }, handleMouseup:function() { if(disabled===true) { return true; } scrollable = true; if(scrolled) { //instant,callbacks manualScroll.calculateNearest(false,true); } }, handleScroll:function() { if(disabled===true) { return true; } if(timeoutId){ clearTimeout(timeoutId); } timeoutId = setTimeout(function(){ scrolled = true; if(scrollable===false) { return false; } scrollable = false; //instant,callbacks manualScroll.calculateNearest(false,true); }, 200); }, calculateNearest:function(instant,callbacks) { top = $window.scrollTop(); var i =1, max = heights.length, closest = 0, prev = Math.abs(heights[0] - top), diff; for(;i<max;i++) { diff = Math.abs(heights[i] - top); if(diff < prev) { prev = diff; closest = i; } } if((atBottom() && closest>index) || atTop()) { index = closest; //index, instant, callbacks, toTop animateScroll(closest,instant,callbacks,false); } }, wheelHandler:function(e) { if(disabled===true) { return true; } else if(settings.standardScrollElements) { if($(e.target).is(settings.standardScrollElements) || $(e.target).closest(settings.standardScrollElements).length) { return true; } } if(!overflow[index]) { e.preventDefault(); } var currentScrollTime = new Date().getTime(); e = e || window.event; var value; if (e.originalEvent) { value = e.originalEvent.wheelDelta || -e.originalEvent.deltaY || -e.originalEvent.detail; } else { value = e.wheelDelta || -e.deltaY || -e.detail; } var delta = Math.max(-1, Math.min(1, value)); //delta = delta || -e.originalEvent.detail / 3 || e.originalEvent.wheelDelta / 120; if(scrollSamples.length > 149){ scrollSamples.shift(); } //scrollSamples.push(Math.abs(delta*10)); scrollSamples.push(Math.abs(value)); if((currentScrollTime-scrollTime) > 200){ scrollSamples = []; } scrollTime = currentScrollTime; if(locked) { return false; } if(delta<0) { if(index<heights.length-1) { if(atBottom()) { if(isAccelerating(scrollSamples)) { e.preventDefault(); index++; locked = true; //index, instant, callbacks, toTop animateScroll(index,false,true, false); } else { return false; } } } } else if(delta>0) { if(index>0) { if(atTop()) { if(isAccelerating(scrollSamples)) { e.preventDefault(); index--; locked = true; //index, instant, callbacks, toTop animateScroll(index,false,true, false); } else { return false } } } } }, keyHandler:function(e) { if(disabled===true || document.activeElement.readOnly===false) { return true; } else if(settings.standardScrollElements) { if($(e.target).is(settings.standardScrollElements) || $(e.target).closest(settings.standardScrollElements).length) { return true; } } if(locked===true) { return false; } if(e.keyCode==38 || e.keyCode==33) { if(index>0) { if(atTop()) { e.preventDefault(); index--; //index, instant, callbacks, toTop animateScroll(index,false,true,false); } } } else if(e.keyCode==40 || e.keyCode==34) { if(index<heights.length-1) { if(atBottom()) { e.preventDefault(); index++; //index, instant, callbacks, toTop animateScroll(index,false,true,false); } } } }, init:function() { if(settings.scrollbars) { $window.on('mousedown', manualScroll.handleMousedown); $window.on('mouseup', manualScroll.handleMouseup); $window.on('scroll', manualScroll.handleScroll); } else { $("body").css({"overflow":"hidden"}); } window.addEventListener(wheelEvent, manualScroll.wheelHandler, { passive: false }); //$(document).bind(wheelEvent,manualScroll.wheelHandler); $window.on('keydown', manualScroll.keyHandler); } }; swipeScroll = { touches : { "touchstart": {"y":-1,"x":-1}, "touchmove" : {"y":-1,"x":-1}, "touchend" : false, "direction" : "undetermined" }, options:{ "distance" : 30, "timeGap" : 800, "timeStamp" : new Date().getTime() }, touchHandler: function(event) { if(disabled===true) { return true; } else if(settings.standardScrollElements) { if($(event.target).is(settings.standardScrollElements) || $(event.target).closest(settings.standardScrollElements).length) { return true; } } var touch; if (typeof event !== 'undefined'){ if (typeof event.touches !== 'undefined') { touch = event.touches[0]; switch (event.type) { case 'touchstart': swipeScroll.touches.touchstart.y = touch.pageY; swipeScroll.touches.touchmove.y = -1; swipeScroll.touches.touchstart.x = touch.pageX; swipeScroll.touches.touchmove.x = -1; swipeScroll.options.timeStamp = new Date().getTime(); swipeScroll.touches.touchend = false; case 'touchmove': swipeScroll.touches.touchmove.y = touch.pageY; swipeScroll.touches.touchmove.x = touch.pageX; if(swipeScroll.touches.touchstart.y!==swipeScroll.touches.touchmove.y && (Math.abs(swipeScroll.touches.touchstart.y-swipeScroll.touches.touchmove.y)>Math.abs(swipeScroll.touches.touchstart.x-swipeScroll.touches.touchmove.x))) { //if(!overflow[index]) { event.preventDefault(); //} swipeScroll.touches.direction = "y"; if((swipeScroll.options.timeStamp+swipeScroll.options.timeGap)<(new Date().getTime()) && swipeScroll.touches.touchend == false) { swipeScroll.touches.touchend = true; if (swipeScroll.touches.touchstart.y > -1) { if(Math.abs(swipeScroll.touches.touchmove.y-swipeScroll.touches.touchstart.y)>swipeScroll.options.distance) { if(swipeScroll.touches.touchstart.y < swipeScroll.touches.touchmove.y) { swipeScroll.up(); } else { swipeScroll.down(); } } } } } break; case 'touchend': if(swipeScroll.touches[event.type]===false) { swipeScroll.touches[event.type] = true; if (swipeScroll.touches.touchstart.y > -1 && swipeScroll.touches.touchmove.y > -1 && swipeScroll.touches.direction==="y") { if(Math.abs(swipeScroll.touches.touchmove.y-swipeScroll.touches.touchstart.y)>swipeScroll.options.distance) { if(swipeScroll.touches.touchstart.y < swipeScroll.touches.touchmove.y) { swipeScroll.up(); } else { swipeScroll.down(); } } swipeScroll.touches.touchstart.y = -1; swipeScroll.touches.touchstart.x = -1; swipeScroll.touches.direction = "undetermined"; } } default: break; } } } }, down: function() { if(index<heights.length) { if(atBottom() && index<heights.length-1) { index++; //index, instant, callbacks, toTop animateScroll(index,false,true,false); } else { portHeight = getportHeight(); if(Math.floor(elements[index].height()/portHeight)>interstitialIndex) { interstitialScroll(parseInt(heights[index])+(portHeight*interstitialIndex)); interstitialIndex += 1; } else { interstitialScroll(parseInt(heights[index])+(elements[index].outerHeight()-portHeight)); } } } }, up: function() { if(index>=0) { if(atTop() && index>0) { index--; //index, instant, callbacks, toTop animateScroll(index,false,true,false); } else { if(interstitialIndex>2) { portHeight = getportHeight(); interstitialIndex -= 1; interstitialScroll(parseInt(heights[index])+(portHeight*interstitialIndex)); } else { interstitialIndex = 1; interstitialScroll(parseInt(heights[index])); } } } }, init: function() { if (document.addEventListener && settings.touchScroll) { var eventListenerOptions = { passive: false }; document.addEventListener('touchstart', swipeScroll.touchHandler, eventListenerOptions); document.addEventListener('touchmove', swipeScroll.touchHandler, eventListenerOptions); document.addEventListener('touchend', swipeScroll.touchHandler, eventListenerOptions); } } }; util = { refresh:function(withCallback,scroll) { clearTimeout(timeoutId2); timeoutId2 = setTimeout(function() { //retain position sizePanels(true); //scroll, firstLoad calculatePositions(scroll,false); if(withCallback) { settings.afterResize(); } },400); }, handleUpdate:function() { //callbacks, scroll //changed from false,true to false,false util.refresh(false,false); }, handleResize:function() { //callbacks, scroll util.refresh(true,false); }, handleOrientation:function() { //callbacks, scroll util.refresh(true,true); } }; settings = $.extend(settings, options); //retain position sizePanels(false); calculatePositions(false,true); if(true===hasLocation) { //index, instant, callbacks, toTop animateScroll(index,false,true,true); } else { setTimeout(function() { //instant,callbacks manualScroll.calculateNearest(true,false); },200); } if(heights.length) { manualScroll.init(); swipeScroll.init(); $window.on("resize",util.handleResize); if (document.addEventListener) { window.addEventListener("orientationchange", util.handleOrientation, false); } } function interstitialScroll(pos) { if( $().velocity ) { $(settings.target).stop().velocity('scroll', { duration: settings.scrollSpeed, easing: settings.easing, offset: pos, mobileHA: false }); } else { $(settings.target).stop().animate({ scrollTop: pos }, settings.scrollSpeed,settings.easing); } } function sizePanels(keepPosition) { if(keepPosition) { top = $window.scrollTop(); } var selector = settings.section; overflow = []; if(settings.interstitialSection.length) { selector += "," + settings.interstitialSection; } if(settings.scrollbars===false) { settings.overflowScroll = false; } portHeight = getportHeight(); $(selector).each(function(i) { var $this = $(this); if(settings.setHeights) { if($this.is(settings.interstitialSection)) { overflow[i] = false; } else { if(($this.css("height","auto").outerHeight()<portHeight) || $this.css("overflow")==="hidden") { $this.css({"height":portHeight}); overflow[i] = false; } else { $this.css({"height":$this.outerHeight()}); if(settings.overflowScroll) { overflow[i] = true; } else { overflow[i] = false; } } } } else { if(($this.outerHeight()<portHeight) || (settings.overflowScroll===false)) { overflow[i] = false; } else { overflow[i] = true; } } }); if(keepPosition) { $window.scrollTop(top); } } function calculatePositions(scroll,firstLoad) { var selector = settings.section; if(settings.interstitialSection.length) { selector += "," + settings.interstitialSection; } heights = []; names = []; elements = []; $(selector).each(function(i){ var $this = $(this); if(i>0) { heights[i] = parseInt($this.offset().top) + settings.offset; } else { heights[i] = parseInt($this.offset().top); } if(settings.sectionName && $this.data(settings.sectionName)) { names[i] = "#" + $this.data(settings.sectionName).toString().replace(/ /g,"-"); } else { if($this.is(settings.interstitialSection)===false) { names[i] = "#" + (i + 1); } else { names[i] = "#"; if(i===$(selector).length-1 && i>1) { heights[i] = heights[i-1] + (parseInt($($(selector)[i-1]).outerHeight()) - parseInt($(window).height())) + parseInt($this.outerHeight()); } } } elements[i] = $this; try { if($(names[i]).length && window.console) { console.warn("Scrollify warning: Section names can't match IDs - this will cause the browser to anchor."); } } catch (e) {} if(window.location.hash===names[i]) { index = i; hasLocation = true; } }); if(true===scroll) { //index, instant, callbacks, toTop animateScroll(index,false,false,false); } } function atTop() { if(!overflow[index]) { return true; } top = $window.scrollTop(); if(top>parseInt(heights[index])) { return false; } else { return true; } } function atBottom() { if(!overflow[index]) { return true; } top = $window.scrollTop(); portHeight = getportHeight(); if(top<parseInt(heights[index])+(elements[index].outerHeight()-portHeight)-28) { return false; } else { return true; } } } function move(panel,instant) { var z = names.length; for(;z>=0;z--) { if(typeof panel === 'string') { if (names[z]===panel) { index = z; //index, instant, callbacks, toTop animateScroll(z,instant,true,true); } } else { if(z===panel) { index = z; //index, instant, callbacks, toTop animateScroll(z,instant,true,true); } } } } scrollify.move = function(panel) { if(panel===undefined) { return false; } if(panel.originalEvent) { panel = $(this).attr("href"); } move(panel,false); }; scrollify.instantMove = function(panel) { if(panel===undefined) { return false; } move(panel,true); }; scrollify.next = function() { if(index<names.length) { index += 1; //index, instant, callbacks, toTop animateScroll(index,false,true,true); } }; scrollify.previous = function() { if(index>0) { index -= 1; //index, instant, callbacks, toTop animateScroll(index,false,true,true); } }; scrollify.instantNext = function() { if(index<names.length) { index += 1; //index, instant, callbacks, toTop animateScroll(index,true,true,true); } }; scrollify.instantPrevious = function() { if(index>0) { index -= 1; //index, instant, callbacks, toTop animateScroll(index,true,true,true); } }; scrollify.destroy = function() { if(!initialised) { return false; } if(settings.setHeights) { $(settings.section).each(function() { $(this).css("height","auto"); }); } $window.off("resize",util.handleResize); if(settings.scrollbars) { $window.off('mousedown', manualScroll.handleMousedown); $window.off('mouseup', manualScroll.handleMouseup); $window.off('scroll', manualScroll.handleScroll); } // $window.off(wheelEvent,manualScroll.wheelHandler); window.removeEventListener(wheelEvent,manualScroll.wheelHandler); $window.off('keydown', manualScroll.keyHandler); if (document.addEventListener && settings.touchScroll) { document.removeEventListener('touchstart', swipeScroll.touchHandler, false); document.removeEventListener('touchmove', swipeScroll.touchHandler, false); document.removeEventListener('touchend', swipeScroll.touchHandler, false); } heights = []; names = []; elements = []; overflow = []; firstLoad=true; initialised=false; }; scrollify.update = function() { if(!initialised) { return false; } util.handleUpdate(); }; scrollify.current = function() { return elements[index]; }; scrollify.currentIndex = function() { return index; }; scrollify.disable = function() { disabled = true; }; scrollify.enable = function() { disabled = false; if (initialised) { //instant,callbacks manualScroll.calculateNearest(false,false); } }; scrollify.isDisabled = function() { return disabled; }; scrollify.setOptions = function(updatedOptions) { if(!initialised) { return false; } if(typeof updatedOptions === "object") { settings = $.extend(settings, updatedOptions); util.handleUpdate(); } else if(window.console) { console.warn("Scrollify warning: setOptions expects an object."); } }; $.scrollify = scrollify; return scrollify; }));
  4. Queria que quando o usuário efetuasse o login, exibisse a mensagem "Login efetuado com sucesso", e se houve algum erro também exibisse uma mensagem de erro. valida_login.php <?php session_start(); include_once("config/conexao_fornec.php"); if (isset($_POST['enviar'])) { if (!empty($_POST['login']) || !empty($_POST['senha'])) { $login=$_POST['login']; $senha=MD5($_POST['senha']); $comando="SELECT * FROM usuarios, orders WHERE email = '$login' and senha= '$senha' and id_usuario"; $enviar=mysqli_query($conn, $comando); $resultado= mysqli_fetch_assoc($enviar); if ($resultado) { $_SESSION['id_usuario']=$resultado['?']; $_SESSION['order_date']=$resultado['order_date']; $_SESSION['order_id']=$resultado['order_id']; $_SESSION['login']=$resultado['login']; $_SESSION['senha']=$resultado['senha']; $_SESSION['email']=$resultado['email']; $_SESSION['nome']=$resultado['nome']; $_SESSION['id']=$resultado['id']; $_SESSION['seguranca']=$resultado['seguranca']; header("location:../index.php"); exit; }else{ $_SESSION['msg'] = "<div class='alert alert-success'>Versão e Revisão cadastrada com sucesso!</div>"; } }else{ $_SESSION['mensagem']="<div class='alert alert-danger alert-dismissible text-center' style='width: 24.5%; position: absolute; margin-left: 38.2vw; margin-top: 3vh;'><button type='button' class='close' data-dismiss='alert'>&times;</button>Ops! Alguns dos campos ficou em branco.</div>"; header("location:https://compre-aqui.com/users/"); exit; } }else{ header("location:users"); exit; } ?> Corpo do login <section class="hero is-success is-fullheight"> <div class="hero-body"> <div class="container has-text-centered"> <div class="column is-4 is-offset-4"> <h2 class="text-center mb-4">Faça seu login</h2> <div class="box"> <form action="validar_login.php" method="POST"> <div class="field"> <div class="form-group"> <label for="name">E-mail</label> <input name="login" id="name" type="name" class="form-control" placeholder="Nome completo"> </div> </div> <div class="field"> <div class="form-group"> <label for="senha">Senha</label> <input name="senha" id="senha" class="form-control" type="password" placeholder="Senha"> </div> </div> <button type="submit" class="btn btn-info btn-block" name="enviar">Realizar login</button> </form> <hr style="background-color: white;"> <a href="https://compre-aqui.com/users/cadastro.php" class="btn btn-info btn-block mt-2">Esqueci minha senha</a> <a href="https://compre-aqui.com/users/cadastro.php" class="btn btn-info btn-block mt-2">Cadastre-se</a> </div> </div> </div> </div> </section>
  5. Overtron8000

    Retorno assíncrono

    Ola Pessoas, Recentemente fiz uma prova para Desenvolvedor Javascript jr em uma empresa e tinha varias questões para escrever o código NA MÃO e uma delas me deixou encabulado por exigirem que um junior saiba de cór isso era a seguinte pergunta: Dado o JSON abaixo construa um código que faça o calculo da media do parâmetro "time" quando "type" for semelhante a "call" e o máximo valor para "time" quando "type for semelhante a "ping". Considere que o array events poderá conter milhões de objetos portanto seu código deve levar em consideração o processamento assíncrono do Node.js de forma que o resultado síncrono, ou seja, o codigo so deve completar quando o resultado do s cálculos estiverem prontos. JSON : events = { [ {type:"ping", time :10) [ {type:"ping", time: 5) [ {type:"call", time: 99) [ {type:"call", time: 67) [ {type:"ping", time: 7) [ {type:"call", time: 127) } Isso tudo para fazer no resto da folha que sobrou alem da pergunta, se alguém saber uma solução poste ai que estou curioso ate hoje, sei que leva o conceito de promisses assíncronas mas ainda não cheguei nessa parte
  6. Ygor Guedes

    Consulta em 3 tabelas

    Bom dia Motta! Já pensei sim, porém, esta tabela é apenas uma informação sem importância; ela apenas pega o status do computador pra saber quando foi a última vez que ele comunicou com meu servidor. Por isso que a tabela está gigante. Eu não criei um robot pra isso, eu faço via SQL mesmo + ShellScript.
  7. Felipe Guedes Coutinho

    Redirecionamento com button

    @Flameisnot Exemplo de um redirecionador em um BUTTON <button onClick="javascript:window.location.href='index.php'">HOME</button> Caso você queira colocar um LINK <a href="#" onclick="myJsFunc();">Run JavaScript Code</a> Veja qual você realmente quer usar. Só uma observação, se você tem um Site já hospedado na internet, você não vai conseguir direcionar para um "link" off-line como você comentou, até porque para que o "cliente" acesse algo OFFLINE ele precisa ter a página na prória máquina, quando digo a página quero dizer o arquivo HTML+PHP+JAVASCRIPT+Qualquer outra linguagem que compoem o arquivo além de ter o servidor "carregado" caso seja um site PHP ele precisaria ter um servidor como XAMPP, WAMP, MAMP, USBWebserver Portable ou qualquer cisa desse tipo... outra observação, se você está fazendo isso em um localhost deve funcionar perfeitamente, tudo que está off funciona como se tudo estivesse on. Espero ter ajudado. Att. Felipe Coutinho
  8. Está chegando a Olivia, um app gratuito que é uma revolução do gerenciamento de finanças pessoais. Uma assistente financeira inteligente e gratuita que te ajuda a fazer mais com seu dinheiro. Para ser um dos primeiros a testar o serviço, basta clicar no link https://www.olivia.ai/r/nouJJzuDEs/d
  9. Boa noite, Gostaria de após selecionar o produto carregasse outro select informando os preços(tabela produto), com javascript fazendo requisição para a servlet. div class="form-group col-md-4"> <label for="exampleInputEmail1">Produto</label> <select class="form-control select2" style="width: 100%;" id="id_produto" name="id_produto"> <option value="nao_informado">Selecione</option> <c:forEach items="${produto}" var="product"> <option value="${product.id}" id="${product.id}" <c:if test="${product.id == orcament.id_produto}"> <c:out value = "selected=selected" /> </c:if>> ${product.descricao}</option> </c:forEach> </select> </div> <div class="form-group col-md-1"> <label for="exampleInputEmail1">Tabela/Precos</label> <select class="form-control select2" style="width: 100%;" id="id_table" name="id_table" > <option value="nao_informado">Selecione</option> </select> </div>
  10. Conheça o Bert, o novo algoritmo de buscas do Google
  11. Yesterday
  12. Motta

    Consulta em 3 tabelas

    Pensou em particionar ? https://dev.mysql.com/doc/refman/5.7/en/partitioning.html Pense bem antes de descartar dados , informação é dinheiro. $$$ Volume de passageiros por hora e ponto , publicidade .... etc ...
  13. ndias

    Verificar se conexão mysql ficou aberta com PDO

    estou com problemas na minha hospedagem que está dizendo ficar aberta minhas conexões e por isso consumir recursos do servidor
  14. Gleyson Abreu

    Verificar se conexão mysql ficou aberta com PDO

    Basicamente o PDO encerra a conexão quando o script é finalizado. Da uma lida nesse tópico: https://forum.imasters.com.br/topic/558133-encerrar-conexao-pdo-no-mysql/
  15. Ygor Guedes

    Consulta em 3 tabelas

    Motta, boa tarde! Sua consulta demorou também. Eu deixei minha consulta desse jeito (menor tempo que encontrei): SELECT m.onibus_ponto, data FROM status AS m INNER JOIN (SELECT onibus_ponto, MAX(data) AS data FROM status GROUP BY onibus_ponto) x USING(onibus_ponto, data) INNER JOIN cadastro_pontos AS c ON c.onibus_ponto = m.onibus_ponto WHERE data < (NOW() - INTERVAL 4 MINUTE) GROUP BY m.onibus_ponto No entanto, realmente, minha tabela está ficando imensa pelo fato de ter muitos registros em pouco tempo; já está na casa de 1 milhao de registros. Pensei bem e gostaria de excluir os antigos, por grupos (onibus_ponto). Queria excluir os dados mais antigos de cada grupo deixando uns 2 registros, os mais novos, apenas. Da imagem que segue, gostaria de deixar da coluna onibus_ponto apenas os 2 registros mais novos: (12/09/19 10 AM e 12/09/19 09 AM) - onibus_ponto 10 (12/09/19 09 AM e 12/09/19 07 AM) - onibus_ponto 5 (12/09/19 10 AM e 12/09/19 05 AM) - onibus ponto 4 O restante, eu gostaria de excluir tudo. Assim evita de ficar uma tabela com muitos dados.
  16. Estou com duvida se minha conexão está encerrando. Utilizo PDO para me conectar: public static function getDb(){ try { $db = new \PDO( 'mysql:host=localhost;dbname=xyz;charset=utf8', 'xyz', 'xyz1234', array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ) ); return $db; } catch (PDOException $e) { echo "Erro de Conexão " . $e->getMessage() . "\n"; exit; } } public function __construct(\PDO $db) { $this->db = $db; } public function verifica(){ $sql = "SELECT * FROM tabela "; $result = $this->db->query($sql); $rows = $result->fetch(); if($rows){ }else{ } } public function __destruct() { unset($this->db); foreach ($this as $key => $value) { unset($this->$key); } } Estou fazendo certo? Como posso verificar se a conexão está ficando aberta?
  17. Jeová Oliveira dos Santos

    Erro ao Acessar via PDO

    Não acha a função prepare class ClassCrud extends ClassConexao { #Atributos private $Crud; private $Contador; #Preparação das declarativas public function preparedStatements($Query, $Parametros){ $this->countParamentos($Parametros); $this->Crud=$this->connectaDB()->prepare($Query); echo $this->Contador; } #Contador de parâmentros private function countParamentos($Paramentors){ $this->Contador=count($Paramentors); } } ClassConexao <?php abstract class ClassConexao { #Realizar conexão com o banco de dados protected function conectaDB() { try { $conn = new PDO('mysql:host=localhost;dbname=crud;port=3308', "root", ""); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //$id = 1; //$stmt = $conn->prepare('SELECT * FROM cadastro WHERE id = :id'); //$stmt->execute(array('id' => $id)); //$result = $stmt->fetchAll(); //if (count($result)) { // foreach ($result as $row) { // print_r($row); // } //} else { // echo "Nennhum resultado retornado."; //} } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } } Index <?php include ("Includes/Header.php"); ?> <div class="Content"> <?php include("Class/ClassConexao.php"); include("Class/ClassCrud.php"); $Crud=new ClassCrud(); $Crud->preparedStatements('desfilar',array(1,2,3,4,5)); ?> </div> <?php include ("Includes/Footer.php"); ?> Mais o erro acontece e não consigo resolver. Erro abaixo Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp64\www\Crud\Class\ClassCrud.php on line 14
  18. Fala galera, estou com um problema e não sei como resolver. Até encontrei umas respostas, mas utilizando Php e Mysql. Preciso que a resposta seja utilizando as tecnologias javascript (node) e Mysql. Gostaria de capturar dados de um formulário utilizando array e salvando o mesmo num banco de dados. Ex: Imagine um 3 inputs do tipo text que recebem um valor que é inserido pelo cliente e que cada input, possa receber valores diferentes (como se cada um fosse uma variável 'titulo', 'conteudo' e 'autor') quero que depois que o cliente enviar os dados que por ele foram inputados, esses dados sejam enviados para as variáveis 'titulo', 'conteudo' e 'autor'. Logo depois quero declarar um array que receba essas variáveis [titulo, conteudo, autor] e desejo armazenar o array no banco de dados utilizando Mysql Desde já, agradeço!
  19. Resumo sobre o Gameplay do Jogo: Fursan al-Aqsa - Cavaleiros da Mesquita de al-Aqsa é um jogo de ação em terceira pessoa que segue a linha de games tradicionais de tiro como Metal Gear Solid, Call of Duty e Insurgency Sandstorm. O jogador passa por diferentes cenários (missões) tridimensionais que representam as cidades ocupadas do território palestino, como por exemplo, Jerusalém, Faixa de Gazza, Jenin, Yarmuk, dentre outras. Em cada cenário (missão) o jogador tem diversas tarefas a cumprir, sendo o principal objetivo de cada missão proteger os civis palestinos de ataques do exército israelense. Por exemplo, na primeira missão (cenário), o objetivo principal do jogador é destruir o protótipo de um novo modelo de Helicóptero Apache desenvolvido pelo exército israelense para ser usado como arma de destruição em massa contra civis palestinos. Porém, para destruir o helicóptero o jogador precisar eliminar os soldados Israelenses usando armas, pois esses soldados tentarão impedir a todo o custo o jogador de completar a sua missão. Na segunda missão o jogador tem que resgatar civis palestinos feridos embaixo dos escombros de casas destruídas pelo bombardeio israelense contra a Faixa de Gazza e levá-los para um local seguro, e depois deve destruir os aviões israelenses com uma bazooka. O restante das missões (cenários) segue este mesmo padrão. Já a última missão, para desfecho da história fictícia do protagonista do Jogo, o jogador deve lutar para proteger a Mesquita de al-Aqsa dos bombardeios e das escavadeiras que querem derrubar esse templo sagrado para os muçulmanos. Observações sobre a Representação da Violência no Jogo: Neste jogo, o jogador não atira contra civis israelenses, mulheres, crianças, idosos, apenas contra soldados. Também neste jogo NÃO HÁ imagens de conteúdo sexual, drogas ilícitas, profanação religiosa, discurso de ódio contra algum grupo, etnia ou religião, propaganda anti-semitista contra judeus, propaganda nazista ou a vangloriação de grupos terroristas e/ou outros atos ilícitos. Este Jogo apenas contém a representação virtual do Movimento de Resistência Palestina contra a Ocupação Militar Israelense, algo que é reconhecido oficialmente pelas Organizações das Nações Unidas (ONU). Conforme mencionado anteriormente, este jogo, Fursan al-Aqsa - Os Cavaleiros da Mesquita de al-Aqsa segue a linha de games tradicionais de tiro como Metal Gear Solid, Call of Duty e Insurgency Sandstorm, inclusive no quesito do conteúdo de violência virtual. O jogo contém o mesmo padrão de imagens de violência virtual que é representada nos jogos de tiro atuais, utilizando de gráficos tridimensionais simulando a realidade, onde bonecos (avatares) vestindo uniformes militares são mortos pelo jogador, utilizando-se de armas como pistola, revólver, rifles, granadas, faca, etc. Quando o jogador inflige dano ao inimigo, este esboça uma animação que representa o dano, como por exemplo, um tiro na perna faz com que o boneco (avatar) inimigo caia no chão ferido, e dependendo da quantidade de tiros que o jogador desfere contra o inimigo, este vem a óbito, que é representado por uma animação padrão utilizada em jogos de tiros atuais (cair no chão lateralmente, de frente, para trás), animação essa realizada por uma simulação física virtual conhecida como ragdoll. Quando o jogador inflige dano ao inimigo, uma representação gráfica mostra o sangue (virtual) do inimigo, e este sangue fica agregado ao cenário (espirra no chão e nas paredes), simulando uma situação real de guerra. Finalizando, referente a trilha sonora contida no jogo, as músicas são no idioma Árabe, e são músicas tradicionais do folclore Palestino que exaltam a bravura do Povo na Luta pela Liberdade da Palestina. Não vou alongar muito este post, porém, aqui vocês podem acessar o Site do Game: https://sites.google.com/view/fursanalaqsagame/br No site tem vários trailers incluindo o Gameplay no PC, PS3 e Xbox360. Porém esse gameplay é de uma versão Beta do meu jogo, pois atualmente o game está mais polido, inclusive eu já atualizei o modelo do protagonista do jogo, apenas não atualizei ainda os vídeos de gameplay e trailers promocionais. E aqui vocês podem acompanhar o Desenvolvimento deste Game: https://www.moddb.com/games/fursan-al-aqsa-knights-of-al-aqsa-mosque Nesse site ModDB, tem muitas imagens e vídeos de making off do game, para vocês acompanharem o desenvolvimento. Alías, se vocês puderem votar para me dar uma força nesse site ModDB, quem sabe meu game ganhe um pouco mais de visibilidade, pois ele está concorrendo à nomeação Game Indie do Ano nesse site.
  20. Fala galera, blz!!! Todos vocês aqui me conhecem pelo meu projeto do Port da UDK Engine / UE3 para PS3 e Xbox360: https://forum.imasters.com.br/topic/584217-atualização-da-minha-engine-udk-para-ps3-hen/ E como muitos de vocês sabem, eu estou utilizando essa minha engine para desenvolver meu primeiro game comercial, que pretendo lançar em seguida. Este game trata sobre a Resistência Palestina contra a Ocupação Militar Israelense. Eu sei que esse tema é um tema muito delicado, pois existem vítimas dos dois lados dessa guerra, porém, peço que vocês leiam com atenção esse post para compreender que esse meu game NÃO É "PROPAGANDA TERRORISTA". Aliás, eu enviei esse meu game para o Ministério da Justiça e Segurança Pública para Aprovação e Classificação Indicativa. Meu projeto foi aprovado e recebeu a classificação indicativa para maiores de 18 anos. Neste link vocês podem verificar essa informação: http://portal.mj.gov.br/ClassificacaoIndicativa/jsps/JogosJustificativaForm.do?select_action=&tbClassificacaoJogo_Analise=0&tbdocumento_numerodoc=08017.001703/2019-04 Resumo sobre o Tema do Jogo: Fursan al-Aqsa - Cavaleiros da Mesquita de al-Aqsa é um jogo de ação em terceira pessoa que retrata a Resistência do Povo Palestino contra a Ocupação Militar Israelense, através da história fictícia de um jovem estudante palestino chamado Ahmad al-Ghazzawi, que foi injustamente torturado e preso por soldados israelenses durante 5 anos, teve toda a sua família morta em um ataque aéreo israelense e agora depois de sair da prisão, ele busca por vingança contra aqueles que o torturaram, mataram a sua família e roubaram a sua pátria. Resumo sobre a História do Jogo: Ahmad é um jovem muçulmano pacífico, estudante de Bioengenharia, cujo sonho era se dedicar a criação de próteses para ajudar os feridos de guerra a terem uma melhor qualidade de vida. Ele sempre desejou a paz entre Palestinos e Israelenses pelo fato de ver dia a dia como pessoas inocentes, dos dois lados, sofriam com a guerra. Certo dia, ao retornar da Universidade, Ahmad, por decreto do destino, se envolveu, contra sua vontade, em um Protesto onde milhares de Palestinos estavam jogando pedras contra os Soldados Israelenses, pedindo pelo fim da ocupação militar. Ahmad e muitos outras pessoas foram presas nesse protesto e levadas para interrogatório na Delegacia Israelense. As pessoas que estavam de fato envolvidas no protesto, foram executadas, porém, Ahmad, teve sua vida poupada pois as autoridades Israelenses não encontraram nenhum registro de envolvimento de Ahmad em atividades contra soldados Israelenses. Mas ele foi preso, injustamente e sofreu na prisão todos os tipos de torturas e humilhações que um homem pode sofrer. Cinco anos se passaram e Ahmad continuava a sofrer injustamente na prisão, sendo impedido de receber visitas de amigos e familiares. Quando finalmente ele foi autorizado a receber visitas, recebeu o seu primo, trazendo as piores notícias que ele jamais poderia esperar. Ahmad foi informado de que toda sua família foi morta em um ataque aéreo israelense, inclusive sua noiva. Daquele momento então, aquele jovem uma vez pacífico, se transformou em um homem sedento por vingança, e estava decidido a se vingar do Exército Israelense no momento que saísse da prisão. Um dia antes de sair da prisão, Ahmad recebeu um novo companheiro de cela, um homem chamado Abu Ubayda, cuja condenação seria a pena de morte, no dia seguinte, o mesmo dia em que Ahmad conseguiria sua liberdade. Abu Ubayda contou sua história para Ahmad, de que ele era um Ex Combatente da Resistência Palestina que decidiu formar um novo exército de soldados palestinos com o objetivo de pôr fim a ocupação militar Israelense, o "Fursan al-Aqsa (traduzido para o português: Os Cavaleiros da Mesquita de al-Aqsa)", pois os tradicionais movimentos de Resistência Palestina, com o passar dos anos se corromperam e abandonaram a causa da luta pela Libertação da Palestina. Esse novo grupo estava preparando um grande ataque a pontos estratégicos do Exército Israelense nas terras ocupadas da Palestina com o objetivo de pôr fim a ocupação militar e libertar a Palestina, a operação "Mohammed al-Ayash" (em homenagem ao nome do grande líder da Resistência Palestina). Mas infelizmente um dos membros do Fursan al-Aqsa era um espião israelense infiltrado, que armou uma cilada para os verdadeiros integrantes do grupo, cilada essa que ocorreu no mesmo dia da operação "Mohammed al-Ayash" e que resultou na morte de todos os soldados do Fursan al-Aqsa e na prisão do líder, Abu Ubayda, agora ferido e condenado à pena de morte. Ahmad, ao ouvir a história de Abu Ubayda, decidiu completar essa missão por conta própria, mesmo sabendo dos riscos dessa operação, com a consciência de que esta missão pode resultar em sua morte. E no momento que ele saiu da prisão, ele recebeu de Abu Ubayda todas as instruções da operação "Mohammed al-Ayash" e a partir daquele momento, Ahmad estava pronto para completar a operação e se vingar daqueles que o torturaram, mataram a sua família e roubaram a sua pátria. Continua na próxima postagem
  21. Ola, como eu faço para colocar esta nav na horizontal ? <html> <head> <!-- Meta tags Obrigatórias --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <title>Menu Dropdown - Linha de Código</title> <link rel="stylesheet" type="text/css" href="topo3.css" /> <script type="text/javascript" src="topo3.js" > </script > <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> </head> <body> <nav class="navbar fixed-top navbar-light bg-light"> <div class="col-6"> <?php echo "<strong>Identificacao da empresa : </strong>".$_SESSION['id_empresa']." - ".$_SESSION['id_razaosocial']."<br/>";?> </div> <div class="col-6"> <?php echo "<strong>Usuario logado : </strong>".$_SESSION['id_usuario']." - ".$_SESSION['id_nomeusuario']."<br/>";?> </div> </nav> <br/><hr/> <ul class="nav nav-pills nav-fill nav-justified"> <li class="nav-item"> <a class="nav-link active" href="#">Ativo</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a> <div class="dropdown-menu"> <a class="dropdown-item" href="#">Ação</a> <a class="dropdown-item" href="#">Outra ação</a> <a class="dropdown-item" href="#">Algo mais aqui</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#">Link isolado</a> </div> </li> <li class="nav-item"> <a class="nav-link" href="#">Link</a> </li> <li class="nav-item"> <a class="nav-link disabled" href="#">Desativado</a> </li> </ul> <nav class="navbar fixed-bottom navbar-light bg-light"> <a class="navbar-brand" href="#">Fixo na parte inferior</a> </nav> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> </body> </html>
  22. Olá Galera! Sou novo por aqui e gostaria de saber se poderiam me indicar um software de fácil operação para criar aqueles bonecos brancos sem rosto como nas imagens abaixo... Desde já agradeço! https://br.pinterest.com/pin/309692911873702757/ https://www.google.com/search?q=bonecos+brancos+sem+rosto&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjb07L63qjmAhVkJrkGHYWPAyAQ_AUoAXoECAwQAw&biw=1360&bih=625#imgrc=_
  23. Lucila Freire

    Sidebar sumiu

    Prezados, A sidebar do meu site desapareceu do nada e não consigo fazê-la visível. Não sei o que houve. No wordpress, aparece essa mensagem: "O seu tema tem 4 outras áreas de widgets, mas esta página em particular não as apresenta. Pode navegar para outras páginas no seu site enquanto usa o Personalizador para ver e editar os widgets mostrados nessas páginas". Vi que um participante do fórum fez uma pergunta parecida e pediram para limpar o diretório dos plugins, mas não sei fazer isso. Não entendo nada dessa área e estou perdida. Quando procuro a Hostgator, ele falam que não dão suporte ao wordpress. Por favor, me ajudem. Preciso terminar o meu site o quanto antes, mas fica difícil com um problema como esse.
  24. wanderval

    Redirecionamento com button

    na verdade pelo que li você esta fazendo errado, você está utilizando button e um "a" e porque não apenas o "a" já que você pode estilizar ele pra parecer um botão e o href ira funcionar normalmente
  25. wanderval

    JSON retorna apenas um row

    Seu erro é simples, pelo seu código você está substituindo o valor dentro #trHorarios sempre pelo valor atual da iteração: .html você insere o conteúdo dentro do corpo do elemento mas não mantém o item atual somente reescreve o dom $("#trHorarios").html(item); agora altere para isso: $("#trHorarios").append(item); O append adiciona o novo item mantendo os items existentes dentro do corpo do elemento
  26. Claudio r Martinez

    url amigavel-parametros

    Olá amigos, estive pesquisando varios topicos aqui e em outros locais sobre urls amigavel, Não encontrei o que preciso e também não consegui adaptar. É assim: Tenho um site que a url original seria assim: jornadadepodologia.com.br/cursos-detalhes.asp?id_curso=82&curso_nome=ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS consegui montar a url assim: jornadadepodologia.com.br/new/ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS-idpllq82 onde o "-idpllq82" é o parametro identificador do curso. Fiz assim porque eu consigo extrair o ID que é 82 através do SPLIT no ASP. Gostaria que a url ficasse assim: jornadadepodologia.com.br/ONLINE-PROCEDIMENTOS-PODOLOGICOS-EM-UNHAS-MICOTICAS mas precisava passar os parametros de "id_curso" para a pagina cursos-detalhes.asp sem aparecer na url, deixando a url como acima. Alguém pode me ajudar. Desde já, agradeço pela ajuda.
  27. Boa tarde! Preciso de ideia ou até exemplo de algum código que simule o funcionamento das camadas de rede segundo o modelo OSI. Tenho um projeto e a ideia é apresentar as informações deste modelo sem que pareça um slide. Exemplo: Desenvolvemos um PHP um código que simula o envio da mensagem e a detecção de erros pelo método CRC. Estava pensando em algum código que pudesse animar algum objeto do meu site, tipo, fazer ele passar de camada em camada com uma explicação. Desde já, grato! Aqui algumas imagens de como estamos fazendo: (ainda se parece com um slide)
  28. Last week
  29. granderodeo

    Pegar resultados de outra tabela para exibir os produtos

    Vê só consegui, pegar os dados, mais se por exemplo o pedido número 110 pediu 5 produtos, com o código abaixo consigo exibir, mais ele só exibi o primeiro resultado ou seja só exibi o primeiro produto. <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#exampleModal<?= $row['order_id'] ?>"> <i class="fa fa-info-circle"></i> Produtos </button> </td> <!- - - FIM BOTÃO MODAL - - -> </tr> <?php endwhile; ?> </tbody> </table> </div> <?php require 'conexao_pedidos.php'; $stmt = $conn->prepare("SELECT * FROM orders, orders_items"); $stmt->execute(); $result = $stmt->get_result(); while($row = $result->fetch_assoc()): ?> <div class="modal fade" id="exampleModal<?= $row['order_id'] ?>" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel">Modal title</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <?= $row['order_id'] ?> <?= $row['product_id'] ?> <! - - Consigo pegar o produto pelo id do pedido, mais só me retorna o 1º valor - -> <?= $row['quantity'] ?> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> </div> </div> <?php endwhile; ?>
  1. Load more activity
×

Important Information

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