Publicidade

Placar de líderes


Conteúdo popular

Exibindo o conteúdo com as maiores reputações desde 27-01-2017 em todas as áreas

  1. 4 pontos
    Seu problema é realmente com o PHP ?! O objetivo deste pequeno artigo é orientar você na hora da criação de um novo tópico para descrever o seu problema, afim de ajudar definir qual área seria adequada para tratativa do mesmo, ajudando assim a organização do Fórum e consequentemente um melhor entendimento. O fórum de PHP é voltado exclusivamente à linguagem de Programação PHP , por este motivo, antes de iniciar um novo tópico com sua dúvida, certifique-se de que seu problema realmente está relacionado com PHP e não com outro tipo de linguagem ou tecnologia. Vários membros criam tópicos relatando estar com problemas, e que não sabe se esta é a área correta, e, com uma frequência muito comum, geralmente o problema não está relacionado com o PHP, e sim com JavaScript/Ajax ou HTML/CSS. Por que isso ocorre ? Geralmente você está desenvolvendo uma aplicação que envolve HTML, CSS, JavaScript, PHP, MySQL quando se depara com alguma falha/bug, e simplesmente por estar envolvendo PHP, e pelo fórum de PHP ter um maior tráfego, acabam generalizando e postando aqui o problema. Vou exemplificar algumas situações que ocorrem: Nos casos acima, é notório que o problema é com MySQL e não com o PHP, principalmente quando recebe na tela um erro de sintaxe SQL. A área correta para tratativa de sua dúvida é MySQL: Banco de Dados MySQL Entendam que PHP é uma linguagem de programação Back-End; Todo e qualquer problema com: Alinhamento de Tabela, Alinhamento de Div's, Alinhamento de Menu, e demais problemas desta ordem, fazem parte do Front-End e são relacionados a HTML/CSS. A área correta para tratativa de sua dúvida é: HTML e CSS É muito comum membros postarem esse tipo de dúvida, achando que o problema ou solução estão no PHP. Requisições sem "carregamento da página" assim por dizer, chamada "requisição assíncrona", na maioria dos casos são efetuadas com AJAX/jQuery e, por estar trabalhando em conjunto com o PHP, você acaba achando que o problema é com PHP. O mesmo ocorre com o MODAL, em que sua ação para abrir, depende de uma função javascript. Um simples erro ou uma biblioteca não inclusa pode ocasionar o problema. A área correta para tratativa de sua dúvida é: Javascript O mesmo ocorre com as demais áreas, procurem identificar o fórum coreto para tratativa do problema, assim nos ajuda a organizar e promover uma gama de conteúdo mais seletivo, específico de cada área. Ainda na oportunidade, recomendamos fortemente a leitura do tópico: ATENÇÃO: Orientações e Regras do Fórum de PHP Atenciosamente, equipe iMasters.
  2. 4 pontos
    No decorrer da minha experiência como dev, eu vi muitas decisões ruins, algumas delas eu mesmo sugeri. Mas, a que mais me impressionava era quanto ao projeto base e suas customizações. Pensando apenas em code (sem entrar em banco de dados), eu utilizaria uma mescla entre o GIT e o composer. Branch's e divisões No GIT: Dividir as branchs em 5 tipos (serão mais branchs): master, cutom-*, homologacao-*, dev-* e hotfix-*; A branch master será única e exclusivamente para o código base não customizado; A branch custom-*, será específica para o código homologado do projeto customizado para uma empresa (custom-empresa01, custom-empresa02, etc..); A branch homologacao-* será específica para homologar a transição do código de dev para prod, aonde testes de alto nível são aplicados. Cada branch de produção (master/custom) terá sua respectiva branch de homologação (homologacao-master, homologacao-custom-empresa01, etc); A branch dev-* é aonde é realizado o desenvolvimento, ela são livres, aonde o "desenvolvedor não conhece as leis" ou "o filho chora e mãe não vê", etc.. Você deve ter quantas forem necessárias, para cada implementação, cada GAP, cada moficação (dev-master-task-2784, dev-custom-empresa01-task-3500, etc...); A branch de hotfix-* é aquela correção rápida, aquele conflito do merge entre uma entre o código base e uma customização ou que está implicando em parada geral do sistema (aquele bug ou erro de português que passou pela homologação/testes), que não necessariamente deve passar por todos os passos de desenvolvimento/homologação/produção. O que nós normalmente chamamos de "codificar em prod"... Sim, isso existe na realidade de todos já fizeram. Essa é a definição da árvore do projeto. Os caminhos a serem seguidos: dev-master-* <--> homologacao-master <--> master --> homologacao-custom-* <--> custom-(todas as empresas); dev-custom-* <--> homologacao-custom-* <--> custom-*; hotfix-* <--> para aonde for necessário. Perceba que no fluxo, uma custom nunca deve levar o seu código para a master. Apenas a master pode levar códigos para a custom. Sempre utilizando a branch de homologação da custom. Fork Uma característica bem interessante dos serviços de controle de versionamento (bitbucket, github, etc...) é a possibilidade de criar um fork de um projeto. O seu projeto CORE será o repositório principal e, para cada cliente, você criará um novo fork. Logo, você terá o projeto master e os forks para cada cliente (master -> cliente-01 -> cliente-02, etc...). A divisão entre branchs, deve ser a mesma exemplificada exclusiva para a master. Ou seja, 4 tipos: master, homologação, dev-* e hotfix-*). A nomenclatura das branchs (mster, homologacao, dev-* e hotfix-*) segue a mesma definição anteriormente explicada. A parte de fluxo será o que está exemplificado abaixo: dev-* <--> homologacao <--> master; hotfix-* <--> para onde for necessário. O cuidado, vem na hora de sincronizar os forks. O BitBucket, por exemplo, lhe sugere um fork automático entre as branchs masters de cada repositório. Entretanto, para um melhor controle e validação do novo código, a sincronização deve ocorrer entre a branch master, do projeto master, para a branch homologacao do projeto customizado. Ou seja: Master:master --> Cliente-01:homologacao; Dessa forma, você pode homologar, corrigir e enviar para a produção (master) da customização de clientes. No BitBucket, para realizar tal feito, você pode ir no menu compare, escolha a branch da qual está o código (parte de baixo) e a branch na qual você quer enviar o novo código (branch de cima). Compare as diferenças e, no canto direito superior, o BitBucket lhe exibirá o botão merge. Feito o merge, o processo é exatamente o mesmo que utilizando branchs. Módulos Aqui é que entra a questão de módulos. Caso você implemente partes do sistema como módulos, você pode usar tanto o git-submodule ou o composer. Com ambos você poderá utilizar repositórios privados para baixar as suas dependências. Para cada módulo, você deverá ter o repositório separado e, caso o repositório separado seja customizado, poderá seguir a estruturação acima mencionada. Entretanto, no caso de módulos personalizados, acredito que com o git submodule não seja possível separar entre versões (branch/tags) específicas para cada projeto/branch. No caso do composer é possível, pois, cada branch/projeto, terá seu próprio composer que pode ser personalizado. Banco de dados Nesse caso, vai depender muito do que você irá utilizar para gerenciar o SGBD. Eu utilizei por muito tempo o MySQL WorkBench. Ele funciona perfeitamente quando o assunto é modelagem e sincronização. Entretanto, o formato de arquivo gerado por ele não é aberto e, em consequência, não pode ser versionado. Logo, quando uma tabela precisar ser diferente em algum projeto, você terá dois arquivos distintos. Há, também, a possibilidade de tratar tudo na forma de SQL scripts. Mas ficaria sem uma ferramenta de apoio. Talvez alguém conheça alguma ferramenta melhor para a situação. A contra-partida Quando você separa pequenas partes de um projeto em módulos e os adiciona como dependências do seu projeto, você pode encontrar uma situação denominada Dependency Hell. Esse termo também pode ser utilizado para a manutenção do código entre as branchs, pois, todas as suas customizações necessitam estarem atualizadas com a branch master. E se você almeja 30 empresas, pense que uma mudança no CORE precisa ser homologada para as 30 empresas. Considerações Sendo dicas como elas são, apenas dicas, você pode considerar demasiada estrutura e simplista ou exagerada demais e partir para uma abordagem meio termo ou mais robusta. Tudo dependerá de onde você está e para onde gostaria de chegar. Existem outras ferramentas e abordagens que pode lhe ajudar. Uma delas seria a integração contínua, o qual incluí N outras ferramentas de auxílio. Update Um sistema que gerencia suas próprias customizações acaba sendo limitado a campos e novas informações. Eu, particularmente, não gosto muito da prática. Entretanto, para evitar o problema com o SGBD, pode-se utilizar tabelas de cadastros par atributo-valor para cruzar informações dinâmicas e reduzir a necessidade de criar novas colunas e tabelas. Mas, é uma questão bem limitada. Update 2 Com a nova parte de forks (que eu não havia me lembrado anteriormente), seria a sugestão mais indicada. Pois, se você possuir uma equipe de desenvolvimento específica para cada cliente, poderá gerenciar muito melhor as permissões e acessos. O controle é bem superior a de um repositório apenas.
  3. 3 pontos
    ou: var tdList = document.querySelectorAll('tr.danger td');
  4. 3 pontos
    @Williams Duarte esse é um problema endêmico do mundo do desenvolvimento. Trabalhei nas mais variadas empresas, desde empresa com 3 pessoas, até empresa de âmbito nacionail com um número expressivo de funcionários. Todas sofrearam, sofrem e/ou sofrerão com esse problema. Somente os ERPs globais (SAP, AX, etc...) eu posso considerar uma exceção, pois, você deve desenvolver neles e ponto final. E nem são tão padronizados assim. @Mateus Silva normalmente, quando encontro com pessoas com resistência a frameworks, é por um pequeno sentimento de que se tornarão "menos" programadores por estarem utilizando uma ferramenta. Pergunta, o contador deixa de ser "menos" contador por utilizar uma calculadora ao invés de realizar os cálculos de cabeça? Alguém que usa uma calculadora HP 12C tem menos controle que alguém que utilize uma calculadora sharp elsi mate el-230? Ou até outros exemplos: um pedreiro é "menos pedreiro" por usar uma betoneira em detrimento de uma enchada com uma caixa de cimento? O marceneiro é "menos" marceneiro por utilizar ferramentas elétricas ao invés de manuais? Nenhum deles deixará de ter controle na ação que desenpenharem, eles ainda serão totalmente responsável pelo trabalho que realizaram, e isso tem tudo haver com confiança na ferramenta que estão utilizado. O framework não é nada mais que uma ferramenta e, sua função, não difere em nada do que qualquer outra ferramenta aqui mencionada. O contrário também é verdadeiro, ninguém será melhor que outro apenas por utilizar inúmeras ferramentas. Hoje em dia não importa qual framework você utiliza, seja X, Y ou Z ou se nem utiliza um framework. Apenas que entenda os padrões que eles estão utilizando. Eu, particularmente, aprendi apenas um framework (CodeIgniter), pois ele não segue nenhum padrão. Mas trabalho basicamente com qualquer framework, apenas porque aprendi como deve funcionar o MVC, PSRs, Design Patterns, entre outros muitos estudos ligados ao desenvolvimento de software. Caso eu tenha alguma dúvida, o manual com certeza irá me atender. Se não me atender, existem fóruns para dúvidas rápidas (tal qual iMasters). Se nem isso me ajudar, bem, por que diabos usaram esse FrameWork? Se achas um framework demasiado grande, utilize um micro framework. Todos eles são escalonáveis, se necessitar de algum módulo novo, basta inserí-los. Tenho certeza que sua produtividade se multiplicará, seus sistemas serão mais seguros e confiáveis e reduzirá o custo de manutenção. Acredito, custo de manutenção é intrinsicamente relacionado ao custo de desenvolvimento. Se mesmo com as vantagens do uso de um framework tiver receio em utilizá-lo, não é um problema. Apenas atente-se para seguir os padrões mundiais de desenvolvimento PHP (PSR's) e, também, os padrões de desenvolvimento de software (design principles, design patterns, DDD, TDD, etc..) Para finalizar, deixo a "frase do ano" dos meus colegas desenvolvedores aonde eu trabalho:
  5. 2 pontos
    # Arquivo index.php /** * Você cadastra os nome de suas rotas e arquivos correspondentes em um array */ $rotas = [ '/' => '_view/home.php', '/contato' => '_view/contato.php', '/noticias-do-dia' => '_view/noticas.php' ]; /** * Ai depois você pega a uri que o usuário esta tentando acessar */ $url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); /** * E então verifica se essa rota esta cadastrada, se estiver, faz o include */ if (array_key_exists($url, $rotas)) { require_once $rotas[$url]; }else { require_once '404.php'; } Esse esquema vai esta no seu arquivo index.php, você vai precisar criar um arquivo .htaccess na raiz de seu projeto, que redirecione todas as solicitações para o seu seu index.php Essa é a base, a partir dessa ideia você pode ir evoluindo...
  6. 2 pontos
    Aconselho a não usar acentos na definição de nomes de variáveis e funções. Para além disso, tens algum erro na consola do browser? Finalmente, dá uma olhada neste projecto do gabrieldarezzo. É certo que o exemplo dele está a usar jQuery em vez de apenas JavaScript nativo, mas é capaz de dar uma ajuda.
  7. 2 pontos
    Uma ideia que me surgiu foi separar o menu nas colunas. Você tá usando o bootstrap com 12 colunas? Dá pra separar em 3 blocos de 4 colunas: primeiro bloco para a primeira parte do menu, o segundo bloco pra imagem e o último bloco pra segunda parte do menu. Tipo assim: <nav class="row"> <div class="col-md-4"> PRIMEIRA PARTE DO MENU </div> <div class="col-md-4"> A LOGO </div> <div class="col-md-4"> SEGUNDA PARTE DO MENU </div> </nav>
  8. 2 pontos
    Isso é irrelevante, @Pellegrini2106. As PSR são padrões definidos pela comunidade; apenas siga-as, independentemente de gostar ou não de framework
  9. 2 pontos
    Se quiser postar suas tentativas aqui, eu te auxilio.
  10. 2 pontos
    noSQL? Sobre isso... Relaxa... A qnt é meio q irrelevante, oq pega mesmo é a sua modelagem e índices. Acredite o Mysql aguenta muita porrada... (muita mesmo AHHASUHAUHAS) Sobre sua duvida, e pensando na sua estrutura... será q um simples Join não resolve seu problema?! A estrutura que você pensa é assim neh?! /* 1 = H. de Início: 8:00 / H. de Término: 10h / Serviço: "descrição do serviço" 2 = H. de Início: 11:00 / H. de Término: 12h / Serviço: "descrição do serviço" 3 = H. de Início: 12:00 / H. de Término: 13h / Serviço: "descrição do serviço" 4 = H. de Início: "vazio" / H. de Término: "vazio / Serviço: "vazio" 4 = H. de Início: "vazio" / H. de Término: "vazio / Serviço: "vazio" */ Fiz um exemplo pra ti.... CREATE DATABASE imasters; USE imasters; CREATE TABLE servico( id INT(8) PRIMARY KEY AUTO_INCREMENT ,nome VARCHAR(50) NOT NULL ); CREATE TABLE servico_detalhes( id INT(8) PRIMARY KEY AUTO_INCREMENT ,dt_inicio DATETIME ,dt_termino DATETIME ,datalhe TEXT ,servico_id INT(8) ,FOREIGN KEY (servico_id) REFERENCES servico(id) ); Basicamente criamos 2 tabelas... uma de serviço e a outra de detalhamento, assim o serviço pode ter 1,2,3,.. n detalhamentos (ou o caso de apenas 1) <!OBS:!> ,FOREIGN KEY (servico_id) REFERENCES servico(id) Esse SQL/STATMENT, é importante por garantir que vai existir AO MENOS UM 'servico' antes de criar um registro na tabela 'servico_detalhes' <!OBS:!> Bora inserir uma galera pra testar. INSERT INTO servico (nome) VALUES ('Serviço do Chico'); INSERT INTO servico (nome) VALUES ('Serviço do Bento'); INSERT INTO servico (nome) VALUES ('Serviço do Alemão'); Agora vamos inserir uns registros. INSERT into servico_detalhes (dt_inicio, dt_termino, datalhe, servico_id) VALUES ('2017-02-01 15:10:00', '2017-02-01 17:10:00', 'Cliente pediu para formatar o PC', 1) /*Job do Chico*/ ,('2017-02-01 17:10:00', '2017-02-01 19:10:00', 'Cliente uma pizza', 1) /*Job do Chico*/ ,('2017-03-01 09:00:00', '2017-03-01 18:00:00', 'Cliente uma pizza', 2) /*Job do Bento*/ ,('2017-03-01 09:00:00', '2017-03-01 18:00:00', NULL, 3) /*Job do Alemão*/ ,('2017-03-01 09:00:00', '2017-03-01 18:00:00', NULL, 3) /*Job do Alemão*/ ,('2017-03-01 09:00:00', '2017-03-01 18:00:00', NULL, 3) /*Job do Alemão*/ ; Então basicamente temos 2 registros para o Chico, 1 para o Bento e 3 pro Alemão (eita rapaz trabaiadó... parece um prefeito #sqn ) Agora pra resgatar essa galera tem diversas maneiras... Vou exemplificar com o INNER JOIN. SELECT servico_detalhes.id ,servico_detalhes.datalhe ,servico.nome ,servico_detalhes.dt_inicio ,servico_detalhes.dt_termino FROM servico INNER JOIN servico_detalhes ON( servico_detalhes.servico_id = servico.id ) where servico.id = 1 ; /* Retorna isso... +----+----------------------------------+------------------+---------------------+---------------------+ | id | datalhe | nome | dt_inicio | dt_termino | +----+----------------------------------+------------------+---------------------+---------------------+ | 1 | Cliente pediu para formatar o PC | Serviço do Chico | 2017-02-01 15:10:00 | 2017-02-01 17:10:00 | | 2 | Cliente uma pizza | Serviço do Chico | 2017-02-01 17:10:00 | 2017-02-01 19:10:00 | +----+----------------------------------+------------------+---------------------+---------------------+ */ Da pra viajar nessa estrutura... Utilizando o GROUP BY, por exemplo: select count(servico_id) as 'qtdJobs' ,servico.nome from servico INNER JOIN servico_detalhes ON( servico_detalhes.servico_id = servico.id ) group by servico_id order by count(servico_id) DESC /* +---------+-------------------+ | qtdJobs | nome | +---------+-------------------+ | 3 | Serviço do Alemão | | 2 | Serviço do Chico | | 1 | Serviço do Bento | +---------+-------------------+ */
  11. 2 pontos
    http://jquerycreditcardvalidator.com/ https://jessepollak.github.io/card/ #ficadica
  12. 2 pontos
    O código deveria estar da seguinte forma: public static function _getInstance($self){ if (!isset(self::$_instance[$self])) { self::$_instance[$self] = new $self(); } return self::$_instance[$self]; } Traduzindo: Se a propriedade de classe self::$_instante[$self] não estiver definida, defina-a; Retorne a propriedade self::$_instante[$self].
  13. 2 pontos
    O fórum teve uma melhora em desempenho de mais do que 500% tanto na velocidade de processamento quanto na entrega do conteúdo. Sobre publicidade, elas diminuíram em vez de aumentar. Mas talvez se você elaborar melhor sobre o que o faz achar mais pesado, talvez consigamos compreender seu ponto e, quem sabe, até melhorar.
  14. 2 pontos
    Caros amigos Com ajuda de uma amigo, consegui resolver o problema. Ficou assim: function mostraRespostaItens() { global $conecta; $cliente = '3'; $cotaNum = '3.3'; $sql = "SELECT cotacaoItens.cotaNumero, cotacaoItens.codProdClie, cotacaoItens.clienteId, produto.clienteId, produto.codProdClie, produto.produtoDescr FROM produto INNER JOIN cotacaoItens ON cotacaoItens.codProdClie = produto.codProdClie Where cotacaoItens.clienteId = '$cliente' AND cotacaoItens.clienteId = produto.clienteId "; $stmt = $conecta->prepare($sql); $stmt->execute(); $num = $stmt->rowCount(); $prod = null; if ($num > 0) { while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { extract($row); if ($prod != $codProdClie) { if (!is_null($prod)) { echo "</table>"; } // Fechando a tabela do último Produto impresso antes de abrir a nova echo " <br/>"; echo "<h2>{$codProdClie} - {$produtoDescr}</h2>"; echo "<table border='0' cellpadding='3' cellspacing='2' >"; mostraRespFornec($codProdClie); } } //Fecha While echo "</table>"; // Fechando a tabela da última categoria do laço } } function mostraRespFornec($codProdClie) { global $conecta; $cliente = '3'; $cotaNum = '3.3'; $sql = "SELECT cotacaoResposta.cotaRespId, cotacaoResposta.cotaNumero, cotacaoResposta.codProdClie, cotacaoResposta.cotaRespMarca, cotacaoResposta.cotaOferta, cotacaoResposta.fornecedorId, cotacaoResposta.cotaRespQtde, cotacaoResposta.cotaRespVlr, cotacaoResposta.cotaRespTotal, cotacaoResposta.cotaItensId, fornecedores.fornecedorId, fornecedores.nome FROM fornecedores INNER JOIN cotacaoResposta ON cotacaoResposta.fornecedorId = fornecedores.fornecedorId Where cotacaoResposta.cotaNumero = '$cotaNum' AND cotacaoResposta.cotaOferta = '2' AND cotacaoResposta.codProdClie = $codProdClie ORDER BY cotacaoResposta.cotaRespVlr ASC"; $result = $conecta->prepare($sql); $result->execute(); $nume = $result->rowCount(); $forn = null; if ($nume > 0) { while ($row = $result->fetch($forn)) { extract($row); if ($forn != $fornecedorId) { if (!is_null($forn)) { echo "</table>"; } echo "<table>"; echo " <tr style='color:#1C1C71; font-variant:small-caps; font:16px Arial, Helvetica, sans-serif; font-weight: bold;'>"; echo " <td><div class='fornec'>{$fornecedorId} - {$nome}</div></td>"; echo " </tr>"; echo " <tr>"; echo " <td><div class='no'>Qtde..: {$cotaRespQtde}</div></td>"; echo " </tr>"; echo " <td>&nbsp;</td>"; } } //Fecha While echo "</table>"; // Fechando a tabela da última categoria do laço } } Grato, Renato
  15. 2 pontos
    Deu certo pessoal nada tão difícil, adicionei uma nova coluna com dois status Ativo e Inativo, e utilizei esse select do Michel, assim posso listar somente quem estiver com status desse campo ativo se estiver inativo vai sair da lista como se estive excluído. muito obrigado, João Sobre minha postagem com caixa alta não vai acontecer mais vlw .
  16. 2 pontos
    Podemos transformar qualquer coisa que queiramos em qualquer outra coisa que queiramos; o ponto é: o que queremos? Quando falamos sobre transformar uma base relacional numa não relacional, precisamos, obviamente, de um caso de uso que justifique. Precisamos desse caso de uso porque existem bases não relacionais baseadas em chave=valor, colunas, documentos, grafos, etc; mas o ponto mais importante, e certamente o mais relevante, é que NoSQL traduz-se como Não Apenas SQL, com uma ênfase enorme ao não apenas. Por exemplo, aqui no fórum, estamos usando MySQL com Redis e fazendo jus ao "não apenas": o que é relacional, fica na base relacional; o que é chave=valor, fica no Redis - antes usávamos Memcached para isso. Então, qual o caso de uso que justifica essa sua transformação? Você analisou todos os cenários e variáveis antes de chegar à conclusão de que você realmente tem um caso onde uma base não relacional é melhor do que uma base relacional?
  17. 2 pontos
    Olá Juninho. A única forma de fazer isso, é fazer a navegação do seu site não atualizar o navegador. Não é dificil, mas há um trabalho maior para desenvolver. Todos os sites que eu já vi, não se preocupam com isso. Ele atualizam tudo... e como a transmissão é ao vivo, o vídeo sempre estará atualizado. Eu utilizo o JWPlayer para fazer essas transmissões... é bem simples e leve. https://www.jwplayer.com/
  18. 1 ponto
    Você pode simplesmente apagar os valores que você não quer somar: unset($valorcartao['dtmovimento']); unset($valorcartao['datahoraInclusao']); E então somar com array_sum(); Caso precise da soma do array, mas não possa apagar os valores, então copie o array para um novo array, delete os valores que não precisa, e então some: $valorCartaoSoma = $valorcartao; unset($valorCartaoSoma ['dtmovimento']); unset($valorCartaoSoma ['datahoraInclusao']); $valorCartaoSoma = array_sum($valorCartaoSoma);
  19. 1 ponto
  20. 1 ponto
    Normalmente ocorre o seguinte: Primeiro informa os arquivos CSS, no header normalmente, porque contem os estilos visuais, assim quando montar o HTML já exibe com o layout certo e não acontece aquele efeito de carregar os elementos e depois eles mudam do nada. Segundo carrega o HTML e o usuário já tem o site disponível o quanto antes Por último carrega os Javascript por alguns motivos: - Se referenciar algum elemento da página, o mesmo já foi carregado anteriormente e não tem erro; - Pode ser que alguma parte do script demore, e se estiver antes pode atrasar o carregamento da página e dar uma má impressão; - Normalmente o script esta associado com funcionalidades da página e podem ser carregadas após;
  21. 1 ponto
    É que eu tinha escrito errado a função, utilizando aspas simples, por isso não imprimiu a string. Eu ajustei a resposta anterior, dê uma olhada, veja se é isso que você precisa.
  22. 1 ponto
    Não recomendado, pode ser uma grande falha de segurança e pode te trazer grandes transtornos. Procure tratar dados de segurança o mais seguro e privado possível.
  23. 1 ponto
    Não seria isso? pois a string que vai ser convertida deve ser passada para a função. $EXDF1 = $Post_Fun_js['EXDF1']; echo htmlspecialchars('<div id="Tx1_func"><pre>' . $EXDF1 . '</pre></div>');
  24. 1 ponto
    Order by abs( (day(data_vencimento) - day(now())) ) Acho que faltou um parentese.
  25. 1 ponto
    Então,povo.... Resolvi botar breakpoint nos eval code do depurador do IE... Lá existe o seguinte: window.__BROWSERTOOLS_CONSOLE_SAFEFUNC = function (fn) { var returnFn = function () { return fn(arguments); }; return returnFn; } Ao clicar no link com o href="javascript:window.open" a parte do return fn(arguments) era executada. Como não sabia se dava pra fuçar mais pra dentro do motor Javascript do IE10, assumi que esse retorno estava, por (algum) padrão (maluco), sendo utilizado na janela principal, que exibia aquele [object] maluco (já que o window.open retorna uma referência à nova janela). Ou seja, não era o JSON, era o objeto da janela popup... Aí atribuí a chamada a window.open a uma variável: javascript:var iehack = window.open Agora funciona como deveria (e o fluxo de depuração não para nos breakpoints desse CONSOLE_SAFEFUNC, então a princípio não há retorno da função sendo aplicado). Não me perguntem qual é a relação desse trecho de javascript do IE10 com o que eu fiz porque eu não sei. Edit: Provável que essa substituição seja o comportamento padrão do atributo href (eu sei que não deveria usar javascript inline e que seria melhor colocar a href="javascript:void(0)" onclick="window.open...", mas estou trabalhando com um framework antigo que monta os links dessa forma)
  26. 1 ponto
    Sete a propriedade BackgroundImageLayout para Stretch Abraços,
  27. 1 ponto
    Nesse caso, utilize o jQuery 1.12, pois o 2 e o 3 não suportam IE8. https://code.jquery.com/jquery-1.12.1.min.js Quanto ao atributo name, ele só deve ser usado em controles de formulário (input, select, textarea). Nos outros elementos só use ID.
  28. 1 ponto
    Olá @josenilson, seu problema não é com o PHP. Recomendo fortemente a leitura do tópico: ATENÇÃO: Seu problema é realmente com o PHP ? Retire a parte do <thead> de dentro do laço de repetição. Movida para área correta -> HTML / CSS
  29. 1 ponto
    $data = date('Y-m-d',strtotime('-6 months')); $data_vinda_do_bd = '2016-10-31'; if($data_vinda_do_bd >= $data){ echo 'ok'; }else{ echo 'nao'; } Existem outras funções que permitem fazer isto, ai é só você escolher o que achar melhor.
  30. 1 ponto
    Qual é o "restante do texto" que não aparece? TCPDF não interpreta HTML com erros, tem uma reticências perdida no meio do seu HTML
  31. 1 ponto
    Ótima chance para você começar a usar PDO: http://php.net/manual/pt_BR/class.pdo.php Verifique a versão do PHP, verifique se a extensão php_mysql.dll está habilitada no php.ini.
  32. 1 ponto
    Daniel, dá uma procurada por WITH ROLLUP Um exemplo: http://jquerydicas.blogspot.com.br/2015/01/mysql-sum-com-rollup-calcular-o.html _ _ Fabiano Abreu Papo SQL | Quiz na Web
  33. 1 ponto
    Resolvido. No Setup do projeto temos como selecionar o que queremos que faça parte no pacote de instalação. Seguem os anexos das configurações feitas. Obs: Para o .net Express que não tem o setup wizard, no meu caso o melhor foi gerar o publish com os arquivos originais, sem renomear para . manifest, e copiar no mesmo diretório da aplicação.
  34. 1 ponto
    Altere a linha 51 De: <input class= "TPrest" name="tPrest" id="Tprest" /> Para: <input class= "TPrest" name="tPrest" id="Tprest" value="<?php echo date("Ymdhis"); ?>" /> Salve esta página em PHP e teste novamente.
  35. 1 ponto
    Olá pessoal! Estou migrando um sistema de milhares de acessos diários com muita concorrência e gerando milhões de pageviews por mês. Atualmente a stack abaixo aguenta muito bem, mas tem tido algumas lentidões para quem posta os conteudos, e em testes vimos que atualizar o PHP 5.6 para o PHP 7.0 resolve este problema além de estar ja 100% compatível com a aplicação: - 1 droplet na Digital Ocean 1GB que contem a aplicação - 1 droplet na Digital Ocean 1GB para o Banco de dados - MySQL - Varnish (porta 80) - Nginx (outra porta, recebe o tráfego do Varnish) - PHP 5.6 Estive pesquisando e vi que agora o Nginx pode fazer o mesmo trabalho do Varnish e muito bem. Porém, gostaria de saber se alguém já efetuou alguns testes relacionados ao Nginx Cache em um ambiente com muitos acessos. A stack final possivelmente será: - 1 droplet na Digital Ocean 1GB que contem a aplicação - 1 droplet na Digital Ocean 1GB para o Banco de dados - MySQL - Nginx (outra porta, recebe o tráfego do Varnish) - PHP 7.0 Qualquer informação a respeito, agradeço
  36. 1 ponto
  37. 1 ponto
    è Por Um MODAL: <div role="tabpanel" class="tab-pane active" id="senha"> <form role="form" action="" method="post" enctype="multipart/form-data"> <div class="form-group"> <input type="password" class="form-control input-lg" name="senhaantiga" id="senhaantiga" value="" placeholder="Nova Senha" required> </div> <div class="form-group"> <input type="password" class="form-control input-lg" name="senhanova" id="senhanova" value="" placeholder="Nova Senha" required> </div> <div class="form-group"> <input type="password" class="form-control input-lg" name="resenha" id="resenha" oninput="validarSenha(this)" value="" placeholder="Repetir A Nova Senha" required> </div> <div class="form-group"> <div id="divcheck"> </div> </div> <hr> <center> <input name="senha" class="btn btn-primary btn-embossed btn-lg btn-wide" type="submit" value="Alterar" /> <button type="button" data-dismiss="modal" class="btn btn-danger btn-embossed btn-lg btn-wide"> Cancelar </button> </center> </form> </div>
  38. 1 ponto
    O que dá pra fazer é utilizar a data/hora para gerar um número único sempre. Desta maneira, não há necessidade de salvar no banco, e será sempre... "sequencial" (ou ao menos, ordenado sempre). <?php echo date("Ymdhis") ?> Vai imprimir: 20170213114216.
  39. 1 ponto
    Em qual linguagem você pretende fazer isso?
  40. 1 ponto
    DigRam, Acabei ficando sem conseguir usar o notebook completamente. Passei três dias para conseguir formatá-lo e reinstalar o sistema operacional. Já estava muito impaciente com os travamentos. Agradeço muito pelo suporte. Pode arquivar o tópico. Weick
  41. 1 ponto
    a quantidade aleatória terá um mínimo ou máximo? e os números serão sempre de 1 a 100 ? se os números forem fixos e a quantidade também, então tudo o que você tem que fazer é: -> embaralhar o array -> sortear algum número entre 1 e 100, e fazer um slice do array embaralhado nesse número. var size = Math.floor(Math.random() * shuffled.length) var shuffled = [1,2,3,4,6,7,8,9,10].sort((i) => 0.5 - Math.random()) var size = Math.floor(Math.random() * shuffled.length) + 1 shuffled.slice(0,size) resultados:
  42. 1 ponto
    Realmente era isso hahaha Obrigado Michel! Deu certo :D
  43. 1 ponto
    Dá uma olhada nesta biblioteca https://github.com/stripe/jquery.payment Ela valida e também retorna qual o cartão baseado na numeração informada
  44. 1 ponto
    Se você guardar o estado em sessão, a aplicação deixa de ser stateless. Para você implementar algo stateless, você precisa fazer o client enviar todas as informações necessárias para a aplicação e a aplicação, por sua vez, retornar todos os dados necessários para que o client possa compreender. Todas as requisições e todas as respostas precisam ser completas e independentes.
  45. 1 ponto
    Como já foi dito, pode-se fazer com jQuery, Javascript ou CSS e a ideia é básica: deixa o menu 'visível', porém fora da tela (left: -100%, por exemplo) e quando clicar no ícone do menu muda a propriedade left de -100% para 0. Para parecer melhor com o exemplo do site citado, pode-se utilizar o animation/transition do CSS!
  46. 1 ponto
    @Marhault muito bem pensando. Então vale a pena manter todo um 'Log' da exclusão, já que se você precisa 'excluir' só q não... Como diria o Linus.... CREATE DATABASE imasters; use imasters; CREATE TABLE blog_imasters( id int(8) PRIMARY KEY AUTO_INCREMENT ,nome varchar(100) not null ,excluido TINYINT(1) default 0 ,excluido_por varchar(100) /* Ou pode ser o _id da tabela referenciado o user que exclui como FOREING KEY*/ ,excluido_em DATETIME ); /*Bora inserir uma galera...*/ INSERT INTO blog_imasters(nome) VALUES ('Beraldo'); INSERT INTO blog_imasters(nome) VALUES ('Gabriel'); INSERT INTO blog_imasters(nome) VALUES ('Wbruno'); INSERT INTO blog_imasters(nome) VALUES ('AndersonMamede'); Então basicamente sempre que você quiser trazer os usuários ativos o seguinte comando: SELECT * FROM blog_imasters where excluido <> 1; Bora excluir alguém... Vamos deletar o @AndersonMamede já q ele sumiu do Imasters.... UPDATE blog_imasters set excluido = 1, excluido_por = 'Gabriel', excluido_em = now() where nome = 'AndersonMamede' Vamos confirmar.... mysql> SELECT * FROM blog_imasters where excluido <> 1; +----+---------+----------+--------------+-------------+ | id | nome | excluido | excluido_por | excluido_em | +----+---------+----------+--------------+-------------+ | 1 | Beraldo | 0 | NULL | NULL | | 2 | Gabriel | 0 | NULL | NULL | | 3 | Wbruno | 0 | NULL | NULL | +----+---------+----------+--------------+-------------+ Show, e agora qnd alguem perguntar... (vão perguntar pode confiar... ) QUEM EXCLUIU ?! FOI ERRO NO SISTEMA! Se já saca o 'log' até com a hora, seg, e usuário. mysql> SELECT * FROM blog_imasters where excluido = 1; +----+----------------+----------+--------------+---------------------+ | id | nome | excluido | excluido_por | excluido_em | +----+----------------+----------+--------------+---------------------+ | 4 | AndersonMamede | 1 | Gabriel | 2017-02-07 21:46:19 | +----+----------------+----------+--------------+---------------------+
  47. 1 ponto
    Os Merchant Key e Id são as credenciais da API. Para testes você pode obtê-los fazendo um Cadastro no Sanbox; para produção você precisa enviar um email para credenciamentoecommerce@cielo.com.br
  48. 1 ponto
    Olá... Tenta montar assim, para compreendermos se as colunas são respectivas aos valores: $sql = "INSERT INTO cetaceos (column1,column2,column3,column4,column5,column6) VALUES ('$lec','$pmp','$responsavel','$dia','$mes','$ano')"; $resultado = mysqli_query ($conexao,$sql);
  49. 1 ponto
    A quem tiver interesse em utilizar o Cloud9 diretamente em seu container para desenvolvimento, criei uma imagem para adicionar ao seu docker-compose.yml Link do projeto no Docker Hub: https://hub.docker.com/r/redbeard/cloud9/ Exemplo de uso abaixo: version: '2' services: app: image: ubuntu:latest volumes: - "./code:/code" ports: - "3000:3000" links: - c9sdk c9sdk: image: redbeard/cloud9:latest volumes: - ./code:/workspace ports: - "8181:8181" Ficará acessível em http://seuhost:8181 Usuário: cloud9 Senha: cloud9 Github: https://github.com/michelwilhelm/docker-c9
  50. 1 ponto
    Não é o tipo de campo adequado pra preços. Utilize ele como FLOAT(12,2)