lui hurk 0 Denunciar post Postado Dezembro 27, 2014 Pessoal estou com uma dificuldade imensa de elaborar um gráfico conectado a BD peguei um código aqui utilisei porem e não aparece depois de ter inserido os dados do DB, alguém pode analisa e ver o que estou fazendo de errado? <?php $conectar = mysql_connect('localhost', 'root', 'STRONG'); mysql_select_db('obras', $conectar); $QtdeRespostas1 = mysql_result(mysql_query("SELECT COUNT( * ) FROM ipotese WHERE info LIKE ('Sim%')"),0); $QtdeRespostas2 = mysql_result(mysql_query("SELECT COUNT( * ) FROM ipotese WHERE info LIKE ('Não%')"),0); $QtdeRespostas3 = mysql_result(mysql_query("SELECT COUNT( * ) FROM ipotese WHERE info LIKE ('Não Sei%')"),0); $QtdeRespostas4 = mysql_result(mysql_query("SELECT COUNT( * ) FROM ipotese WHERE info LIKE ('Em Parte%')"),0); ?> <html> <head> <!--Load the AJAX API--> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> // Load the Visualization API and the piechart package. google.load('visualization', '1.0', {'packages':['corechart']}); // Set a callback to run when the Google Visualization API is loaded. google.setOnLoadCallback(drawChart); // Callback that creates and populates a data table, // instantiates the pie chart, passes in the data and // draws it. function drawChart() { // Create the data table. var data = new google.visualization.DataTable(); data.addColumn('string', 'Topping'); data.addColumn('number', 'Slices'); data.addRows([ ['Sim <?php echo $QtdeRespostas1; ?>'], ['Não <?php echo $QtdeRespostas2; ?>'], ['Não sei <?php echo $QtdeRespostas3; ?>'], ['Em parte <?php echo $QtdeRespostas4; ?>'] ]); // Set chart options var options = {'title':'1) PergunraI', 'is3D': true, 'width':900, 'height':450}; // Instantiate and draw our chart, passing in some options. var chart = new google.visualization.PieChart(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <!--Div that will hold the pie chart--> <div id="chart_div"></div> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
HooDryd 0 Denunciar post Postado Dezembro 27, 2014 Fora do javascript, imprima todos os $QtdeRespostas... <body> <!--Div that will hold the pie chart--> <div id="chart_div"></div> <?php echo $QtdeRespostas1 ?><br><br> <?php echo $QtdeRespostas2 ?><br><br> <?php echo $QtdeRespostas3 ?><br><br> <?php echo $QtdeRespostas4 ?><br><br> </body> Se não aparecer nada, o problema é na sql ou no banco de dados. Seria possível mostrar a estrutura dele? Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 27, 2014 Te respondendo a ajuda: não apareceu, apareceu numeros zero, mas vamos ao que realmente quero e não estou conseguindo. O exemplo abaixo é meu projeto, porém se observar existem tipos repetidos : o que quero é que a quande dos tipos se somam-se por um método "COUNT" ou "SUM" ou outro que possa fazer isto E como solicitado a estrutura do meu DB. Eu acho que você entendeu a cada quantidade que insiro no equipamento ele recupera o total. Deste jeito NO GRAFICO. Total Religadora = 42Total TC = 39Total TP = 94Total TPC = 22Total TRAFO = 20 Ressaltando que no meu formulário a coluna equipamentos é uma combobox. Sou novo em php e achei o máximo para web. Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Dezembro 27, 2014 alem do SUM() vai precisar do GROUP BY no seu select http://www.w3schools.com/sql/sql_groupby.asp Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 27, 2014 inclusive este que você me propõe esta aqui: Total Religadora = 42Total TC = 39Total TP = 94Total TPC = 22 Total TRAFO = 20 Ele funciona muito bem na tabela, porem não sei como por o metodo para o grafico gráfico analisar, tentei foi muito algumas formas e nada por isso a minha visita ao forum especializado em php. la vai o codigo que me retornou o resultado acima: <?php // Make a MySQL Connection mysql_connect("localhost", "root", "eeee") or die(mysql_error()); mysql_select_db("gestao") or die(mysql_error()); $query = "SELECT equipamento, SUM(total) FROM progarmacao GROUP BY equipamento"; $result = mysql_query($query) or die(mysql_error()); // Print out result while($row = mysql_fetch_array($result)){ echo "Total ". $row['equipamento']. " = ". $row['SUM(total)']; echo "<br />"; } ?> ta valendo Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Dezembro 27, 2014 Dei uma olhada na documentação https://google-developers.appspot.com/chart/interactive/docs/gallery/piechart a modelo é assim; function drawChart() { var data = google.visualization.arrayToDataTable([ ['Equipamentos', 'Total'], ['Work', 11], ['Eat', 2], ['Commute', 2], ['Watch TV', 2], ['Sleep', 7] ]); use o loop para por seus dados Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 27, 2014 O processo da documentação to ligado, inclusive te envio como desenvolvi o grafico la de cima: segue para análise: <?php require_once('../graf_SUM/conect.php'); $rows = array(); //flag is not needed $flag = true; $table = array(); $table['cols'] = array( // Labels for your chart, these represent the column titles // Note that one column is in "string" format and another one is in "number" format as pie chart only required "numbers" for calculating percentage and string will be used for column title array('label' => 'equipamento', 'type' => 'string'), array('label' => 'total', 'type' => 'number') ); $rows = array(); while($r = mysql_fetch_assoc($sth)) { $temp = array(); // the following line will be used to slice the Pie chart $temp[] = array('v' => (string) $r['equipamento']); // Values of each slice $temp[] = array('v' => (int) $r['total']); $rows[] = array('c' => $temp); } $table['rows'] = $rows; $jsonTable = json_encode($table); //echo $jsonTable; ?> <html> <head> <!--Load the Ajax API--> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script type="text/javascript"> // Load the Visualization API and the piechart package. google.load('visualization', '1', {'packages':['corechart']}); // Set a callback to run when the Google Visualization API is loaded. google.setOnLoadCallback(drawChart); function drawChart() { // Create our data table out of JSON data loaded from server. var data = new google.visualization.DataTable(<?=$jsonTable?>); var options = { title: ' WindFarms no Ce, RN e RS. ', is3D: 'true', width: 800, height: 600 }; // Instantiate and draw our chart, passing in some options. // Do not forget to check your div ID var chart = new google.visualization.PieChart(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <!--this is the div that will hold the pie chart--> <div id="chart_div"></div> </body> </html> O lance principal é que está repetindo os equipamento e não soma a quantidade dos mesmos eu só preciso desta solução, que não repita os equipamentos e somem (+) as quantidades como o SUM() GROUP BY select faz. Eu não estou sabendo onde o método vai no código ou como vai. Tenho certeza que agora você entendeu. Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Dezembro 28, 2014 Seu select esta funcionando direto no banco? nessa linha //echo $jsonTable; o esta certo os dados que mostra? eu tentaria assim: antes desse trecho faz o select e atribua a $sth <script type="text/javascript"> google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Equipamentos', 'Total'], <?php while($r = mysql_fetch_assoc($sth)){ echo "['$r[0]', '$r[1]']"; }; ?> ]); var options = { title: 'My Daily Activities', is3D: true, }; var chart = new google.visualization.PieChart(document.getElementById('piechart_3d')); chart.draw(data, options); } </script> Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 28, 2014 Não deu certo o gráfico não aparece. Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Dezembro 28, 2014 Se copiou e colou, acho que nao ia mesmo nessa linha vc poe o ID da sua DIV var chart = new google.visualization.PieChart(document.getElementById('piechart_3d')); se ainda assim nao aparecer, veja que erro aparece no console Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 28, 2014 Companheiro é este o retorno Estou começando a ficar frustrado. Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Dezembro 28, 2014 Aperte CTRL+U pra ver se o codigo JS gerado esta certo veja o exemplo da documentacao https://google-developers.appspot.com/chart/interactive/docs/gallery/piechart#3D Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 28, 2014 Aparentemente o js não está funcionando , como resolver, tentei inserir dados e mesmo assim o js não funciona. Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 28, 2014 Companheiro acredito que seu código tenha algum erro de sintax, Porque, o código a seguir é do meu projeto original aqule chart lá de cima. segue o js dele. <html> <head> <!--Load the Ajax API--> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script type="text/javascript"> // Load the Visualization API and the piechart package. google.load('visualization', '1', {'packages':['corechart']}); // Set a callback to run when the Google Visualization API is loaded. google.setOnLoadCallback(drawChart); function drawChart() { // Create our data table out of JSON data loaded from server. var data = new google.visualization.DataTable({ "cols":[ {"label":"equipamento","type":"string"}, {"label":"total","type":"number"}], "rows":[ {"c":[{"v":"TRAFO"}, {"v":20}]},{"c":[{"v":"TP"}, {"v":4}]},{"c":[{"v":"TP"}, {"v":90}]},{"c":[{"v":"Religadora"}, {"v":33}]},{"c":[{"v":"TC"}, {"v":35}]},{"c":[{"v":"TC"}, {"v":4}]},{"c":[{"v":"TPC"}, {"v":22}]},{"c":[{"v":"RELIGADORA"}, {"v":9}]}]}); var options = { title: ' WindFarms no Ce, RN e RS. ', is3D: 'true', width: 800, height: 600 }; // Instantiate and draw our chart, passing in some options. // Do not forget to check your div ID var chart = new google.visualization.PieChart(document.getElementById('chart_div')); chart.draw(data, options); } </script> </head> <body> <!--this is the div that will hold the pie chart--> <div id="chart_div"></div> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 28, 2014 Olá pessoal estou tentando o método COUNT... alguém poderia analisar por gentileza. A estrutura do BD continua a mesma, não fugindo do foco. Acho que é no trecho da Consulta SQL é que estou errando. <?php require_once 'GetGraf/confinect.php'; $con = new conexao(); $con->connect(); //Consulta SQL $query = mysql_query("SELECT gestao as equipamento, count(*) as total FROM progarmacao group by equipamento ORDER BY total DESC"); $table = array(); $rows = array(); $flag = true; $table['cols'] = array( array('label' => 'equipamento', 'type' => 'string'), array('label' => 'total', 'type' => 'number') ); while($row = mysql_fetch_assoc($query)) { $temp = array(); $temp[] = array('v' => (string) $row['equipamento']); $temp[] = array('v' => (int) $row['total']); $rows[] = array('c' => $temp); } $table['rows'] = $rows; $jsonTable = json_encode($table); echo $jsonTable; ?> E... Electronic obrigado pela paciência. Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Dezembro 28, 2014 Acabei de testar aqui e funcionou, vi que o código que postei antes tem uns erros mesmo usei mysqli se vc outro tipo de conexão, terá que adaptar 1- troquei while($r = mysql_fetch_assoc($sth)){ POR while ($r = mysqli_fetch_array($sth)) { //para poder acessar com indies numéricos $r[0] $r[1] 2- aqui faltou vírgula, e onde é numero não vai aspas troquei echo "['$r[0]', '$r[1]']"; POR echo "['$r[0]', $r[1]],"; ficou assim <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", {packages: ["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = google.visualization.arrayToDataTable([ ['Equipamentos', 'Total'], <?php $link = mysqli_connect('localhost', 'root', '', 'teste'); $sth = mysqli_query($link, "select * from nomes"); while ($r = mysqli_fetch_array($sth)) { echo "['$r[1]', $r[2]],\n"; } ?> ]); var options = { title: 'My Daily Activities', is3D: true, }; var chart = new google.visualization.PieChart(document.getElementById('wd')); chart.draw(data, options); } </script> Companheiro acredito que seu código tenha algum erro de sintax, Porque, o código a seguir é do meu projeto original aqule chart lá de cima. segue o js dele. Eu fiz como está na documentação: compare o que está com o seu, o seu esta diferente https://google-developers.appspot.com/chart/interactive/docs/gallery/piechart#3D Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 28, 2014 Companheiro na visualização deu muito certo, porém na análise é completamente erronia ele ao invés de contabilizar o total de equipamento ele retorna o ID e assim vira uma escala do ID 123451 até 123458 Ele não retorna estes resultados: Total Religadora = 42Total TC = 39Total TP = 94Total TPC = 22Total TRAFO = 20 Tentei fazer alguns ajustes e nada adiantou a legenda aparece os SITEs e contabiliza o ID, só não tentei trocar a primary key, não sei se seria uma boa idéia. Outra observação utilizei outros tipos de gráficos de barra, caluna e linha e a legenda que aparece é só o total e em escala não aparece EQUIPAMENTO e nem no efeito onmouseover do gráfico. Mas companheiro vou tentando por aqui, embora agora não estou em casa. Tá valendo grato de +. Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Dezembro 28, 2014 Veja os números dentro das chaves são o índice da tabela echo "['$r[1]', $r[2]],\n"; se esta vindo o ID então selecionou o ID e pegou o índice dele veja seu select e altere você disse que ta usando count(). Por que? você não queria agrupar e somar? "SELECT equipamento, SUM(total) FROM progarmacao GROUP BY equipamento"; aparece só total pq foi assim que vc definiu nessa parte ........count(*) as total Compartilhar este post Link para o post Compartilhar em outros sites
lui hurk 0 Denunciar post Postado Dezembro 28, 2014 O COUNT deixamos de lado.... Voltando ao foco, companheiro tem razão é que num primeiro momento fiz a inversão dos índices e por isso o ato erronio, Bem dando continuidade, onde eu ponho o "SELECT equipamento, SUM(total) FROM progarmacao GROUP BY equipamento" pra dar certo, por gentileza. Compartilhar este post Link para o post Compartilhar em outros sites
Electronic 124 Denunciar post Postado Dezembro 28, 2014 Bem dando continuidade, onde eu ponho o "SELECT equipamento, SUM(total) FROM progarmacao GROUP BY equipamento" pra dar certo, por gentileza. No exemplo que dei no post #16 ficou junto o com o JS coloque onde vc achar melhor. Compartilhar este post Link para o post Compartilhar em outros sites