Ir para conteúdo

POWERED BY:

Arquivado

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

manrique

[Resolvido] Array em js

Recommended Posts

Prezados,

Boa Tarde!

 

Tenho um codigo em js que adiciona uma nova linha em uma tabela html. Porém preciso de pegar os campos e salvar em um banco de dados, só que sempre que gera uma nova linha as variáveis ficam com o ultimo valor. Por exemplo:

São geradas 3 linhas = P1, P2, P3. Porém quando vou gravar no banco de dados, apenas a linha P3 que está sendo gravada.

 

Disseram-me para criar um array nessa função e ir armazenando as variáveis para que depois eu possa mexer com elas no php.

 

Alguma ajuda?

Obrigado!

 

<script type="text/javascript">

      var conta=1;

      function novaLinha(){
        conta++;

var parte1 = "<tr><td width='103'><input name='pp_peri' type='text' id='pp_inicio' size='10' maxlength='5' value='P" + conta + "' /></td>";
var parte2 = " <td width='135' align='center'><input name='pp_inicio' type='text' id='pp_inicio' tabindex='4' size='15' maxlength='5' \/><\/td>";
var parte3 = "<td width='120' align='center'><input name='pp_fim' type='text' id='pp_fim' tabindex='5' size='15' maxlength='5' \/><\/td>";
var parte4 = "<td width='730' align='center'> <select name='pp_motivo' id='pp_motivo' tabindex='6' > <option value='0' selected='selected'>A caixa cresce de acordo com que o texto cresce<\/option> <option value='1'>Motivo 1<\/option> <option value='2'>Motivo 2<\/option> <option value='3'>Motivo 3<\/option> <option value='4'>Motivo 4<\/option> <option value='5'>Motivo 5<\/option> <\/select> <\/td>";
var parte5 = "<td><input type='button' value='Inserir Linha' onClick='javascript:novaLinha()'><\/input><\/td>";
var parte6 = "<td  id='tabela_linha_" + conta + "'><input type='button' value='remover' onClick=\"javascript:removeLinha('tabela_linha_"+conta+"')\"></input>";

       document.getElementById("tabela_produto").innerHTML += parte1 + parte2 + parte3 + parte4 + parte5 + parte6;
       document.getElementById("tabela_produto").innerHTML += "</td></tr>";
var array_pp = new Array(pp_peri, pp_inicio, pp_fim, pp_motivo);

       }
</script>

 

Igor Manrique

igorcmanrique@gmail.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pq você nao usa createElement e appendChild para criar as TR e TD?

 

acho que seria mais facil.

 

quanto ao vetor pensei no seguinte.

 

declare o vetor fora da funcao.

da forma que fez lah dentro.

 

var array_pp = new Array(pp_peri, pp_inicio, pp_fim, pp_motivo); 

 

e faça de cada posicao um outro vetor contendo os valors de acordo com o conta

array_pp['pp_peri'][conta] = 'o conteudo da tabela'

 

nao sei se vai resolver.. mto menos ajudar.... mas fica a dica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, achei mais fácil fazer daquela maneira (na verdade foi a unica que consegui fazer funcionar da forma que eu queria...)

 

Então, seguinte o código mesmo é em php que eu manjo um pouco mais, só que fiz essa função para acrescentar a linha para que ficasse mais dinâmico para o usuário. Estou criando um sistema interna para minha emrpesa e foi me pedido mais facilidade para que o usuario não tivesse tantas dúvidas. Então fiz assim, só que não lembrei que teria que gravar em um BD, e agora tô sofrendo com isso. Então me disseram para fazer o array para que fosse agrupando as variáveis para que eu pudesse utiliza-las posteriormente. Então pensei que seria mais prático criar o array dentro da função que assim que fosse criada a nova linha ele já armazenasse as variáveis, entendeu?

 

Teria como fazer isso?

Porque quando clico aqui para inserir uma nova linha ele ta apagando o que já havia digitado, e não está gravando no array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então pensei que seria mais prático criar o array dentro da função que assim que fosse criada a nova linha ele já armazenasse as variáveis, entendeu?

 

Teria como fazer isso?

Porque quando clico aqui para inserir uma nova linha ele ta apagando o que já havia digitado, e não está gravando no array.

 

pois entao.

o fato de você criar o array sempre dentro da funcao, toda vez que você clicar e chamar a funcao, ela ira criar um novo array com o nome array_pp vazio. por isso sempre apaga os valores do array.

voce tem outra opcao. cria um hidden com o nome linhas, e vai colocando os valores nele depois você pega os valores que quiser. tem como criar um campo como vetor tbm. já fiz isso. mas infelizmente nao me lembro bem como fazer;

 

<input type='hidden' name='array_pp[]' />

 

