Ir ao conteúdo
  • Cadastre-se

nldj

Membro Pleno
  • Posts

    45
  • Cadastrado em

  • Última visita

Tudo que nldj postou

  1. Obrigado @DiF Eu queria uma solução para não criar um campo na tabela e tampouco outra tabela. Pensei em fazer algo do tipo: - date("t") para me retornar a quantidade de dias cada mês. - se vou enviar 1 mil e-mails por dia, logo, no dia 01/01/2023 terei enviado até o Id 1000 e no final do dia 31/01/2023 terei enviado até o Id 31000. - Se eu sei que envio 1 mil e-mails por dia, para eu saber em qual Id parei, por ex, dia 20/01/2023, basta fazer o calculo de quantos dias faltam para terminar o mês e completar a soma dos 31000 envios. Nesse caso, dia 20/01/2023, terei parado no Id 21000 Essa lógica doida, deve dar certo se eu fiz os cálculos certinho, usando um for para fazer o loop
  2. Boa tarde pessoal! Preciso de ajuda para desenvolver uma lógica. Quero disparar 1 mil e-mails/dia (100 por hora - das 8hr as 18hrs) e vou usar um select limit 100 para buscar os registros no meu banco de dados. Acontece que eu não posso repetir os registros e não vou saber quais e-mails já foram enviados. Então, eu preciso pegar os 100 primeiros registros as 8hrs, depois do 101 ao 200 as 09hrs...e assim por diante Eu poderia estabelecer isso, por ex, por dia, sendo dia 21 todos os registros que começarem com 21, dia 22 todos os registros que começarem com 22, e assim por diante. O problema é que quando começar outro mês, vai repetir os registros, e eu gostaria de deixar automático até terminarem todos os registros da tabela. Alguém tem uma ideia de como eu poderia fazer isso, sem gravar os envios? Por favor! Obrigado
  3. abstract class Bootstrap { public function __construct(){ $this->initRoutes(); $this->rum($this->getUrl()); } private $routes; abstract protected function initRoutes(); protected function rum($url){ array_walk($this->routes,function ($route) use($url) { if($url == $route['route']){ $class = "App\\Controllers\\".ucfirst($route['controller']); $controller = new $class; $controllers = $controller->$route['action']; $controllers(); // Will not work on PHP7. } }); } protected function setRoutes(array $routes){ $this->routes = $routes; } protected function getUrl(){ return parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH); } } Essa function rum funcionava na versão php 5.6 e não funciona na versão 7.3 (da erro de Array to string conversion) quando o array_walk está tentando construir uma função nomeada pelo argumento funcname (nome da rota) em cada elemento de array que é utilizada no controller para renderizar a views após instanciado a classname controller. Alguém sabe como converter esse código para o php 7.3?
  4. Olá pessoal! Tudo bem? Eu tenho duas linhas analógicas da Vivo com busca automática e gostaria de saber se consigo fazer pelo pabx a programação de desvio de chamadas para um número externo, pois o siga-me da Vivo é incompatível para telefones com busca automática e/ou que estejam em um pabx (que é o meu caso). Por favor, agradeço a ajuda. Já procurei no manual e não encontrei.
  5. @DiF obrigado! a questão é: 1- como saber se realmente não está funcionando do jeito q eu fiz? 2- como agora, depois de pronto um enorme projeto, com diversos select, insert, update e delete, defino a conexão como nula, sem precisar fazer isso em cada instância?
  6. @DiF mas não é exatamente isso que estou fazendo com _destruct?
  7. @DiF não estou com problemas para conectar...está conectando tudo certinho...estou com problemas na minha hospedagem que está dizendo ficar aberta minhas conexões e por isso consumir recursos do servidor
  8. 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?
  9. Alguém pode me ajudar? Tenho a seguinte query: select cc.CampoConhecimento, COUNT(distinct(cc.idCv)) as Total, count(CASE WHEN cc.NivelConhecimento = 1 OR cc.NivelConhecimento = 0 OR cc.NivelConhecimento IS NULL THEN 'Basico' ELSE NULL END) as Basico, count(CASE WHEN cc.NivelConhecimento = 2 THEN 'Intermediario' ELSE NULL END) as Intermediario, count(CASE WHEN cc.NivelConhecimento = 3 THEN 'Avancado' ELSE NULL END) as Avancado from tblCurriculoConhecimento cc inner join tblCadastro_Curriculo_Incompleto cv on cv.IdCV = cc.idCV where cv.Ativo = 'S' and (cv.Sexo = 'M' or cv.Sexo = 'F') and cv.Excluido = 'N' and ((YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4) >= 16 or (datediff(YEAR(ifnull(date(cv.DataUpdate),date(cv.DataCadastro))),CURDATE()) + YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4)) >= 16) and (YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4) <= 97 or (datediff(YEAR(ifnull(date(cv.DataUpdate),date(cv.DataCadastro))),CURDATE()) + YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4)) <= 97)) group by cc.CampoConhecimento order by cc.CampoConhecimento asc; Que em 40s me retorna isso: Access 53593 42482 8937 2174 ASP 13271 12963 241 67 AutoCad 20740 15637 3335 1768 C 15261 13903 1093 265 CMais 15666 14284 1118 264 Cobol 12826 12670 109 47 CorelDraw 22418 18069 3192 1157 CSS 33043 27538 4350 1155 Dbase 13049 12839 167 43 Delphi 13226 12901 248 77 Dreamweaver 16216 14578 1223 415 Excel 110420 50002 43771 16647 Flash 17492 15713 1370 409 HTML 50819 38377 9210 3232 Java 15566 14204 1092 270 JavaScript 37677 31640 4869 1168 Linux 19782 17101 2141 540 Macintosh 15491 14245 854 392 MSSQLServer 32612 28300 3625 687 MySQL 32499 27919 3786 794 Net 13734 13095 472 167 Oracle 13711 13240 400 71 Outlook 31534 17714 8555 5265 Photoshop 25695 19547 4478 1670 PHP 14189 13439 594 156 PowerPoint 108758 46837 41646 20277 Sharepoint 12803 12657 102 44 Windows 34045 16383 10059 7603 Word 112999 39167 45279 28554 Para esse resultado eu criei os índices: ALTER TABLE tblCurriculoConhecimento ADD INDEX (idCV,CampoConhecimento,NivelConhecimento); ALTER TABLE tblCurriculoConhecimento ADD INDEX (CampoConhecimento,idCV); ALTER TABLE tblCadastro_Curriculo_Incompleto ADD INDEX (Sexo,Ativo,Excluido,DtNascimento,DataUpdate,DataCadastro,Estado,Cidade,TipoDeficiencia,Instituicao,Curso,Dia,Ano,Nome,CPF,Email); O cv.IdCV é um PRMARY KEY. Eu adicionei no INDEX campos a mais em relação a esta consulta, porque em certos momentos eles serão usados. O EXPLAIN tá me retornando isso: 1 SIMPLE cv index PRIMARY Sexo 1335 null 203349 Using where; Using index; Using temporary; Using filesort 1 SIMPLE cc ref idCV idCV 5 cv.IdCV 4 Using where; Using index Eu queria saber aonde estou errando. Porque minha index "Sexo" não está sendo usada corretamente. E como posso melhorar isso. Por favor. Obrigado,
  10. Vejam, por favor, se conseguem me ajudar a otimizar essa query para melhorar a performance desta consulta mySql que do jeito que está, leva cerca de 90 seg para exibir o resultado. select aa.IdArea, aa.Nome, COUNT(DISTINCT(ca.idCV )) as QtdcvAreaAtuacao from tblareaatuacao aa inner join tblcurriculoareaatuacao ca on ca.idAreaAtuacao = aa.IdArea inner join tblcadastro_curriculo_incompleto cv on cv.IdCV = ca.idCV where cv.Ativo = 'S' and cv.Excluido = 'N' and ((YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4) >= 16 or (datediff(YEAR(ifnull(date(cv.DataUpdate),date(cv.DataCadastro))),CURDATE()) + YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4)) >= 16) and (YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4) <= 97 or (datediff(YEAR(ifnull(date(cv.DataUpdate),date(cv.DataCadastro))),CURDATE()) + YEAR(CURDATE())-RIGHT(REPLACE(cv.DtNascimento, '/', ''),4)) <= 97)) group by aa.IdArea, aa.Nome order by aa.Nome asc; Indexes: tblareaatuacao.IdArea(int) - 159 row(s) returned 0.000 sec / 0.000 sec tblcurriculoareaatuacao.idCV(char) e tblcurriculoareaatuacao.idAreaAtuacao(int) - 402183 row(s) returned 0.000 sec / 2.125 sec tblcadastro_curriculo_incompleto.IdCV(int) - 201408 row(s) returned 0.016 sec / 19.046 sec Qual seria os índices que devo criar para eu obter um desempenho melhor?
  11. nldj

    SQL Server select count case MySql

    preciso fazer um select assim: Select count(CASE WHEN tbl1.dtCadastro = CURDATE() THEN '' ELSE NULL END) as qtdDia, tbl2.id from tbl1 inner join tbl2 on tbl2.id = tbl1.id and tbl2.id = 123 where tbl1.int = 190273 eu quero que o Count me traga q a quantidade de registros no dia, e por por conta do tbl2.id = 123 ele está trazendo apenas um alguém pode me ajudar, por favor?
  12. Faltava indexar os dados. Valeu pessoal!
  13. select t1.id, (select count(campo) from tabela2 where id = t1.id) from tabela1 t1 where ....... select t1.id, (select count(t2.campo) from tabela2 t2 inner join tabela1 on tabela1.id = t2.id where t2.id = t1.id) from tabela1 t1 where ....... select t1.id, count(t2.campo) from tabela1 t1 left join tabela t2 on t2.id = t1.id where ....... Estou tentando dessas 3 formas e a única que roda é a segunda...mesmo assim, com muita lentidão...  Existe alguma outra melhor forma de montar essa query?
  14. <?php for ($x = 1; $x <= 3; $x++) { echo' <select class="form-control" name="AreaAtuacao'.$x.'" id="AreaAtuacao'.$x.'" required="required"> <option value="">Selecione</option>'; foreach ($this->view->areaAtuacao as $areaAtuacao): '<option value="'.$areaAtuacao['IdArea'].'">'.$areaAtuacao['Nome'].'</option>'; endforeach;' </select> '; } não funcionou!
  15. <?php for ($x = 1; $x <= 3; $x++) { ?> <select class="form-control" name="AreaAtuacao<?php echo $x?>" id="AreaAtuacao<?php echo $x?>" required="required"> <option value="">Selecione</option> <?php foreach ($this->view->areaAtuacao as $areaAtuacao):?> <option value="<?php echo $areaAtuacao['IdArea']?>" <?php if($x == $x && $this->view->$AreaAtuacao == $areaAtuacao['IdArea']){echo 'selected';}?>><?php echo $areaAtuacao['Nome']?></option> <?php endforeach;?> </select> <? } consigo construir 3 vezes a HTML select tag pelo for, mas só no primeiro loop o foreach funciona. o que estou fazendo errado? qual o jeito correto de fazer? em procedural antes dava certo.
  16. To tentando fazer uma requisição Ajax em um projeto POO-MVC Tenho um formulário q eu uso o evento onchange pra chamar uma função JavaScript q por sua vez usa Ajax pra requisitar via POST uma página php <!DOCTYPE html> <head> <script> function consultaCPF($cpf) { $.ajax({ type : 'POST', url : 'ajax/consultaCPF.php', data : 'CPF='+$cpf, dataType: 'json', success : function(response){ if(response.codigo == "1") { }else{ } }, error: function(XMLHttpRequest, textStatus, errorThrown){ $("#erro").html('<b>ERRO</b>'+XMLHttpRequest.responseText); } }); } </script> </head> <body> <div id="erro"> <form name="form" method="post"> <input type="text" name="CPF" maxlength="14" onchange="return consultaCPF(this.value)" value="<?php if($_POST){echo $_POST['CPF'];}?>"> </form> </div> </body> </html> Até aí td bem... Na página php eu instancio uma classe da minha Model q faz uma consulta no bd pra saber se já existe ou não cadastrado o CPF digitado no form. Se existir me retorna 1, senão me retorna 2. A resposta eu capturo em json e passo de volta pro Ajax receber. Esse success é q vai determinar minha ação. <?php if($_POST && $_POST['CPF']){ $consulta = new \App\Models\Validacoes(\App\Init::getDb()); $res = $consulta->CPF($_POST['CPF']); if($res == 1){ $retorno = array('codigo' => 1, 'mensagem' => 'CPF ja existe'); echo json_encode($retorno); exit(); }else{ $retorno = array('codigo' => 2, 'mensagem' => 'CPF não cadastrado'); echo json_encode($retorno); exit(); } } Até aí tudo bem... Acontece que quando o Ajax faz a requisição da página php onde eu instancio minha classe, não sei porque tá dando Fatal Error Class Not Found (como se não tivesse conectando com meu banco). namespace App; class Init { public static function getDb(){ $db = new \PDO("mysql:host=127.0.0.1;dbname=root;charset=utf8","root","vertrigo"); return $db; } } Porém funciona se eu testar minha classe direto na página PHTML do formulário usando um método GET pra receber e passar a consulta pro meu objeto. namespace App\Models; class Validacoes { protected $db; public function __construct(\PDO $db) { $this->db = $db; } public function CPF($cpf){ $stmt = $this->db->prepare("Select CPF from tabela where REPLACE(REPLACE(CPF,'.',''),'-','') = :cpf LIMIT 1"); $stmt->bindParam(":cpf",$cpf); $stmt->execute(); if($stmt->fetchAll()){ $res = 1; }else{ $res = 2; } return $res; } } Será q o fato de não funcionar com o Ajax requisitando em public uma página php, tem haver com a rota? Pois só as Views estão usando Controllers! Ou estou fazendo errado utilizando uma página php na requisição Ajax?
  17. Resolvi meu problema. Caso outros passem pela mesma situação, o erro estava na falta de declarar a classe form-group na div e form-control na input
  18. <!DOCTYPE html> <head> <meta charset="utf-8"> <link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <form name="form" action="" method="post" data-toggle="validator" role="form"> <div class="row"> <div class="help-block with-errors"></div> <div class="col-lg-4 col-md-4 col-sm-12 col-xs-12"> <input type="text" placeholder="CPF" name="CPF" data-error="Por favor, informe seu CPF." required> </div> <input type="submit" value="Cadastrar" /> </div> </form> <!--jQuery--> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <!--Bootstrap--> <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> <!--validator--> <script src="js/validator.min.js"></script> </body> </html>
  19. Baixei a class.phpmailer, coloquei em uma pasta phpmailer dentro de public do meu projeto POO-MVC e criei no Models uma classe Mensagem que recebe os parâmetros de envio. Acontece que fiz um template pra separar o HTML do código. Na função PHP Mailer eu consigo definir a Body com um file_get_contents, e recebo o e-mail com o meu template... Até aí tudo bem...o problema que quero colocar conteúdo dinâmico no meu template...então dentro do meu template eu instancio a classe Mensagem que tem um objeto retornando o texto. Porém, quando recebo e-mail com meu template, escreve meu objeto contet(); no lugar do texto...acredito que seja por no PHP Mailer eu ter definido a Body com um file_get_contents. Alguém pode me ajudar?
  20. eu gostaria de criar uma classe para incluir partes de html dentro do meu layout para isso eu queria fazer algo do tipo: class Includes { private $include; public function inc() { include_once "include/".$this->include.".phtml"; } } e <?php echo $include->bottom_master;?> no meu html como sou novo em orientação a objetos, não estou conseguindo fazer essa simples coisa. poderiam me dizer aonde estou errando, por favor? obrigado,
  21. você conhece um jeito de eu importar a base ms-sql na My-Sql?
  22. A versão mínima do Laravel é a 4.2, e ela requer o PHP 5.4. E a versão mínima do LUMEN é a 5.1 para PHP 5.5 Meu servidor só roda PHP 5.3
  23. Além de ser uma questão de gosto e requerer um nível já bem avançado de orientação a objeto, o framework tem que ser compatível com as configurações do PHP 5.3 presentes em meu servidor hospedado na Locaweb. O Laravel é o mais popular (eu sei), mas se não me engano é para versões maiores ou iguais a 7 do PHP. Eu programo da forma procedural, e também separo os módulos em pastas. Gostei da sugestão do microframewor LUMEN, ainda mais pela disponibilidade do curso gratuito, afinal sei que no começo vai ser difícil. Obrigado a todos!
  24. Tenho uma aplicação web hospedada num Cloud Windows na locaweb rodando PHP 5.3 com banco de dados sql server. Eu programo no modo procedural. Gostaria de obter indicações de framework, uma vez que nunca utilizei e tenho pouca familiaridade com orientação a objetos e tenho pouca familiaridade com orientação a objetos.
  25. Tenho uma aplicação web em php com um banco ms-sql de 1,5GB de tamanho, na qual eu estou desenvolvendo um site novo e pretendo utilizar uma MySql. Todavia, vou precisar dos dados que estão no banco ms-sql de 1,5GB de tamanho, e eu gostaria de algumas orientações, tipo: 1) Devo tentar converter um arquivo .dmp para .sql e restaurar no banco MySQL com Workbench? 2) Devo criar manualmente as tabelas e os campos na MySql, exportar os dados do banco ms-sql para um arquivo .csv e depois importá-lo para a MySql? Neste caso, melhor que o nome dos campo e os tipos da MySql sejam iguais os da ms-sql? 3) Devo criar manualmente as tabelas e os campos na MySql com os nomes que eu quiser e fazer um INSERT na nova aplicação PHP por meio da execução HTTP de uma página WEB? Receio que neste caso eu tenha complicação de timeout na inserção de uma tabela com muitos registros, ou que precise converter um determinado dado de origem para conseguir gravar no tipo de campo destino. Lembrando que vou aproveitar para fazer uma limpa no banco ms-sql de 1,5GB, descartando algumas tabelas, campos e dados.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...