Ir para conteúdo
Fórum Script Brasil

wmsilva191

Membros
  • Total de itens

    27
  • Registro em

  • Última visita

Posts postados por wmsilva191

  1. Estou modelando um sistema em PHP, o que vai demandar tempo.
    Sou programador PHP intermediário, estou a procura de profissionais da área de T.I com experiência em PHP, para desenvolvimento de sistemas, parcerias, compartilhamento de atividades projetos etc...

    Quem se interessar por favor me chamar no CHAT.

    Projeto de médio porte, possuo potencial cliente;

    Definições:

    Banco Mysql;

    Codeigniter ( PHP ) ;

    Bootstrap;

    RedMine;

    Repositório;

     

     

  2. Boa noite,

    Você não está utilizando nenhuma função de agregação, por isso não é necessário a utilização do Group By.. Se resultados estiverem repetindo nesse caso opte por analisar os relacionamentos se estão corretos. Também é possível a utilização do comando DISTINCT;

     

    Na SQL você manda ordenar pelo campo capitulos.data , você chegou a conferir se as datas estão sequenciais ?

    Se o campo de data for do tipo data ( não do tipo datetime ) e existir duas datas iguais, se não me engano o banco vai ordenar segundo algum campo indexado, como por exemplo o ID..

    Por exemplo: NOVELA A com ID 1 na data de hoje

    Novela B com id2 na data de amanhã..

     

    O novela B vem primeiro, porém se você colocar a novela A e novela B com mesma data o novela A vem antes... ( eu não estou lembrado, mas acho que tem alguma coisa a ver)

     

    Bom, referente ao SQL aparentemente está correto;  Verifique se as informações no banco de dados estão corretas.

  3. Para retirar o while, no seu caso, é preciso organizar seu banco antes; fazer relacionamentos com inner join, e apartir dai com uma consulta apenas você faz o que você pretende;

    Cada campo precisa estar no que é sua responsabilidade, data é data, numero é int, valores é FLOAT ; DECIMAL, ETC,

    Crie relacionamentos entre suas tabelas; automaticamente terá os indices;

    Crie os índices nas colunas que precisar fazer filtros;

    Por nada, desculpa não poder ter sido efetivo.

     

    Até a próxima.

     

     

  4. Na sql do Join está ocorrendo a repetição de linhas? Se sim logo após o select coloque o DISTINCT ( ou analise as repetições e corrija os relacionamentos; )

    Neste caso a melhor solução é você replicar o banco e aplicação para outro servidor e crie assim um ambiente de testes;

    No ambiente de testes você ajusta os campos de data para data, ID de cliente para INT,  ( conforme as suas regras ) ; padronize os tipos certos para os campos corretos tipo data em data, tipo INT em códigos sequenciais, (Podem ocorrer erros durante os ajustes, principalmente nos campos de data, pois se você faz a conversão dela em texto é gravado de uma forma já em data é armazenada de outra forma;  etc..)

     

    Criação de Índices nas colunas que mais utilizar;  Criação de relacionamento entre as tabelas; tudo isso vai aumentar a performance;

    Sem o índice, por exemplo, quando você busca o cliente 40000, o banco vai olhar todos os clientes até que ele me encontre; se você precisar consultar várias vezes a mesma informação o banco "vai executar" a busca até encontra o cliente.

    O Índice vai otimizar a busca, pois quando você buscar por determinado cliente o banco já vai 'saber' onde procurar, sem precisar passar por todos novamente;

     

    Para retirar do While depende de como sua aplicação está montada, ai é mais arriscado de falar; eu acho que você precisa focar no banco de dados até conseguir obter a consulta de forma rápida; Se está lento na conexão direta com o banco também vai ficar na aplicação ;

     

    O bom de instalar o sistema na sua maquina e testar é que você também verifica se a sua conexão até o servidor também não influencia no resultado;

     

     

  5. A ideia está correta, porem a escrita precisa de atenção

    Ex: 1.1.4 - FROM peixe p ; ON p.codpeixe ;

     

    Procedure:

    No código abaixo tem a criação da Procedure e da Trigger;

    Para inserir utilizando a procedure basta chamar

     

    call cadastrarPeixe(2,"Nemo",0.301,"Laranja",1,1);
    call cadastrarPeixe(1,"Dory",0.321,"Azul",1,1);

     

     

     

    Se quiser testar eu elaborei o banco, basta você subir em um banco de dados seu;

     

    -- --------------------------------------------------------
    -- Servidor:                     127.0.0.1
    -- Versão do servidor:           5.6.17 - MySQL Community Server (GPL)
    -- OS do Servidor:               Win64
    -- HeidiSQL Versão:              9.3.0.4984
    -- --------------------------------------------------------
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET NAMES utf8mb4 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    
    -- Copiando estrutura para procedure foruns.cadastrarPeixe
    DELIMITER //
    CREATE DEFINER=`root`@`localhost` PROCEDURE `cadastrarPeixe`( IN codpeixe INT, 
    										  IN nome VARCHAR(50), 
    										  IN peso FLOAT, 
    										  IN cor VARCHAR(50), 
    										  IN codEspecie INT, 
    										  IN codEcossistema INT)
    BEGIN
    	INSERT INTO peixe VALUES (codpeixe, nome, peso, cor, codEspecie, codEcossistema);
    END//
    DELIMITER ;
    
    
    -- Copiando estrutura para tabela foruns.ecossistema
    CREATE TABLE IF NOT EXISTS `ecossistema` (
      `codEcossistema` int(11) NOT NULL AUTO_INCREMENT,
      `nome` varchar(50) DEFAULT NULL,
      `temp` varchar(50) DEFAULT NULL,
      `codTipo` int(11) DEFAULT NULL,
      `codLocal` int(11) DEFAULT NULL,
      PRIMARY KEY (`codEcossistema`),
      KEY `fkCodTipo` (`codTipo`),
      KEY `fkCodLocal` (`codLocal`),
      CONSTRAINT `fkCodTipo` FOREIGN KEY (`codTipo`) REFERENCES `tipo` (`codTipo`),
      CONSTRAINT `fkCodLocal` FOREIGN KEY (`codLocal`) REFERENCES `local` (`codLocal`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
    
    -- Copiando dados para a tabela foruns.ecossistema: ~0 rows (aproximadamente)
    /*!40000 ALTER TABLE `ecossistema` DISABLE KEYS */;
    INSERT INTO `ecossistema` (`codEcossistema`, `nome`, `temp`, `codTipo`, `codLocal`) VALUES
    	(1, 'filme', '?', NULL, 1);
    /*!40000 ALTER TABLE `ecossistema` ENABLE KEYS */;
    
    
    -- Copiando estrutura para tabela foruns.especie
    CREATE TABLE IF NOT EXISTS `especie` (
      `codEspecie` int(11) NOT NULL AUTO_INCREMENT,
      `nome` varchar(50) DEFAULT NULL,
      `numeroPeixes` int(11) DEFAULT NULL,
      PRIMARY KEY (`codEspecie`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
    
    -- Copiando dados para a tabela foruns.especie: ~2 rows (aproximadamente)
    /*!40000 ALTER TABLE `especie` DISABLE KEYS */;
    INSERT INTO `especie` (`codEspecie`, `nome`, `numeroPeixes`) VALUES
    	(1, 'Peixe Palhaço', 2),
    	(2, 'Lambari', 0);
    /*!40000 ALTER TABLE `especie` ENABLE KEYS */;
    
    
    -- Copiando estrutura para tabela foruns.local
    CREATE TABLE IF NOT EXISTS `local` (
      `codLocal` int(11) NOT NULL AUTO_INCREMENT,
      `local` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`codLocal`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
    
    -- Copiando dados para a tabela foruns.local: ~0 rows (aproximadamente)
    /*!40000 ALTER TABLE `local` DISABLE KEYS */;
    INSERT INTO `local` (`codLocal`, `local`) VALUES
    	(1, 'cinema');
    /*!40000 ALTER TABLE `local` ENABLE KEYS */;
    
    
    -- Copiando estrutura para tabela foruns.peixe
    CREATE TABLE IF NOT EXISTS `peixe` (
      `codPeixe` int(11) NOT NULL AUTO_INCREMENT,
      `nome` varchar(50) DEFAULT NULL,
      `peso` float DEFAULT NULL,
      `cor` varchar(50) DEFAULT NULL,
      `codEspecie` int(11),
      `codEcossistema` int(11) DEFAULT NULL,
      PRIMARY KEY (`codPeixe`),
      KEY `fkCodEspeciePeixe` (`codEspecie`),
      KEY `fkCodEcossistemaPeixe` (`codEcossistema`),
      CONSTRAINT `fkCodEspeciePeixe` FOREIGN KEY (`codEspecie`) REFERENCES `especie` (`codEspecie`),
      CONSTRAINT `fkCodEcossistemaPeixe` FOREIGN KEY (`codEcossistema`) REFERENCES `ecossistema` (`codEcossistema`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
    
    -- Copiando dados para a tabela foruns.peixe: ~2 rows (aproximadamente)
    /*!40000 ALTER TABLE `peixe` DISABLE KEYS */;
    INSERT INTO `peixe` (`codPeixe`, `nome`, `peso`, `cor`, `codEspecie`, `codEcossistema`) VALUES
    	(1, 'Dory', 0.321, 'Azul', 1, 1),
    	(2, 'Nemo', 0.301, 'Laranja', 1, 1);
    /*!40000 ALTER TABLE `peixe` ENABLE KEYS */;
    
    
    -- Copiando estrutura para tabela foruns.tipo
    CREATE TABLE IF NOT EXISTS `tipo` (
      `codTipo` int(11) NOT NULL AUTO_INCREMENT,
      `tipo` varchar(50) DEFAULT NULL,
      PRIMARY KEY (`codTipo`)
    ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
    
    -- Copiando dados para a tabela foruns.tipo: ~1 rows (aproximadamente)
    /*!40000 ALTER TABLE `tipo` DISABLE KEYS */;
    INSERT INTO `tipo` (`codTipo`, `tipo`) VALUES
    	(1, 'animacao');
    /*!40000 ALTER TABLE `tipo` ENABLE KEYS */;
    
    
    -- Copiando estrutura para tabela foruns.videos
    CREATE TABLE IF NOT EXISTS `videos` (
      `codigo` int(11) NOT NULL AUTO_INCREMENT,
      `link` varchar(50) DEFAULT '0',
      PRIMARY KEY (`codigo`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
    
    -- Copiando dados para a tabela foruns.videos: ~2 rows (aproximadamente)
    /*!40000 ALTER TABLE `videos` DISABLE KEYS */;
    INSERT INTO `videos` (`codigo`, `link`) VALUES
    	(1, 'https://www.youtube.com/embed/60ItHLz5WEA'),
    	(2, 'https://www.youtube.com/embed/COq2RouJ2tQ');
    /*!40000 ALTER TABLE `videos` ENABLE KEYS */;
    
    
    -- Copiando estrutura para trigger foruns.peixe_after_insert
    SET @OLDTMP_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_ENGINE_SUBSTITUTION';
    DELIMITER //
    CREATE TRIGGER `peixe_after_insert` AFTER INSERT ON `peixe` FOR EACH ROW BEGIN
    
    UPDATE especie set especie.numeroPeixes = (SELECT COUNT(1) FROM peixe WHERE peixe.codEspecie=especie.codEspecie );
    
    END//
    DELIMITER ;
    SET SQL_MODE=@OLDTMP_SQL_MODE;
    
    
    -- Copiando estrutura para trigger foruns.peixe_after_update
    SET @OLDTMP_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_ENGINE_SUBSTITUTION';
    DELIMITER //
    CREATE TRIGGER `peixe_after_update` AFTER UPDATE ON `peixe` FOR EACH ROW BEGIN
    
    UPDATE especie set especie.numeroPeixes = (SELECT COUNT(1) FROM peixe WHERE peixe.codEspecie=especie.codEspecie );
    END//
    DELIMITER ;
    SET SQL_MODE=@OLDTMP_SQL_MODE;
    /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
    /*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

     

  6. Olá,

    pelo que eu saiba o Código no início do PHP vai 'forçar' a aparecer da forma como você definir.

     

    Quando você fala código fonte você quer dizer o seu PHP dentro do servidor da Hostinger ( SE FOR PROCURE OUTRO ) ??

    OU o código fonte ( botão direito do mouse código fonte ? ) ; Se for é normal, já que o caractere está sendo convertido no HTML;

     

  7. <?php
    
    //EXEMPLOS SEM BANCO DE DADOS 
    /*
    $links = array("https://www.youtube.com/embed/60ItHLz5WEA",
    "https://www.youtube.com/embed/n4RjJKxsamQ");
    
    $links[] = "https://www.youtube.com/embed/60ItHLz5WEA";
    $links[] = "https://www.youtube.com/embed/n4RjJKxsamQ";
    */
    
    $links = ["https://www.youtube.com/embed/60ItHLz5WEA",
    	    	"https://www.youtube.com/embed/d5eH-calbuA"];
    	echo '<h1> Utilizando Array <h1>';		
    foreach($links as $link){
    	echo "<iframe width='590' height='335' src='".$link."' frameborder='0' allowfullscreen> </iframe>";
    }
    
    
    
    
    //EXEMPLO COM BANCO DE DADOS
    echo '<hr><h1> Utilizando BD <h1>';
    $conexao = new mysqli("localhost", "root","","foruns");
    $query = $conexao->query("SELECT * FROM videos");
    while ($linha = $query->fetch_object()){
          echo "<iframe width='590' height='335' src='".$linha->link."' frameborder='0' allowfullscreen> </iframe>";;
        }
    
    
    ?>
    

     

     

     

    CREATE TABLE IF NOT EXISTS `videos` (
      `codigo` int(11) NOT NULL AUTO_INCREMENT,
      `link` varchar(50) DEFAULT '0',
      PRIMARY KEY (`codigo`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
    
    INSERT INTO `videos` (`codigo`, `link`) VALUES
    	(1, 'https://www.youtube.com/embed/60ItHLz5WEA'),
    	(2, 'https://www.youtube.com/embed/COq2RouJ2tQ');

     

  8. As dicas do relatório são criar condições para que o banco de dados indexe os resultados de forma que fique mais rápida a busca; Veja como criar indices;

    Agora, eu sinceramente não sei como posso te ajudar, a não ser você fazer consultas nas tabelas, analisar os logs, se der poste eles aqui para ver se consigo em algo ( na imagem ele tem um link que penso que vai para os logs, clica no link e veja se é) ; Teste os campos que você mais usa, veja períodos diferentes;

    Agora o certo seria testar e analisar mesmo, mesmo;

     

    Execute as Querys separadamente e veja se há diferenças

     

     SELECT * FROM financeiro;
    SELECT * 
    FROM 
    	financeiro 
    WHERE 
    	vencimento BETWEEN '2016-01-01' AND '2016-01-31'

     

  9. Espero ter sido claro na documentação abaixo; em caso de dúvidas pode postar aqui;
    Lentidão pode problema de memória RAM que afeta PHP e Mysql; Pode ser o PHP que está realizando recursos desnecessários; É bom avaliar para ver se está tudo em ordens; Pode ser também relacionado a grande quantidade de informações sendo armazenados na tabela (Javascript, jquery, sei lá), o processamento em sí, para isso vamos testar primeiro a SQL;

     

     1.    Onde está rodando o Servidor da Aplicação (PHP) e Servidor de Mysql ? ( qual a configuração, CPU , MEMÓRIA ) ? verifique com a aplicação em execução se os recursos estão sobrecarregados;

    1.a   Precisamos ver se é sua aplicação que está apresentando lentidão ou se é o banco, para isso vamos ignorar o PHP por agora e trabalhar apenas com SQL;

    2-    Utilize sua ferramenta de preferência, ( MENOS PHPMYADMIN  ) eu gosto da HeidiSQL, mas também tem o ToadMysql;

    2.a Pelo que ví nas imagens e em seu código eu fiz esse código abaixo, e se possível, teste ele no banco de dados, pode ser em seu ambiente de testes;

    2.a.1 - Você teve dificuldades em interpretar o código?

    2.a.1 - Se o campo diferenca_dias ficar negativo ( onde precisa ser positivo)  inverte o now() e o financeiro.vencimento ;

    2.a.2 - Se der erro na execução da SQL confira se os campos estão de forma correta;

    2.a.3 - Adicione Filtros 'WHERE' da forma que precisar e teste situações diferentes.

     

     

     

     

    SELECT
    financeiro.id,
    financeiro.pedido,
    financeiro.valor,
       
    clientes.nome,
    clientes.rgcliente,
    clientes.cep,
    financeiro.status,
    
    carnes.fatura,
    carnes.data_vencimento,
    	
    	DATEDIFF(financeiro.vencimento,now()) diferenca_dias
    FROM financeiro
    INNER JOIN clientes ON clientes.id=financeiro.cliente
    INNER JOIN carne ON carnes.numero_documento = financeiro.boleto
    
    WHERE
        MONTH(financeiro.vencimento) = '01'
    AND YEAR(financeiro.vencimento) = '2017'
    AND clientes.nome LIKE '%%' 
    LIMIT 0,10
    

     

     

     

    OU esta SQL, caso a de cima apresente problemas devido aos tipos dos campos serem diferentes UTILIZE a SQL abaixo;

    3 - OBSERVAÇÕES: O campo carnes.numero_documento é varchar(50) enquanto o financeiro.boleto é varchar(30) ou seja,

    3.1 -  SE EXISTE carnes.numero_documento COM 50 de tamanho e for quebrado para 30, não quer dizer que seja igual a financeiro.boleto, o que vai mostrar BOLETOS repetidos;

    3.2 - Foi preciso também converter o tipo clientes.id que é Inteiro em CHAR(11) que é o mesmo tamanho da tabela financeiro.cliente;

     

    
    
    
    SELECT
       
    financeiro.id,
    financeiro.pedido,
    financeiro.valor,
       
    clientes.nome,
    clientes.rgcliente,
    clientes.cep,
    financeiro.status,
    
    carnes.fatura,
    carnes.data_vencimento,
    	
    DATEDIFF(financeiro.vencimento,now()) diferenca_dias
    FROM financeiro
    INNER JOIN clientes ON cast(clientes.id, CHAR(11))=CAST(financeiro.cliente, CHAR(11))
    INNER JOIN carne ON cast(carnes.numero_documento, CHAR(30)) = CAST(financeiro.boleto, CHAR(30))
    
    WHERE
        MONTH(financeiro.vencimento) = '01'
    AND YEAR(financeiro.vencimento) = '2017'
    AND clientes.nome LIKE '%%' 
    LIMIT 0,10

     

     

  10.  

     

    Fábio, bom dia.

     

    O primeiro teste será tirar o order by da select , e divulgue o resultado.

    SELECT * FROM financeiro WHERE situacao = 'N'

     

     

     

     

    1 - Esse código é algum produto já em produção, ou é estudo?

     

    Pelo que lí em seu código a tabela financeiro se relaciona com Cliente; bom de qualquer forma, se for possível, coloque o nome das Tabelas e o nome de todas as colunas para eu entender; Se você tiver um print do sistema coloque aqui também; Se tiver do banco de dados ( MER ) , coloque também;

    Quantos registros você tem em cada uma dessas tabelas?

     

    2 - Se for para estudo, ou maleável a adaptação, eu vou te ajudando a modelar o banco de dados de forma que não ocorra nenhuma falha na normalização.

     

    • Esse código é uma rotina para calcular os valores e datas e salvar no banco de dados novamente?
      • Se sim, podemos tentar uma Tarefa do Mysq ; para realizar o calculo de forma automatizada, sem necessidade de PHP, Apenas SQL;
    • Esse código é uma lista de boletos exibidos na tela do sistema
      • Se sim, tente utilizar LIMIT na SQL; para exibir de poucos de uma vez;

     

     

     

     

     

     

  11. Pelo que vi na imagem do link a forma da escrita está diferente; Vou explicar aqui..

    A primeira situação ( escrita ), você definiu um laço ( while ) e informou que a variável $exlink iria receber o valor $link da sua consulta; entretanto da forma que está escrito a informação seria sempre sobreposta a cada leitura que existisse, por exemplo, se você tiver 10 links você vai sempre obter o ultimo link;

     

    Da forma que você escreveu você vai conseguir o efeito que deseja, entretanto como você mudou o código HTML para dentro do PHP você não precisa mais abrir as chaves, e será necessário fazer a concatenação das variáveis ; veja um exemplo abaixo;

     

    <?php
    
    while($linhas = mysql_fetch_array($resultado)){
    	$exlink = $linkas['link'];
    	echo "<iframe width='590' height='335' src='".$exlink."' frameborder='0' allowfullscreen> </iframe>";
    }
    
    ?>

     

    De qualquer forma, esse código que te passei acima ainda não faz sentido; o que você está tentando fazer? Pelo que eu entendi você tem uma tabela que contem uma coluna com links; e você quer que os links sejam carregados em um Iframe; Mas ao carregar mais de um iframe vai acontecer algo que não é legal, roda o código e veja;

     

    falou.

     

     

     

     

  12. Qual é a sua intenção? Se é teste e aprendizagem já tem um erro de forma normal na sua modelagem, pois na teoria deve-se existir apenas uma tabela de cidade, e a cidade com um código. Este código em seguida deve estar associado ao cadastro do endereço do Cliente, e também ao cadastro do endereço da cidade; Dessa forma o mesmo código estaria nos dois cadastros;

    Conforme informado pelo colega acima, poste sua SQL se possível as tabelas que você quer que seja desenvolvido o SQL.

  13. OI

    Isso pode ser um problema de versão ou de ferramenta;

    EU utilizo o HeidiSQL; é simples e eficaz. de qualquer forma 6,0 está errado mesmo.

    Segue exemplo do que eu criei e testei;

     

    CREATE TABLE IF NOT EXISTS `teste` (
      `VALOR` decimal(6,2) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    INSERT INTO `teste` (`VALOR`) VALUES
    	(2.20),
    	(3.50),
    	(2.20);

     

×
×
  • Criar Novo...