ou você pode ir colocando os valores separados por um | ou ,

<input type='hidden' value='' id='array_pp' name='array_''/>

 

script

document.getElementById('array_pp').value += linha;

ou algo parecido.ainda nao consegui entender bem o que você deseja.

mas espero estar ajudando

 

voce olhou se aparece algum erro no console de erro?

pq no meu teste aqui aparece um erro de execucao nessa linha

 

document.getElementById("tabela_produto").innerHTML += parte1 + parte2 + parte3 + parte4 + parte5 + parte6; 

e eu acho que é pq a tabela nao aceita innerHTML.

por isso sugeri criar os campos via createElement.

mas pode nao ser isso tbm..

 

mudei o id para uma div teste e apareceu normal as linhas.

 

olha fiz um codigo rapidinho aki.. claro com ajuda do google.. que ja tinha a funcao quase toda pronta

<html>
   <head>
       <title>teste</title> 

       <script type="text/javascript"> 

           totals =0;    
           array_pp = new Array();
           conta_vetor=0;
           function adiciona(){     
               totals++;         
               tbl = document.getElementById("tabela_produto");

               var novaLinha = tbl.insertRow(-1);         
               var novaCelula;  

               if(totals%2==0) cl = "#F5E9EC";        
               else cl = "#FBF6F7";  

               novaCelula = novaLinha.insertCell(0);          
               novaCelula.style.backgroundColor = cl          
               novaCelula.innerHTML = "<input type='checkbox' name='chkt' />";          

               novaCelula = novaLinha.insertCell(1);        
               novaCelula.align = "left";         
               novaCelula.style.backgroundColor = cl;        
               novaCelula.innerHTML = "  Linha"+totals+""; 

               novaCelula = novaLinha.insertCell(2);         
               novaCelula.align = "left";         
               novaCelula.style.backgroundColor = cl;        
               novaCelula.innerHTML = " ops3";     

               novaCelula = novaLinha.insertCell(3);         
               novaCelula.align = "left";         
               novaCelula.style.backgroundColor =cl;        
               novaCelula.innerHTML = " ops4";    

               novaCelula = novaLinha.insertCell(4);         
               novaCelula.align = "left";         
               novaCelula.style.backgroundColor =cl;        
               novaCelula.innerHTML = " ops4";    

               array_pp[conta_vetor]= totals;
               alert(array_pp);
               conta_vetor++;
           } 

       </script>


   </head>
   <body>
       <table id="tabela_produto" border='1'>
           <tr>
               <td>Teste</td>
               <td>Teste</td>
               <td>Teste</td>
               <td>Teste</td>
               <td>Teste</td>
           </tr>
       </table>

       <div id="div"></div>
       <button type="button" onclick="adiciona()">Acrescentar</button>

   </body>

</html>

cria um arquivo html de teste ai e v se eh isso que você precisa mais ou menos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo os testes.

 

Está dando certo o resultado.

Agora só mais uma coizinha para que fique tudo certo:

Como que eu faço para imprimir o conteúdo do array?

 

Outra coisa, como que faço para dar um id para uma linha apenas?

Porque utilizo de uma função para remover que vai pelo id da linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou fazendo os testes.

 

Está dando certo o resultado.

Agora só mais uma coizinha para que fique tudo certo:

Como que eu faço para imprimir o conteúdo do array?

 

Outra coisa, como que faço para dar um id para uma linha apenas?

Porque utilizo de uma função para remover que vai pelo id da linha.

id da linha

nova_linha.setAttribute("id","aqui_entra_o_id_que_quiser");

ai você cria o id da forma que quiser.

 

o que você quis dizer com imprimir o Array?

se for apenas para teste, voce pode dar um alert pra saber se tah pegano os valores certos

alert(array_pp);

 

agora se você precisar jogar os valores em algum lugar, talvez você precise tratar esses falores com um foreach

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que você quis dizer com imprimir o Array?

se for apenas para teste, voce pode dar um alert pra saber se tah pegano os valores certos

alert(array_pp);

 

agora se você precisar jogar os valores em algum lugar, talvez você precise tratar esses falores com um foreach

 

Seria possível aproveitar o array em php?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria possível aproveitar o array em php?

bom.. para interagir entre javascript e php dessa maneira pesquise sobre ajax.

agora se você simplesmente pretende mandar os valores para outras paginas, use um hidden no corpo da pagina e instancie o valor nele..

 

assim qdo você submeter o formulario ele ira levar a informacao via $_GET ou $_POST

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, valeu mesmo...

 

Você me ajudou bastante...

Estou procurando como fazer a interação entre php e javascript, mas não é a intenção deste tópico, então aproveitei outro e estou estudando o que acho pra ver o que consigo fazer...

 

Obrigado mesmo, sucesso a ti!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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