marciarf 0 Denunciar post Postado Julho 11, 2008 gente preciso criar uma array bidimensional cujos indices sao duas variaveis $dado1[$i] e $dado2[$i] tipo: $array=($dado1[$i],$dado2[$i]); Como faço isso? Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Julho 11, 2008 $dado1 = array(1, 2); $dado2 = array(2, 3); $array = array($dado1[0], $dado2[0]); Seria isso? Compartilhar este post Link para o post Compartilhar em outros sites
andreymor 0 Denunciar post Postado Julho 11, 2008 se for isso, pode-se implementar uma montagem de array, ordenando pelo indice $i : <?php $dado1 = array(1,2); $dado2 = array(50,3); $arrayCompleta = array(); for($i = 0; $i < 2; $i++) { $arrayCompleta[$i] = array("dado1"=>$dado1[$i], "dado2"=>$dado2[$i]); } echo "<pre>"; print_r($arrayCompleta); echo "</pre>"; ?> Att., Andrey Moretti Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Julho 11, 2008 o php aceita string como indice nos arrays até mesmo caracteres multibyte são permitidos mas por questões de performance, obviamente que não é recomendável utilizar essa prática em todos os arrays. faça somente onde realmente houver necessidade. Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 11, 2008 meu código é assim: //cálculo da quantidade para jogar nos eixo y4 - estoque máximo $ver="SELECT numrecurso,data_ini_fase,data_fim_fase FROM tab_fases WHERE nomeprojeto='".$nome."' AND numrecurso=".$material." ORDER BY data_ini_fase ASC"; $query=mysql_query($ver); $numero=mysql_num_rows($query); $i=0; while($read=mysql_fetch_array($query)){ $dado_ini[$i]=$read['data_ini_fase']; $dado_fim[$i]=$read['data_fim_fase']; $sql5 = "SELECT picoestoque_fase FROM tab_fases WHERE nomeprojeto='".$nome."' AND numrecurso=".$material." AND data_ini_fase=".$dado_ini[$i]; $res6 = mysql_query($sql5,$db); $resultado = mysql_fetch_array($res6); $pico[$i]=$resultado['picoestoque_fase']; $dado_fase=array(); $dado_fase[$i] = $dado_fim[$i]; $dado_fase[$i] = $pico[$i]; print "dado_fase[$i]'[dado_fim[$i]']=".$dado_fase[$i]['dado_fim[$i]']."<br>"; $i++; } $j=0; $fase=0; while($j < $X){ if (!in_array(gmdate("w",$DATA1),$noworkingdays)){ $DATA1_t[$j]=$DATA1; if($DATA1_t[$j] <= ($dado_fase[$fase]['dado_fim'])){ $datay4[$j] = $dado_fase[$fase]['dado_fim']; //pontos da linha de estoque máximo }else{ $fase++; continue; } $j++; } $DATA1 += 86400; } Onde primeiro faço uma query no banco de dados onde estará armazenado para um determinado material, uma data de inicio de fase, uma de fim de fase e o pico de estoque para aquela fase. Posso ter n fases, e sempre terei entao o material, o inicio da fase, o final e o pico. Entao vem o while pra ler pra cada material o valor de inicio e final. Na sequencia do mesmo while faço uma query no bd para capturar o pico de estoque da fase, tambem para cada material. Entao quando $i=0, capturei um valor de inicio de fase, um de fim de fase e um de pico de estoque do material pra aquela fase . Ok, agora preciso gerar um array com esses dados: $dado_fase=array(); $dado_fase[$i] = $dado_fim[$i]; $dado_fase[$i] = $pico[$i];O que acho que deve estar errado.No outro looping o que faço é, a partir de uma data inicial que uso pra gerar um grafico, abrir o intervalo pra 30 dias, pois $X=30. Em seguida testar se o cada dia é menor ou igual ao valor armazenado no array pra dado_fim (final da primeira fase), pra gerar os pontos de uma linha [$datay4] que traçará uma linha de pico de estoque máximo pra cada fase. Se o valor da data DATA1_t é maior que a data de fim de uma fase, vou pro else e incremento o contador fase. Infelizmente, da maneira que está no código, nao tem funcionado. Necessito ajuda... o php aceita string como indice nos arrays até mesmo caracteres multibyte são permitidos mas por questões de performance, obviamente que não é recomendável utilizar essa prática em todos os arrays. faça somente onde realmente houver necessidade. Compartilhar este post Link para o post Compartilhar em outros sites
JCMPJ 0 Denunciar post Postado Julho 11, 2008 Não entendi aquele primeiro While. Porque precisa fazer a duas consultas? Podem existir duas ou mais fases com o mesmo material, do mesmo projeto, com a mesma data de inicio e somente a data final diferente? Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 11, 2008 tem razão JCMPJ Realmente posso fazer junto com a primeira consulta. Fiz e tá certo pois serao sempre as mesmas fase com o mesmo inicio e mesmo fim. É isso mesmo. Mas agora o problema continua com o array... Não entendi aquele primeiro While. Porque precisa fazer a duas consultas? Podem existir duas ou mais fases com o mesmo material, do mesmo projeto, com a mesma data de inicio e somente a data final diferente? Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 11, 2008 o array ficou assim: $dado_fase[$i]=array($dado_fim[$i],$pico[$i]);usei um foreach pra ler o array e ele está correto. o problema agora e usar o valor no if if($DATA1_t[$j] <= ($dado_fase[$fase]['dado_fim'])){ $datay4[$j] = $dado_fase[$fase]['dado_fim']; }já que dessa maneira que estou tentando fazer nao tem funcionado.Alguém sabe me dizer como ? ou seja a sintaxe para o if, para ler os valores de dado_fim dentro do array ? tem razão JCMPJ Realmente posso fazer junto com a primeira consulta. Fiz e tá certo pois serao sempre as mesmas fase com o mesmo inicio e mesmo fim. É isso mesmo. Mas agora o problema continua com o array... Não entendi aquele primeiro While. Porque precisa fazer a duas consultas? Podem existir duas ou mais fases com o mesmo material, do mesmo projeto, com a mesma data de inicio e somente a data final diferente? Compartilhar este post Link para o post Compartilhar em outros sites
JCMPJ 0 Denunciar post Postado Julho 11, 2008 Será que assim da certo? $sql = "SELECT * FROM tab_fases WHERE nomeprojeto='".$nome."' AND numrecurso=".$material." ORDER BY data_ini_fase"; $rs = mysql_query($sql); $linha = 0; $DATA1 = ?; if (mysql_num_rows($rs)) { while ($dados = mysql_fetch_assoc($rs)) { if ( !in_array(gmdate("w",$DATA1),$noworkingdays) && $DATA1 >= $dados['data_ini'] && $DATA1 <= $dados['data_fim'] && $linha < $X ) { $dados[$linha]['dataPlot'] = $DATA1; $dados[$linha]['data_ini'] = $dados['data_ini']; $dados[$linha]['data_fim'] = $dados['data_fim']; $dados[$linha]['picoFase'] = $dados['picoFase']; $dados[$linha]['material'] = $dados['material']; $linha++; }; $DATA1 += 86400; }; } É só um exemplo não ligue para o nome dos campos e o formato das datas. Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 11, 2008 cara o problema nao é a logica. esta está correta e funcionando do jeito que está, o problema é fazer um array bidimensional com os valores capturados das variáveis $dado_fim e $pico veja: elas estão dentro de um while cujo contador é o $i que representa o numero de dado_ini, dado_fim e pico que existe no bd, ou seja, o numero de fases e o pico correspondente. A questao é criar esse array com esses valores, é isso que nao estou sabendo fazer e depois acessar no while seguinte. são apenas duas coisas.. criar o array, que nao sei se crio dentro do primeiro while ou fora, se crio como sendo $dado_fase[$i] [que eu acredito que não, pq senao seria, pra 2 fases p ex, $dado_fase[0] e $dado_fase[1]], se eu crio fora como eu pego os dois valores de dado_fim e pico pra cada fase. entende? meu problema é conceitual de como criar esse array. não encontrei nada na net desse jeito.. Será que assim da certo? $sql = "SELECT * FROM tab_fases WHERE nomeprojeto='".$nome."' AND numrecurso=".$material." ORDER BY data_ini_fase"; $rs = mysql_query($sql); $linha = 0; $DATA1 = ?; if (mysql_num_rows($rs)) { while ($dados = mysql_fetch_assoc($rs)) { if ( !in_array(gmdate("w",$DATA1),$noworkingdays) && $DATA1 >= $rs['data_ini'] && $DATA1 <= $rs['data_fim'] && $linha < $X ) { $dados[$linha]['dataPlot'] = $DATA1; $dados[$linha]['data_ini'] = $dados['data_ini']; $dados[$linha]['data_fim'] = $dados['data_fim']; $dados[$linha]['picoFase'] = $dados['picoFase']; $dados[$linha]['material'] = $dados['material']; $linha++; }; $DATA1 += 86400; }; } É só um exemplo não ligue para o nome dos campos e o formato das datas. Compartilhar este post Link para o post Compartilhar em outros sites
JCMPJ 0 Denunciar post Postado Julho 11, 2008 Uai! Então não consegui entender o que você vai fazer. Porque nesse array ai em cima você tem data de inicio, data do fim, valor do pico, data corrente ... não seria apenas colocar os valores usando $dados[$i]['dataPlot'] com eixo Y ? que mais você precissa para mantar esse gráfico? Compartilhar este post Link para o post Compartilhar em outros sites
marciarf 0 Denunciar post Postado Julho 11, 2008 cara, conseguiiiiiiii muitissimo obrigada por tentar colaborar comigo, estou realmente precisando mas uma luz baixou aqui e eu consegui gerar o array e jogar os pontos da linha no grafico... muito obrigada mesmo, valeu... Uai! Então não consegui entender o que você vai fazer. Porque nesse array ai em cima você tem data de inicio, data do fim, valor do pico, data corrente ... não seria apenas colocar os valores usando $dados[$i]['dataPlot'] com eixo Y ? que mais você precissa para mantar esse gráfico? Compartilhar este post Link para o post Compartilhar em outros sites