Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Recommended Posts

  Olá a todos, ESTOU COM UM PROBLEMÃO e preciso muito da ajuda de vocês!! Faz duas semanas que estou pesquisando como fazer um gráfico e integra-lo ao meu banco de dados. Tentei de várias e várias formas porém não consegui. Preciso gerar um gráfico com a quantidade de viagens realizada por dia para os determinados locais "puma", "MA" e "diversos".  Gostaria de utilizar o between também para definir o período da pesquisa.

Não tenho ideia de onde colocar as variáveis, ou se minha busca sql esta correta ME DA UM HELP, ficarei super grato 

	<form method="post" action="">
    <label>Data incial:</label>
    <input id="dataInicial" name="dataInicial" type="date" required="" >
    <label>Data final:</label>
    <input id="dataFinal" name="dataFinal" type="date" required="" >
    <button id="enviar" name="enviar" class="btn btn-primary">Enviar </button>
    </form>
<?php
	$servidor = "localhost";
	$usuario = "root";
	$senha = "";
	$dbname = "controlebaldeio";
	
	//Criar a conexao
	$conn = mysqli_connect($servidor, $usuario, $senha, $dbname);
	 
	if(!$conn){
		die("Falha na conexao: " . mysqli_connect_error());
	}else{
		//echo "Conexao realizada com sucesso";
	}	
	
	$dataInicial = $_POST['dataInicial'];
	$dataFinal = $_POST['dataFinal'];

	$result_usuario = "SELECT local, sum(quantidade) as quantidade FROM registro WHERE dataViagem BETWEEN '$dataInicial' AND '$dataFinal' GROUP BY local";
	$resultado_usuario = mysqli_query($conn, $result_usuario);
	
	while($row_usuarios = mysqli_fetch_assoc($resultado_usuario)){
		 $local = $row_usuarios['local'];
		 $quantidade = $row_usuarios['quantidade'];
		 $dataViagem = $row_usuarios['dataViagem'].;
	}
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
</head>
 <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
    <script type="text/javascript">
      google.charts.load('current', {'packages':['line']});
      google.charts.setOnLoadCallback(drawChart);

    function drawChart() {

      var data = new google.visualization.DataTable();
      data.addColumn('number', 'Dia');
      data.addColumn('number', 'PUMA');
      data.addColumn('number', 'MA');
      data.addColumn('number', 'DIVERSOS');

      data.addRows([
        [1,  37.8, 8, 41.8],
        [2,  30.9, 69.5, 32.4],
        [3,  25.4,   57, 25.7],
        [4,  11.7, 18.8, 10.5],
        [5,  11.9, 17.6, 10.4],
        [6,   8.8, 13.6,  7.7],
        [7,   7.6, 12.3,  9.6],
        [8,  12.3, 29.2, 10.6],
        [9,  16.9, 42.9, 14.8],
        [10, 12.8, 30.9, 11.6],
        [11,  5.3,  7.9,  4.7],
        [12,  6.6,  8.4,  5.2],
        [13,  4.8,  6.3,  3.6],
        [14,  4.2,  6.2,  3.4]
      ]);

      var options = {
        chart: {
          title: 'RELATÓRIO DE VIAGENS',
        },
        width: 900,
        height: 500,
        axes: {
          x: {
            0: {side: 'top'}
          }
        }
      };

      var chart = new google.charts.Line(document.getElementById('line_top_x'));

      chart.draw(data, google.charts.Line.convertOptions(options));
    }
  </script>

<body>
<div id="line_top_x"></div>
</body>
</html>

 

print grafico.png

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, Vinicius Rangel disse:

Você tem que olhar a documentação do chart que utiliza..

qual lib de chart é essa? e qual gráfico está tentando montar de acordo com os seus exemplos?

Bom dia,  olhei sim a documentação, porém não mostram como incluir ao banco de dados. O tipo do gráfico é o "Line". A foto anexada é como ele está sendo exibido (Coloquei as flechas apenas para melhor compreensão do mesmo), porém esses dados contidos nele são estáticos, o que eu preciso é ligar ao meu Banco de Dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que bilbioteca dce gráficos é essa ?  é o google charts ? Se for, não tem como 'trazer direto' do banco de dados, ou prepara a array e cospe um json ou printa individualmente, no seu caso, como é dinamico podendo alternar entre intervalos, você sempre vai precisar percorrer a array.

