Jump to content

ghlevin

Members
  • Content count

    73
  • Joined

  • Last visited

Community Reputation

0 Comum

About ghlevin

  1. Não tinha me dado conta disso, acho que resolveu sim! Obrigado.
  2. No site de um cliente, estou usando o Datepicker do Bootstrap (peguei nesse site - eyecon.ro/bootstrap-datepicker ). Contudo, em algumas páginas, eu configuro o datepicker pra mês e ano. Selecionados os dois, mudam os dados de uma tabela: $(".datepicker").datepicker( { format: "mm/yyyy", autoclose: true, viewMode: "months", minViewMode: "years", }).on('changeDate', function(ev){ montaTabela(); // $(this).datepicker('hide'); }); Tudo funciona, mas ele não fecha o datepicker depois da seleção do mês e do ano. O autoClose não funciona e nem colocando hide ou close pro datepicker dá certo. Curiosamente, o hide (que está comentado acima) funciona pra páginas que usam datepicker de data completa (dd/mm/yyyy). O que posso tentar pra resolver?
  3. ghlevin

    Refresh automático apenas uma vez em PHP

    Obrigado pelo retorno, no fim consegui resolver o problema já faz uns dias. Podem excluir esse tópico.
  4. Estou precisando fazer um refresh automático em algumas páginas do site de um cliente. Porém, esse refresh precisa acontecer apenas UMA vez. Eu sei que daria pra eu colocar a meta tag abaixo, por exemplo: <meta content="3;url=http://www.meusite.com.br/index.php" http-equiv="Refresh" /> Mas aí ela atualizaria sempre a cada 3 segundos. E eu queria que atualizasse só uma vez. Como dá pra fazer isso? Com uso de SESSION, COOKIE ou alguma outra coisa?
  5. Estou adaptando o site de um cliente de forma a torná-lo responsivo. Um fornecedor já me passou os arquivos referentes ao layout responsivo e estou tendo de adaptar ao meu site. Contudo, algumas páginas do meu site dão problema. Em uma delas, eu uso muito a função feita em javascript dialog. Acredito que seja algum conflito nos meus arquivos JS dentro do head.php head.php original: <?php if ($dados['pagina']['header'] == true) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <meta http-equiv="cache-control" content="max-age=0" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> <meta http-equiv="pragma" content="no-cache" /> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="shortcut icon" href="<?php echo $dados['pagina']['raiz']?>images/layout/favicon2.ico"> <title>Portal do Investidor Intercity</title> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery-1.8.0.min.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery-ui-1.8.23.custom.min.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.validate.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.spin.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/flashcanvas/flashcanvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/flashcanvas/canvas2png.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.plugin.html2canvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/html2canvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.multiselect.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/functions.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/principal.js"></script> <link rel="stylesheet" href="<?php echo $dados['pagina']['raiz']?>js/fancybox/jquery.fancybox.css?v=2.0.6" type="text/css" media="screen"/> <link rel="stylesheet" href="<?php echo $dados['pagina']['raiz']?>js/ui-lightness/jquery-ui-1.8.23.custom.css" type="text/css" media="screen"/> <link rel="stylesheet" href="<?php echo $dados['pagina']['raiz']?>css/jquery.multiselect.css" type="text/css" media="screen"/> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/fancybox/jquery.fancybox.pack.js?v=2.0.6"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.plugin.html2canvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.cookie.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/flot/jquery.flot.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/flot/excanvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/tinymce/jscripts/tiny_mce/tiny_mce.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.dataTables.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.twosidedmultiselect.js"></script> <script type="text/javascript"> jQuery.browser = {}; // Script incluído em 21/12/2018 (function () { jQuery.browser.msie = false; jQuery.browser.version = 0; if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) { jQuery.browser.msie = true; jQuery.browser.version = RegExp.$1; } })(); </script> <?php if (count(Loader::retornaJs()) > 0) { foreach(Loader::retornaJs() as $js) { ?> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']; ?>js/<?php echo $js; ?>.js"></script> <?php } } ?> <script type="text/javascript"> <?php if (count(Loader::retornaJsDados()) > 0) { foreach(Loader::retornaJsDados() as $jslib) { ?> <?php echo $jslib; ?> <?php } } ?> </script> <?php if (count(Loader::retornaCss()) > 0) { foreach(Loader::retornaCss() as $css) { ?> <link rel="stylesheet" href="<?php echo $dados['pagina']['raiz']; ?>css/<?php echo $css; ?>.css" type="text/css" /> <?php } } ?> <style type="text/css"> <?php if (count(Loader::retornaCssDados()) > 0) { foreach(Loader::retornaCssDados() as $csslib) { ?> <?php echo $csslib; ?> <?php } } ?> </style> </head> <?php }?> head.php adaptado, onde fiz a inclusão de novos scripts e novos stylesheets (links): <?php if ($dados['pagina']['header'] == true) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <meta http-equiv="cache-control" content="max-age=0" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> <meta http-equiv="pragma" content="no-cache" /> <html class="wide wow-animation smoothscroll scrollTo" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="shortcut icon" href="<?php echo $dados['pagina']['raiz']?>images/layout/favicon2.ico"> <meta charset="utf-8"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta name="keywords" content="SANA design multipurpose template"> <meta name="date" content="Dec 26"> <link rel="icon" href="http://www.investidorintercity.com.br/images/layout/favicon2.ico" type="image/x-icon"> <!-- Stylesheets--> <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Oswald%7CLato:400italic,400,700"> <link rel="stylesheet" href="css/style.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" /> <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <title>Portal do Investidor Intercity</title> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery-1.8.0.min.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery-ui-1.8.23.custom.min.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.validate.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.spin.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/flashcanvas/flashcanvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/flashcanvas/canvas2png.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.plugin.html2canvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/html2canvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.multiselect.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/functions.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/principal.js"></script> <link rel="stylesheet" href="<?php echo $dados['pagina']['raiz']?>js/fancybox/jquery.fancybox.css?v=2.0.6" type="text/css" media="screen"/> <link rel="stylesheet" href="<?php echo $dados['pagina']['raiz']?>js/ui-lightness/jquery-ui-1.8.23.custom.css" type="text/css" media="screen"/> <link rel="stylesheet" href="<?php echo $dados['pagina']['raiz']?>css/jquery.multiselect.css" type="text/css" media="screen"/> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/fancybox/jquery.fancybox.pack.js?v=2.0.6"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.plugin.html2canvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.cookie.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/flot/jquery.flot.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/flot/excanvas.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/tinymce/jscripts/tiny_mce/tiny_mce.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.dataTables.js"></script> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']?>js/jquery.twosidedmultiselect.js"></script> <?php if (count(Loader::retornaJs()) > 0) { foreach(Loader::retornaJs() as $js) { ?> <script type="text/javascript" src="<?php echo $dados['pagina']['raiz']; ?>js/<?php echo $js; ?>.js"></script> <?php } } ?> <script type="text/javascript"> <?php if (count(Loader::retornaJsDados()) > 0) { foreach(Loader::retornaJsDados() as $jslib) { ?> <?php echo $jslib; ?> <?php } } ?> </script> <?php if (count(Loader::retornaCss()) > 0) { foreach(Loader::retornaCss() as $css) { ?> <link rel="stylesheet" href="<?php echo $dados['pagina']['raiz']; ?>css/<?php echo $css; ?>.css" type="text/css" /> <?php } } ?> <style type="text/css"> <?php if (count(Loader::retornaCssDados()) > 0) { foreach(Loader::retornaCssDados() as $csslib) { ?> <?php echo $csslib; ?> <?php } } ?> </style> </head> <?php }?> Pelo console no Chrome, ele me avisa o seguinte: Uncaught TypeError: $(...).dialog is not a function O que eu poderia fazer pra não ter conflitos como esse? Já tentei a função noConflict(), mas não sei se fiz ela corretamente. Quem pode me ajudar?
  6. Estou fazendo modificações no site de um cliente, tornando-o responsivo. Tive que fazer várias mudanças de layout que me foram enviadas por um fornecedor e, por causa dessas mudanças, algumas funções Javascript e PHP que eu tinha não funcionam no layout novo. Em uma delas, eu tenho dois filtros de data e local (unidade ou empresa). O de data é uma INPUT e o de unidades é um SELECT. Vou colocar o código da view abaixo: <form class="rd-mailform text-left" data-form-output="form-output-global" data-form-type="contact" method="post" novalidate="novalidate"> <p class="mobile-hide">Selecione abaixo os par&acirc;metros para visualiza&ccedil;&atilde;o.&nbsp;Se desejar salvar,&nbsp;enviar por e-mail ou imprimir,&nbsp;clique em&nbsp;'Gerar PDF'&nbsp;ou&nbsp;'Gerar Excel'.</p> <!--<div class="range range-xs-center" style="margin: 0px !important;">--> <div class="cell-sm-6"> <div class="form-group form-group-label-outside"> <label class="form-label form-label-outside text-dark rd-input-label" for="data-relatorio">Data</label> <input class="form-control form-control-last-child" id="data-relatorio" type="text" name="first-name" > </div> </div> <div class="cell-sm-6 offset-top-20 offset-sm-top-0"> <div class="form-group form-group-label-outside"> <label class="form-label form-label-outside text-dark rd-input-label" for="comboUnidades"> Unidade </label> <select id="comboUnidades" class="form-control select2-multiple" data-minimum-results-for-search="Infinity"> </select> </div> </div> <div style="width: 100%"> <div style="position: relative; float: left; padding: 5px" onclick="montaPDF()"><a class="btn btn-ellipse btn-java" href="#">GERAR PDF</a></div> <div style="position: relative; float: left; padding: 5px" onclick="montaExcel()" class="mobile-hide"><a class="btn btn-ellipse btn-java" href="#">GERAR EXCEL</a></div> </div> </form> Abaixo parte do código do arquivo JS que mostra como eram carregados esses filtros. O de data usa originalmente uma função datepicker, que não funciona no layout atual. E o das unidades usa uma função AJAX pra colocar todas as opções que vem do banco MySQL do site dentro do select comboUnidades: $(document).ready(function(){ showLoading(); var d = new Date(); d.setDate(d.getDate() - 1); $('#data-relatorio').datepicker({ dateFormat: "dd/mm/yy", maxDate: d }); $("#data-relatorio").datepicker('setDate',d); var param = location.href.split("?")[1]; if(typeof param != "undefined" ) { var unidade = param.split('=')[1]; } $.ajax({ async: false, url: '[:raiz]acompanhamentoDiario/getUnidades', dataType: 'json', success: function(data) { if (data.length > 0){ var retorno = ""; for(var i = 0;i < data.length; i++){ retorno += "<option value='"+data[i]['id']+"'>"+data[i]['newnome']+"</option>"; } $('#comboUnidades').html(retorno); if(typeof param != "undefined" ) { $('#comboUnidades option[value='+unidade+']').attr('selected', 'selected'); $('#comboUnidades').trigger('change'); } } else { } } }); $('#data-relatorio').change(function(){ montaTabela(); }); $('#comboUnidades').change(function(){ montaTabela(); }); var d = new Date(); $('#divTabela').hide(); montaTabela(); hideLoading(); }); Essa função chamada no AJAX se encontra num arquivo de Controller: public function getUnidades() { $acompanhamento = new AcompanhamentoDiario(); $retorno = $acompanhamento->getUnidadesUsuario(); echo json_encode($retorno); } Por sua vez, essa função do controller chama uma função em PHP que se encontra num arquivo da minha pasta Model do site. Ele traz as unidades do select dependendo do login do usuário: public function getUnidadesUsuario() { $idUser = Login::retornaIdUser(); $perfilAcesso = Login::retornaPerfilAcesso(); if(($perfilAcesso == 1) || ($perfilAcesso == 6)) { // Colocado o perfil 6 do Usuário de Demonstração /* se perfil de usuairo = 1*/ $sql = "SELECT u.*,concat(e.sigla,' - ',u.nome) as newnome"; $sql .= " FROM unidade u INNER JOIN cidade c ON u.CIDADE = c.id INNER JOIN estado e ON u.ESTADO = e.id"; $sql .= " join usuario_unidade uu on (uu.id_unidade = u.id)"; $sql .= " WHERE u.ind_unidade_ativa = 1 AND u.ind_predio_novo = 0"; $sql .= " and uu.id_usuario = $idUser and lower(uu.ind_tipo_investidor) != 'c' ORDER BY newnome ASC"; } elseif($perfilAcesso == 2) { /* se perfil de usuairo = 2*/ $sql = "SELECT u.*,concat(e.sigla,' - ',u.nome) as newnome"; $sql .= " FROM unidade u INNER JOIN cidade c ON u.CIDADE = c.id INNER JOIN estado e ON u.ESTADO = e.id"; $sql .= " join administrador adm on (adm.id_unidade = u.id)"; $sql .= " WHERE u.ind_predio_novo = 0"; $sql .= " and adm.id_usuario = $idUser and adm.id_usuario NOT IN (3124,4378)"; $sql .= " ORDER BY newnome ASC"; } else { /* se perfil de usuario = 3*/ $sql = "SELECT u.*,concat(e.sigla,' - ',u.nome) as newnome"; $sql .= " FROM unidade u INNER JOIN cidade c ON u.CIDADE = c.id INNER JOIN estado e ON u.ESTADO = e.id"; $sql .= " WHERE u.ind_predio_novo = 0 ORDER BY newnome ASC"; } $res = parent::executaQuery($sql); return $res; } A função montaTabela(), por ora, ainda não quero modificar, por isso não vou mostrar como ela é. Ela é executada na página dependendo da mudança dos filtros. Por ora, eu só queria saber como "popular" o select comboUnidades e como funcionar o filtro de data data-relatorio de forma semelhante ao datePicker.
  7. Estou tentando conectar ao banco de dados SQL Server de um cliente através do Power BI. Normalmente eu entrava com o IP e o nome do banco de dados, depois só entrava com as credenciais e pronto. Recentemente eu troquei de laptop e tento fazer a mesma coisa pra tentar conectar direto ao banco. Mas sempre dá o mesmo erro: O que acho estranho pois não houve nenhuma mudança nas configurações do banco, incluindo IP, nomes, acesso de usuários etc. Consigo conectar ao banco normalmente através do SQL Management Studio, somente no Power BI que dá esse erro. O que pode ser?
  8. No site do meu cliente, possuo uma consulta SQL que traz o resultado de nível de prontidão de vários colaboradores. Só que, por enquanto, só consigo transferir pra página o resultado da consulta em um GridView: SELECT codigoAvaliacao, codigoColaborador, nomeColaborador, nivelProntidao FROM TableAvaliacoes Exemplo de resultado: codigoAvaliacao | codigoColaborador | nomeColaborador | nivelProntidao --------------- | ----------------- | --------------- | -------------- 1 | 1 | Fulano | 90 2 | 3 | João | 75 3 | 4 | Ciclano | 83,5 4 | 6 | Beltrano | 44,44 5 | 10 | Silva | 68,11 Minha ideia era trazer o resultado dessa consulta de outro modo, associando com uma figura chamada de NineBox. Ela coloca os nomes nos quadrados dependendo do nível de prontidão. Eis um exemplo da figura como eu achei na internet: Aí, por enquanto, só consegui colocar o código HTML da tabela com as devidas cores: <table> <tr> <td width="200" height="200" style="color: black; background-color: yellow"><center id="names1"></center></td> <td width="200" height="200" style="color: black; background-color: rgb(151,195,82)"><center id="names2"></center></td> <td width="200" height="200" style="color: white; background-color: rgb(12,133,54)"><center id="names3"></center></td> </tr> <tr> <td width="200" height="200" style="color: black; background-color: rgb(245,154,73)"><center id="names4"></center></td> <td width="200" height="200" style="color: black; background-color: yellow"><center id="names5"></center></td> <td width="200" height="200" style="color: black; background-color: rgb(151,195,82)"><center id="names6"></center></td> </tr> <tr> <td width="200" height="200" style="color: white; background-color: red"><center id="names7"></center></td> <td width="200" height="200" style="color: black; background-color: rgb(245,154,73)"><center id="names8"></center></td> <td width="200" height="200" style="color: black; background-color: yellow"><center id="names9"></center></td> </tr> </table> O que eu precisaria então a partir dessa consulta SQL fosse criada outra e viesse algo assim (supondo que os resultados fossem os nomes da imagem ao invés do exemplo do resultado), com os nomes de cada quadrado separados pela tabulação: QUADRADO | NOMES -------- | ----- 1 | Francisco 2 | NULL 3 | Vera 4 | NULL 5 | Alice<br>Alexandre<br>Marcos<br>Madalena 6 | Ângela<br>José 7 | Maria 8 | João<br>Pedro 9 | Benedito<br>Carla<br>David O que eu coloco como consulta SQL pra esse caso? Ou existe alguma programação em ASP.Net que possa fazer essa separação pra mim?
  9. ghlevin

    PHP e Javascript - Enviando anexo HTML em e-mail

    Oi, Beraldo. Obrigado pela resposta. O site utiliza o PHP Mailer mesmo. E eu sei que tem uma propriedade AddAttachment, mas como eu poderia já transformar o código HTML que eu quero enviar ao invés de estar no Body estar no anexo?
  10. Criei no site do meu cliente uma função que emite um certificado de evento realizado e manda por e-mail. Como está a função no momento: private static function setLayoutCertificado(){ class_exists('Email') || include_once LIBRARY_CLASS_PATH . 'Email.class.php'; $assunto = "Certificado de evento externo do colaborador " . $_SESSION['usuario']['nome']; $layout = '<html> <body> <div id="folhaA4paisagem"> <div id="logoPrograma" style="text-align: center"> <img id="imgPrograma" style="width: 400px" src="http://meusite.com.br/protected/viewc/theme/site/img/common/img/logo_quagilidade_original.png" /> </div> <div id="textoCertificado" style="text-align: center; font-family: Trebuchet MS; font-size: 24px; width: 1000px; position: fixed; top: 40%; left: 50%; transform: translate(-50%, -50%); line-height: 1.3;"> Certificamos que o(a) colaborador(a) '.$_SESSION['usuario']['nome'].' participou da capacitação '.str_replace("'","",$_SESSION['eventoCert']).', com carga-horária de '.str_replace("'","",$_SESSION['cargaCert']).', realizado no dia '.str_replace("'","",$_SESSION['dataCert']).'. </div> <div id="assinaturas" style="text-align: center; font-family: Trebuchet MS; font-size: 10px; width: 1000px; position: fixed; top: 70%; left: 50%; transform: translate(-50%, -50%);"> <table id="tableAssinaturas" style="text-align: center; align: center; position: fixed; top: 70%; left: 50%; transform: translate(-50%, -50%);"> <tr> <td>___________________________________</td> <td style="min-width: 300px"></td> <td>___________________________________</td> </tr> <tr> <td>Nome 1</td> <td></td> <td>Nome 2</td> </tr> <tr> <td>Cargo 1</td> <td></td> <td>Cargo 2</td> </tr> </table> </div> <div id="logo" style="text-align: center; width: 1000px; position: fixed; top: 90%; left: 50%; transform: translate(-50%, -50%);"> <img src="http://meusite.com.br/protected/viewc/theme/site/img/common/img/logo_grande.png" /> </div> </div> </body> </html>'; $o_email = New Email(); $o_email->to = 'meuemail@gmail.com'; $o_email->subject = $assunto; $o_email->content = $layout; $o_email->sendSmtp(SMTPHOST, SMTPUSER, SMTPPASSWORD); } O que eu queria fazer era transformar esse código do HTML em um anexo (com extensão HTML mesmo) desse e-mail, pois o que sai no corpo do e-mail não fica muito bom. Como posso fazer isso?
  11. ghlevin

    Melhorando esquema de paginação - PHP e Javascript

    Legal, mas pelo que vi do vídeo, aparecem todas as páginas (números 1 a 19 no exemplo). Queria que aparecesse, por exemplo, só do 1 ao 10 e as demais páginas depois que clicasse no 10.
  12. No site que assumi de um cliente, algumas páginas possuem esquema de paginação. Por exemplo, uma página de notícias que mostra registro de 100 notícias publicadas aparecem 7 notícias por página. A paginação vai me mostrar do 1 ao 15. Eis o código pré-definido da paginação: <?php if(@$data['quantidade_paginas'] > 1){;?> <div class="blocoPaginacao"> <div class="paginacao"> <span pg="anterior" class="btnSetaVoltar" style="opacity: 0"></span> <span pg="anterior" class="linkControle font12" style="opacity: 0"> ANTERIOR </span> <ul class="btsPaginacao"> <?php for($i=1; $i<=$data['quantidade_paginas']; $i++){ ?> <li> <span pg="<?php echo $i?>" pagina_="<?php echo $i?>" class="btnPaginar<?php echo ($i==1 ? ' Sel' : ''); ?>"> <?php echo $i?> </span> </li> <?php } ?> </ul> <span pg="proxima" class="linkControle font12"> PRÓXIMA </span> <span pg="proxima" class="btnSetaAvancar"></span> </div> <input type="hidden" id="total_paginas" value="<?php echo $i-1?>"> <input type="hidden" id="pagina_atual" value="1"> </div> <?php } ?> O problema é se eu tiver umas 50 páginas. O esquema de paginação vai me mostrar 50 números de página pra eu poder escolher. Eu queria que só aparecesse do 1 ao 10, por exemplo. E clicando a partir do 10, por exemplo, começam a aparecer do 11 ao 19 e por aí vai. Tem como será?
  13. ghlevin

    Usando Soapclient com XML puro em PHP

    Encontrei esse código de exemplo de envio de XML para um webservice via SoapClient: <?php $client = new SoapClient('http://www.webservicex.net/ConvertTemperature.asmx?WSDL', array("trace" => 1,"exceptions"=>0)); $function = 'ConvertTemp'; $arguments= array('ConvertTemp' => array( 'Temperature' => 31, 'FromUnit' => 'degreeCelsius', 'ToUnit' => 'degreeFahrenheit' )); $options = array('location' => 'http://www.webservicex.net/ConvertTemperature.asmx'); $result = $client->__soapCall($function, $arguments, $options); echo 'Response: '; print_r($result); echo "<br><br>REQUEST<br><br>:\n" . htmlentities($client->__getLastRequest()). "\n"; ?> E ele me mostra o seguinte XML que foi enviado: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.webserviceX.NET/"> <SOAP-ENV:Body> <ns1:ConvertTemp> <ns1:Temperature>31</ns1:Temperature> <ns1:FromUnit>degreeCelsius</ns1:FromUnit> <ns1:ToUnit>degreeFahrenheit</ns1:ToUnit> </ns1:ConvertTemp> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Mas agora o que eu queria é fazer uma engenharia reversa com um XML um pouco mais trabalhado. Eis o exemplo (omiti dados por questão de segurança): <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:con="http://connectors.omnibees.com/" xmlns="http://www.opentravel.org/OTA/2003/05"> <soapenv:Header> <con:OmnibeesCredentials> <con:UserCode>USER</con:UserCode> <con:UserName>12345</con:UserName> <con:UserPassword>user.12345</con:UserPassword> </con:OmnibeesCredentials> </soapenv:Header> <soapenv:Body> <OTA_ProfileCreateRQ Version="3.0" EchoToken="a6738f3f02ed8200588c5290cfb28d8121cc9d66" TimeStamp="2016-10-20T16:04:04+02:00" MessageContentCode="3"> <POS> <Source> <RequestorID Type="Hotel" ID="12345"/> </Source> </POS> <UniqueID Type="Customer" ID="1"/> <Profile ProfileType="Customer" CreateDateTime="2016-10-20" ShareAllMarketInd="Yes" StatusCode="Active"> <Customer Language="pt-PT" CurrencyCode="BRL"> <PersonName> <GivenName>NOME DA PESSOA</GivenName> </PersonName> <Telephone CountryAccessCode="+55" PhoneNumber="(XX) XXXX-XXXX" PhoneTechType="1" PhoneUseType="5"/> <Email EmailType="1">nome@dapessoa.com</Email> <Address UseType="Contact"> <AddressLine>RUA X, NUMERO X</AddressLine> <CityName>CIDADE</CityName> <PostalCode>12345678</PostalCode> <StateProv StateCode="XX"/> <CountryName Code="BR"/> </Address> </Customer> <UserID PinNumber="demopass" ID="ag.12345"/> </Profile> </OTA_ProfileCreateRQ> </soapenv:Body> </soapenv:Envelope> Como ele envolve a criação de header e de outros parâmetros, acredito que a variável $arguments seria composta de mais parâmetros. Alguém sabe como eu posso fazer? Sabem se programas como o SoapUI fazem esse tipo de coisa?
  14. ghlevin

    Usando Soapclient com XML puro em PHP

    Fiz um acréscimo no código pra exibir o XML enviado: echo "<br><br>REQUEST<br><br>:\n" . htmlentities($client->__getLastRequest()). "\n"; E ele exibiu o que eu esperava, com algumas pequenas diferenças: <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.webserviceX.NET/"> <SOAP-ENV:Body> <ns1:ConvertTemp> <ns1:Temperature>31</ns1:Temperature> <ns1:FromUnit>degreeCelsius</ns1:FromUnit> <ns1:ToUnit>degreeFahrenheit</ns1:ToUnit> </ns1:ConvertTemp> </SOAP-ENV:Body> </SOAP-ENV:Envelope> E eu achei também esse código aqui que utiliza o SoapClient tendo o XML puro como entrada: <?php $xmlstr = '<ns1:ConvertTemp><ns1:Temperature>31</ns1:Temperature><ns1:FromUnit>degreeCelsius</ns1:FromUnit><ns1:ToUnit>degreeFahrenheit</ns1:ToUnit></ns1:ConvertTemp>'; $wsdl = 'http://www.webservicex.net/ConvertTemperature.asmx?WSDL'; $client = new SoapClient($wsdl, array( 'trace' => 1, 'exceptions' => 0, )); $xmlVar = new SoapVar($xmlstr, XSD_ANYXML); $client->ConvertTemp($xmlstr); print_r($client->ConvertTemp($xmlstr)); echo "<br><br>REQUEST<br><br>:\n" . htmlentities($client->__getLastRequest()). "\n"; ?>
  15. ghlevin

    Usando Soapclient com XML puro em PHP

    Encontrei esse exemplo de envio de XML com o Soapclient. Funciona perfeitamente: <?php $client = new SoapClient('http://www.webservicex.net/ConvertTemperature.asmx?WSDL'); $function = 'ConvertTemp'; $arguments= array('ConvertTemp' => array( 'Temperature' => 31, 'FromUnit' => 'degreeCelsius', 'ToUnit' => 'degreeFahrenheit' )); $options = array('location' => 'http://www.webservicex.net/ConvertTemperature.asmx'); $result = $client->__soapCall($function, $arguments, $options); echo 'Response: '; print_r($result); ?> Só que eu gostaria de usar esses mesmos métodos do Soapclient, mas pra um XML puro como entrada. Nesse caso, acho que ele é: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <ConvertTemp xmlns="http://www.webserviceX.NET/"> <Temperature>31</Temperature> <FromUnit>degreeCelsius</FromUnit> <ToUnit>degreeFahrenheit</ToUnit> </ConvertTemp> </soap:Body> </soap:Envelope> Alguém sabe como se faz? Estou usando esse exemplo existente como base pra uma aplicação que estou desenvolvendo e que envolve um XML com uma estrutura maior que essa e com maior número de parâmetros.
×

Important Information

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