Dee 0 Denunciar post Postado Julho 14, 2009 Galera. Não sei muito Array(), mas estou aprendendo. Me confrontei com uma situação na qual tive que recorrer a ele. Estou fazendo gráficos dinâmicos, que se atualizam de acordo com os dados no banco de dados. Eu preciso do seguinte: $consulta = "select distinct(funcionarios.funcionario), atualizacao.funcionario_codigo, atualizacao.versao, count(atualizacao.versao) as nversao from atualizacao inner join funcionarios on atualizacao.funcionario_codigo = funcionarios.funcionario_codigo where atualizacao.versao = $numero_versao group by atualizacao.funcionario_codigo,funcionarios.funcionario,atualizacao.versao order by funcionarios.funcionario asc"; $exe_consulta = mssql_query($consulta); $i = 0; while ($i < $lin_consulta = mssql_num_rows($exe_consulta)) { $arr = $arr + mssql_result($exe_consulta,$i,'funcionario'); $i++; } Como eu faço para fazer com que os nomes dos funcionários entrem em uma variável para que depois eu posso jogar essa variável aqui: $plot->SetLegend(array($arr.",")); Quero que apareça os nomes nesse array. E somente está trazendo 0(zero). Como eu faço ?? Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Julho 14, 2009 $exe_consulta = mssql_query($consulta); $i = 0; $arr = array(); while ($i < $lin_consulta = mssql_num_rows($exe_consulta)) { $arr[] = $arr + mssql_result($exe_consulta,$i,'funcionario'); $i++; } Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Julho 14, 2009 Apareceu Isso Mano Fatal error: Unsupported operand types in D:\web\LocalUser\salcam\www\versao_sigla\grafico_versao_func.php on line 18 Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Julho 14, 2009 Esse sinal de + está errado. Você não mescla dois arrays operando como se fossem inteiros, e sim com array_merge() Troca aquela linha por isso: $arr[] = array_merge($arr,mssql_result($exe_consulta,$i,'funcionario'));Um dica seria não usar mysql_result() e sim mysql_fetch_assoc() É bem mais fácil a sintaxe de uso e não necessita desse $i incrementador. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Julho 14, 2009 Agora apareceu isso. Warning: array_merge() [function.array-merge]: Argument #2 is not an array in D:\web\LocalUser\salcam\www\versao_sigla\grafico_versao_func.php on line 18 E aproveitando como que seria usando o mssql_fetch_assoc ? Do mesmo modo como se usa o mssql_fecth_array ? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Julho 14, 2009 Meu código está assim: <?php //incluindo a classe phplot include 'conecta.php'; include 'phplot/phplot-5.0.4/phplot.php'; //Matriz utilizada para gerar os graficos $numero_versao = $_GET['cod']; $query = "select count(versao) as tversao from atualizacao where versao = $numero_versao"; $exe_query = mssql_query($query); $total_versao = mssql_result($exe_query,0,'tversao'); $consulta = "select distinct(funcionarios.funcionario), atualizacao.funcionario_codigo, atualizacao.versao, count(atualizacao.versao) as nversao from atualizacao inner join funcionarios on atualizacao.funcionario_codigo = funcionarios.funcionario_codigo where atualizacao.versao = $numero_versao group by atualizacao.funcionario_codigo,funcionarios.funcionario,atualizacao.versao order by funcionarios.funcionario asc"; $exe_consulta = mssql_query($consulta); $i = 0; $arr = array(); while ($i < $lin_consulta = mssql_num_rows($exe_consulta)) { $arr[] = array_merge($arr,mssql_result($exe_consulta,$i,'funcionario')); $i++; } $data = array( array($numero_versao, 40, 2, 4), ); #Instancia o objeto e setando o tamanho do grafico na tela $plot = new PHPlot(600,400); #Tipo de borda, consulte a documentacao para ver opcoes $plot->SetImageBorderType('plain'); #Tipo de grafico, nesse caso barras, existem diversos(pizza...) $plot->SetPlotType('bars'); #Tipo de dados, nesse caso texto que esta no array $plot->SetDataType('text-data'); #Setando os valores com os dados do array $plot->SetDataValues($data); #Titulo do grafico $plot->SetTitle('Percentual de Atualizações Nesta Versão'); # Legenda, nesse caso serao tres pq o array possui 3 valores que serao apresentados $plot->SetLegend(array($arr)); # Metodos utilizados para marcar labes, necessario mas nao se aplica neste ex. (manual) : $plot->SetXTickLabelPos('none'); $plot->SetXTickPos('none'); #Gera o grafico na tela $plot->DrawGraph(); ?> Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Julho 14, 2009 Como é o formato que você precisa do array? é só colocar o valor que vem do banco e o índice sequencial? Se for, pode fazer assim while ($rs = mssql_fetch_assoc($exe_consulta)) { $arr[] = $rs['funcionario']; } Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Julho 14, 2009 Nesse array eu estou trazendo Nomes(String no caso neh) mas eu preciso mostrar isso numa legenda.. que eh legenda do gráfico mas está aparecendo a palavra Array, em vez de os nomes que estou pegando nesse while, e colocando na variavel $arr entendeu como faço para mostrar os nomes aqui ? $plot->SetLegend(array($arr)); é só colocar a variavel que está dentro do while no array ? ou tem que fazer outra coisa ? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Julho 14, 2009 CONSEGUIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII! Modera RESOLVIDO! Compartilhar este post Link para o post Compartilhar em outros sites