O processo no seu caso é:

Consulta -> Agrupa as Series por data -> separa os valores por elemento (PUMA,MA,Diversos) -> Devolve a construçao -> printa

 

Cola a  estrutura e um exemplo de registro do seu BD na resposta.

 

PS: Eu particularmente não gosto dessa lib, ja tentou ver outras mais simples de manuesear como highcharts e fusioncharts?

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, AnthraxisBR disse:

Que bilbioteca dce gráficos é essa ?  é o google charts ? Se for, não tem como 'trazer direto' do banco de dados, ou prepara a array e cospe um json ou printa individualmente, no seu caso, como é dinamico podendo alternar entre intervalos, você sempre vai precisar percorrer a array.

O processo no seu caso é:

Consulta -> Agrupa as Series por data -> separa os valores por elemento (PUMA,MA,Diversos) -> Devolve a construçao -> printa

 

Cola a  estrutura e um exemplo de registro do seu BD na resposta.

 

PS: Eu particularmente não gosto dessa lib, ja tentou ver outras mais simples de manuesear como highcharts e fusioncharts?

 

Bom dia, estou usando google charts sim (até porque ele é visualimente mais agradavel). Achei que seria um pouco mais fácil porém não é nada facil rsrs. Eu não consigo fazer aparecer o valor das minhas variáveis, preciso de um grafico que apareça as informações em linha, independente da Lib, porém não encontrei forma de fazer aparecer os valores. Segue abaixo a tabela do meu banco de dados.

 

=========================================================================================================


 

SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `controlebaldeio`
--
-- --------------------------------------------------------
--
-- Estrutura da tabela `registro`
--
CREATE TABLE `registro` (
  `idregistro` int(11) NOT NULL,
  `login_idlogin` int(11) NOT NULL,
  `cm_idcm` int(11) NOT NULL,
  `dataViagem` date DEFAULT NULL,
  `quantidade` varchar(10) NOT NULL,
  `local` varchar(60) NOT NULL,
  `hora` time NOT NULL,
  `dataAtual` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Extraindo dados da tabela `registro`
--
INSERT INTO `registro` (`idregistro`, `login_idlogin`, `cm_idcm`, `dataViagem`, `quantidade`, `local`, `hora`, `dataAtual`) VALUES
(58, 6, 24, '2017-09-13', '3', 'MA - Klabin - Telêmaco Borba', '01:23:00', '2017-09-13'),
(57, 6, 23, '2017-09-14', '3', 'Puma - Klabin - Ortigueira', '14:47:07', '2017-09-13'),
(56, 6, 24, '2017-09-12', '2', 'Diversos', '03:56:00', '2017-09-12'),
--
-- Indexes for dumped tables
--
--
-- Indexes for table `registro`
--
ALTER TABLE `registro`
  ADD PRIMARY KEY (`idregistro`),
  ADD KEY `registro_FKIndex1` (`login_idlogin`),
  ADD KEY `registro_FKIndex2` (`cm_idcm`),
  ADD KEY `IFK_Rel_01` (`login_idlogin`),
  ADD KEY `IFK_Rel_02` (`cm_idcm`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `registro`
--
ALTER TABLE `registro`
  MODIFY `idregistro` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=81;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Tudo bem pessoal?
       
      No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
      Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
      O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
       
      $banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
      $banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
      while($busca= mysqli_fetch_array($banner)){
          print $busca['cidade'].'<br>';
      };
       
      Alguém consegue me ajudar?
    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Tenho 3 selects assim com varias categorias...
       
              $sql = "SELECT * FROM topicos          WHERE idcategoria = $idcategoria          AND pubdate BETWEEN NOW() - INTERVAL $intervalo1_horas_ou_minutos $tipo_intervalo1_horas_mnutos AND          NOW() - $intervalo2_horas_ou_minutos ORDER BY pubdate DESC LIMIT 1"; Preciso que na minha pagina principal (index) mostre este registro por 10minutos.. passando de 10 minutos mostra o resultado do proximo select (categoria)..
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.