Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

14-07-2012 10:41

Prezados, bom dia!
Seguinte, tenho um array que veio do php, porém não consigo preenche-lo, pois ele não é ta~so simples assim:

var myData = new Array(['string', inteiro1, inteiro2]);

É esta a forma com que devo preenche-lo, senão não funciona. O array é para criação de gráficos (estou utilizando a ferramenta JS Charts).

Segue a forma como preenchi o array em php e como passei ele pro JS:

if (isset ($consulta) && $consulta == true) {             $myData="";             while($linha_gra = mysql_fetch_array($query_gra)){                 $myData .= $linha_gra["FP_FATDIA"]."|".$linha_gra["FP_PRODU"]."|";             }                                       $myData = explode("|", $myData);             $myDataAux = array_pop($myData);                         $myDataJS = implode("|", $myData);         }     } ?> <div id="chartcontainer">Aguardando dados para gerar gráfico</div>     <script type="text/javascript">         var myData = "<?php echo $myDataJS; ?>";         var diaJSs = "<?php echo $diaJS;?>";         var mes = "<?php echo $mes;?>";                  diaJSs = diaJS.split("|");         for(var z=0; z<diaJSs.length; z++) { diaJSs[z] = +diaJSs[z]; }                  myData = myData.split("|");         for(var i=0; i<myData.length; i++) {              myData[i] = +myData[diaJSs[i]+'-'+mes, myData[i], myData[i++]];          }

MOVIDO PARA PHP
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

14-07-2012 10:58

Montei um exemplo e comentei, só dá uma estudada nele para adaptar para seu caso.

<?php $inicio = "var myData = new Array([ "; // inicio do echo $final = " ]);"; // fim do echo $imp = Array(); // array do for $nova = Array(); // array do implode $imp[] = "abc"; // exemplo de string $imp[] = "def"; // exemplo de string // for que simula o while da consulta junto com o $imp acima for($i = 0; $i < 3; $i++) {  $imp[] = $i; } // aqui é verificado se o valor do for é inteiro ou não // se não for inteiro, adiciona no "" foreach($imp AS $n) { !is_int($n) ? $nova[] = "\"$n\"" : $nova[] = $n; } // juntando os valores para o echo $junta = implode(",", $nova); // echo que soma o inicio, implode e final  echo $inicio.$junta.$final; ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

17-07-2012 11:27

Cara, usando sua lógica, ficou assim o meu:

<?php         if (isset ($_POST["botao"])) {         $data = $_POST["data"];         $data_ins = explode('/', $data);         list ($dia1, $mes, $ano) = $data_ins;         $data2 = "$ano-$mes-$dia1";                  $data3 = $_POST["data3"];         $data_ins3 = explode('/', $data3);         list ($dia, $mes, $ano) = $data_ins3;         $data4 = "$ano-$mes-$dia";                           $dia1 = (int)$dia1;         $dia = (int)$dia;          $diaAux = (int)"";         while($dia1 <= $dia){             $diaAux .= $dia1++."|";         }         $diaAux = explode("|", $diaAux);         $diaAux2 = array_pop($diaAux);         $diaJS = implode("|", $diaAux);                  switch ($mes) {             case 01:    $mes = "Janeiro";     break;             case 02:    $mes = "Fevereiro";   break;             case 03:    $mes = "Março";       break;             case 04:    $mes = "Abril";       break;             case 05:    $mes = "Maio";        break;             case 06:    $mes = "Junho";       break;             case 07:    $mes = "Julho";       break;             case 08:    $mes = "Agosto";      break;             case 09:    $mes = "Setembro";    break;             case 10:    $mes = "Outubro";     break;             case 11:    $mes = "Novembro";    break;             case 12:    $mes = "Dezembro";    break;         }         require_once("../dao/con_gra.php");         $arrayJS = Array(); #criação do array geral         if (isset ($consulta) && $consulta == true) {             $fatdia="";             $produ ="";             while($linha_gra = mysql_fetch_array($query_gra)){                 $fatdia .= $linha_gra["FP_FATDIA"]."|";                 $produ .= $linha_gra["FP_PRODU"]."|";             }                                       $produ = explode("|", $produ);             $produAux = array_pop($produ);                         #$produJS = implode("|", $produ);                          $fatdia = explode("|", $fatdia);             $fatdiaAux = array_pop($fatdia);                         #$fatdiaJS = implode("|", $fatdia);             $i=0;             for($i == $dia1; $i <count($diaAux); $i++) {                 $string[$i] = $diaAux[$i]."-".$mes;             }                          foreach($string AS $n) {                 !is_int($n) ? $nova[] = "\"$n\"" : $nova[] = $n;             }                          $j=0;             for($j==0; $j<count($string); $j++){                 $arrayJS[$j] = "\"$string[$j]\"".",".$fatdia[$j].",".$produ[$j];             }             $arrayFim = implode("|", $arrayJS);         }     } ?>

Quando passei para JavaScript fiz assim:

var myDataAux = "<?php echo $arrayFim; ?>"; var myData = myDataAux.split("|");

Só que quando sou um "alert" ele não me mostra nada. o que estou fazendo errado?
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

17-07-2012 13:31

Supondo que

$arrayFim = implode("|", $arrayJS);

Seja a junção final.

Você tem que colocar o echo antes do fechamento do if do POST.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

17-07-2012 14:46

Cara fiz assim:

if (isset ($_POST["botao"])) {      //um pouco de código      if (isset ($consulta) && $consulta == true) {            //mais um pouco de código           $arrayFim = implode("|", $arrayJS); ?> <div id="chartcontainer">Aguardando dados para gerar gráfico</div>     <script type="text/javascript">         var myDataAux = "<?php echo $arrayFim; ?>";         var myData = myDataAux.split("|");                  //mais um ouco de cod javascript              </script> <?php         }     } ?>   </body> </html>

Mas mesmo assim ele ainda não me mostra nada, nem botando um alert no início do javascript, tipo alert("entrei no javascript");

Nem sei o que faço mais... :swear:
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

17-07-2012 15:50

O código que postei sendo feito correto, vai retornar uns valores assim

var myData = new Array(['valor1', valor2]);

Isso escrito, ou seja, já vai estar executando o myData usado no JavaScript, então não é preciso fazer isso

var myDataAux = "<?php echo $arrayFim; ?>";

E sim isso

<?php echo $arrayFim; ?>

O problema é que seu caso é mais complexo, tem diversos valores que vem do post e de outros lugares. Você tem que filtrar seu código possível primeiro, testar com os valores básicos para funcionar igual o exemplo que deixei, depois adicionar seus outros valores.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

17-07-2012 16:12

Web, foi mal pelo smile, é porque tivemos um problema na empresa e nem durmi essa noite, fiquei virado aqui pra fazer tudo funcionar...

Seguinte, eu consegui colocar os dados da forma que quero, dando um print_r($arrayJS) ele sai assim:

Array ( [0] => "03-Julho",24.45,122.00 [1] => "4-Julho",24.00,122.00 [2] => "5-Julho",75.46,70.00 [3] => "6-Julho",75.36,135.00 )

E o echo em $arrayFim sai assim:

"03-Julho",24.45,122.00|"4-Julho",24.00,122.00|"5-Julho",75.46,70.00|"6-Julho",75.36,135.00 ...

É exatamente dessa forma que fique os dados, ou seja, está dando tudo certo... Meu problema está apenas em passar os dados de php para JavaScript, aonde ele trava não sei porque, não dando nem um alert("estou aqui!"); ele faz...

Se concluir isso, basicamente termino meu sistema de pouco mais de 1 mês de trabalho em PHP :rock: ... Mas ainda falta esse pequeno detalhe :@ ...
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

17-07-2012 16:33

Esse seu echo está saindo sem aquelas variáveis que criei no exemplo que mandei.

$inicio = "var myData = new Array([ "; // inicio do echo $final = " ]);"; // fim do echo 

Com elas você vai ter escrito no código o myData, que vai ser o array do JavaScript criado pelo PHP.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

17-07-2012 16:43

O probelma é que o meu "$junta" é um array, e se eu tentar colocar

$inicio.$arrayJS.$final

me dá um notice : Array to string conversion...

$j=0;             for($j==0; $j<count($string); $j++){                 $arrayJS[$j] = "\"$string[$j]\"".", ".$fatdia[$j].", ".$produ[$j];             } 

0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

17-07-2012 17:43

$arrayJS[$j] deve ser um array mesmo. Só que você tem que dar um implode para ele virar string. Porque o array precisa ser lido como texto para o echo.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

18-07-2012 07:54

Mas depois, como vou fazer em JS para que ele seja lido ocmo um array mesmo?
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

18-07-2012 08:04

Desculpa era pra escrever mais no mesmo e nem precebi que apertei em "Enviar"(deve ser o sono)...

Porque tipo, no meu caso o $arrayJS seria o $junta naquele exemplo que você me mandou, certo?
Mas eu percebi que não é necessário colocar o $inicio e o $final.
Pois o corpo do meu array é formado apenas por $arrayJS, exatamente da forma como quero!

A única dificuldade está na passagem de $arrayJS (no caso $arrayFim, pois ele tem o implode ("|") ) para JS, pois ele está travando o meu código quando insiro a linha:

var myDataAux = "<?php echo $arrayFim; ?>";

Percebi que quando faço isso os números acabam sendo convertidos para string pois estão dentro de aspas duplas. O que estou pensando, porém ainda não fiz:

Fazer o laço for dentro do JavaScript, passando os inteiros separados da string.

Farei o teste e posto o resultado!
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

18-07-2012 08:44

O $inicio e $final seria no caso de não fazer isso

var myDataAux = "<?php echo $arrayFim; ?>";

Esse treco ai em negrito seria o $inicio e $final, o resultado, iria aparecer pelo echo, que ao ser lido o documento, iria mostrar o texto do echo no local exato onde a variável js apareça.

Já o número com string, é definido aqui

!is_int($n) ? $nova[] = "\"$n\"" : $nova[] = $n; 

Se o valor do array começa com número, ai vai ter que reformular outra linha para definir o is_int().
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

18-07-2012 09:57

Então web eu fiz o seguinte:

<script type="text/javascript">                 var fatdia = "<?php echo $fatdiaJS; ?>";                 var produ  = "<?php echo $produJS;  ?>";                 var string = "<?php echo $stringJS; ?>";                                 var stringAux  = string.split("|");                                 var myArrayAux = fatdia.split("|");                 for(var i=0; i<myArrayAux.length; i++) { myArrayAux[i] = +parseFloat(myArrayAux[i]); }                                 var myArrayDi = produ.split("|");                 for(var z=0; z<myArrayDi.length; z++) { myArrayDi[z] = +parseFloat(myArrayDi[z]); }                                 var myData = new Array();                 for(var j=0; j<stringAux.length; j++){                         myData[j] = +stringAux[j]+","+myArrayAux[j]+","+myArrayDi[j];                 } </script>

O único problema agora é que ele não está reconhecendo os números (fatdia e produ) como floats, só preciso fazer a conversão para testar...
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

18-07-2012 16:37

Acho que essa sua dúvida é a mesma do outro post que fez em JS. Se for continuamos lá.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

18-07-2012 16:42

É sim... Descobri que o problema agora é que em pensei que estivesse passando os numeros e depois fui ver que ainda estao string...
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

25-07-2012 15:29

Prezados, boa tarde!

Estou tentando preencher um array dinamicamente, sendo que cada posição dele terá 3 posições... um pouquinho complicado de se entender assim, então a estrutura dele tem que ser assim:

Array( [ ArrayUm(3) ] , [ ArrayDois(3) ], ...);

só que não pode ser de qualquer forma, exemplificando:

ArrayUm ('stringJS', numeroUm, numeroDois);
ArrayDois ('stringJS', numeroUm, numeroDois);

Entenderam?
Estou um pouco atrapalhado em como fazer isso usando um "for" ou um "while"...
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

25-07-2012 16:01

Esse array parece Multidimensional http://webcheatsheet.com/php/multidimen ... arrays.php
Dei uma olhada também no manual do PHPLot, e achei esse artigo
http://www.phplot.com/phplotdocs/conc-datatypes.html
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 117
Nome: Igor
Sexo: Masculino
Localização: Goiânia

Preenchendo array JS dinamicamente

28-07-2012 09:45

Cara, valeu por toda sua ajuda, consegui terminar o meu projeto e já está nos útlimos toques de layout... \o/... comecei um blog e coloquei o seu fórum como opção para a galera acessar... Ainda só fiz 2 postagens então o blog é pequeno, mas pretendo fazer ele crescer e o seu fórum já está como referência... valeuzasso cara, meu primeiro projeto quase comercial... uahsuhasuhauhs :rock: :rofl:
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17676
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Preenchendo array JS dinamicamente

28-07-2012 10:37

Boa. Quando puder divulga seu blog aqui no fórum. ;)
0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado