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

Salvando inputs e gerar nova linha

20-06-2012 16:26

Prezados,
boa tarde!

Tenho um codigo .php para um programa que estou desenvolvendo na empresa onde trabalho.
<html> <head> <title>teste</title> <script type="text/javascript"> totals =1; array_pp = new Array(); function adiciona(){ totals++; tbl = document.getElementById("tabela_produto"); var novaLinha = tbl.insertRow(-1); var novaCelula; novaCelula = novaLinha.insertCell(0); novaCelula.innerHTML = "<input name='pp_peri' type='text' id='pp_peri' size='10' maxlength='5' value='P" + totals + "' />"; novaCelula = novaLinha.insertCell(1); novaCelula.align = "center"; novaCelula.innerHTML = "<input name='pp_inicio' type='text' id='pp_inicio' size='15' maxlength='5' value='' \/>"; novaCelula = novaLinha.insertCell(2); novaCelula.align = "center"; novaCelula.innerHTML = "<input name='pp_fim' type='text' id='pp_fim' size='15' maxlength='5' value='' \/>"; novaCelula = novaLinha.insertCell(3); novaCelula.align = "center"; novaCelula.innerHTML = "<select name='pp_motivo' id='pp_motivo' > <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>"; novaCelula = novaLinha.insertCell(4); novaCelula.align = "center"; novaCelula.innerHTML = "<input type='button' value='Inserir Linha' onClick='javascript:adiciona()'><\/input>"; novaCelula = novaLinha.insertCell(5); novaCelula.align = "center"; novaCelula.innerHTML = "<input type='button' value='remover' onClick='deleteRow(this.parentNode.parentNode.rowIndex)'><\/input>"; array_pp[0] += document.getElementById("pp_peri").value;; array_pp[1] += document.getElementById("pp_inicio").value;; array_pp[2] += document.getElementById("pp_fim").value;; array_pp[3] += document.getElementById("pp_motivo").value;; //alert(array_pp[0]); //alert(array_pp[1]); //alert(array_pp[2]); //alert(array_pp[3]); } function deleteRow(i){ document.getElementById('tabela_produto').deleteRow(i); totals--; } </script> </head> <body> <table id="tabela_produto" border='1'> <tr> <td width="103"><input name="pp_peri" type="text" id="pp_peri" tabindex="3" size="10" maxlength="5" value="P1" readonly="readonly" /></td> <td width="135" align="center"><input name="pp_inicio" type="text" id="pp_inicio" tabindex="4" size="15" maxlength="5" /></td> <td width="120" align="center"><input name="pp_fim" type="text" id="pp_fim" tabindex="5" size="15" maxlength="5" /></td> <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> <td><input type="button" value="Inserir Linha" onClick="javascript:adiciona()"></input></td> <td id="tabela_linha_1"><input type="button" value="remover" onClick="deleteRow(this.parentNode.parentNode.rowIndex)"></td> </table> </tr> </body> </html>

A função em js é para adicionar uma nova linha na tabela. Com podem ver estou tentando, na hora que gerar uma nova linha, salvar as variáveis da linha em um array, só que não estou conseguindo em javascript.

Poderiam me dar uma ajuda em php?

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

Salvando inputs e gerar nova linha

20-06-2012 16:31

Os names tanto do input já existente quanto dos inputs que são adicionados, tem que estar em array: campo[] campo2[]...

Ai você usa o foreach para pegar cada array, que seria cada campo distinto.
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

Salvando inputs e gerar nova linha

20-06-2012 17:08

Você está querendo dizer que o input ao invés de ser um campo apenas tem que ser um array?
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Salvando inputs e gerar nova linha

20-06-2012 17:17

Sim, é basicamente isso aqui

<form action="" method="POST"> <input type="text" name="valor[]" value="a"><input type="text" name="nome[]" value="b"> <br> <input type="text" name="valor[]" value="c"><input type="text" name="nome[]" value="d"> <br> <input type="text" name="valor[]" value="e"><input type="text" name="nome[]" value="f"> <input type="submit" name="envia"> </form> <?php if($_POST['envia']) { extract($_POST); foreach(array($valor) as $info1) foreach(array($nome) as $info2) for($i = 0; $i < count($info1); $i++) { echo $info1[$i]." e ".$info2[$i]."<br>"; } } ?>

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

Salvando inputs e gerar nova linha

21-06-2012 14:16

Cara, muito obrigado!
Salvou minha vida aqui...
Sucesso a ti!
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

Salvando inputs e gerar nova linha

21-06-2012 15:17

Cara, surgiu um pequeno problema:

if($_POST['botao']){ extract($_POST); $cod_usuario= $_POST["cod_usuario"]; $operador = $_POST["operador"]; $ob_obsi = $_POST["ob_obsi"]; foreach(array($pp_peri) as $p_peri); foreach(array($pp_inicio) as $p_inicio); foreach(array($pp_fim) as $p_fim); foreach(array($pp_motivo) as $p_motivo); foreach(array($pm_peri) as $pm_peri); foreach(array($pm_inicio) as $pm_inicio); foreach(array($pm_fim) as $pm_fim); foreach(array($pm_motivo) as $pm_motivo); foreach(array($pm_relref) as $pm_relref); for($i = 0; $i < count($p_peri); $i++) { echo $cod_usuario." --- ".$operador." --- ". $ob_obsi."<br>" ; echo $p_peri[$i]." --- ".$p_inicio[$i]." --- ".$p_fim[$i]." --- ".$p_motivo[$i]."<br>"; echo $pm_peri[$i]." --- ".$pm_inicio[$i]." --- ".$pm_fim[$i]." --- ".$pm_motivo[$i]." --- ".$pm_relref[$i]."<br>"; die; } }

Quando acrescento os "$pm_" ele pega apenas a primeira linha dos "$pp_".

Para explicar melhor:
Tenho uma função js que cria linhas de uma tabela html. Está tudo funcionando bem. Conversei contigo e consegui pegar os valores de $pp_; contudo, preciso de pegar também os valores de $pm_ e quando juntei o código para que conseguisse pegar os dois, apenas a primeira linha de cada que está sendo armazenada. Como que eu faço para que pegue todas as linhas?
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

Salvando inputs e gerar nova linha

21-06-2012 17:07

Desculpa ai a falta de atenção.
O erro é que o die; estava dentro do for e eu tenho que criar 2 for um para $pp_ outro para $pm_.

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

Salvando inputs e gerar nova linha

21-06-2012 17:29

Bom que resolveu. ;)
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

Salvando inputs e gerar nova linha

21-06-2012 21:35

CAra uma dúvida um pouco boba mas não to conseguindo:

Preciso quebar os array e salvar no bd; o código está assim:

for($i = 0; $i < count($peri); $i++) { $sql_validapp = "insert into pep(pp_data, pp_opera, pp_peri, pp_inicio, pp_fim, pp_motivo, pp_dtinc, pp_loginc) values ('$data', '$operador', '$peri', '$inicio', '$fim', '$motivo', '$data', '$cod_usuario')"; $query_pp = @mysql_query($sql_validapp); #print $sql_validapp;exit; #$num = mysql_affected_rows($query); if ($query_pp == 0){ print "<script> alert('Erro ao inserir cadastros em PEP!'); document.location.href='/shredder/relatorio2.php';</script>"; exit; } }

O que estou fazendo de 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: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Salvando inputs e gerar nova linha

21-06-2012 21:42

Você pode quebrar o array pelo índice.

<?php
$array = Array(1,2,3);
echo $array[0]; // para 1
?>

Mas depende de onde e como vem o array.
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

Salvando inputs e gerar nova linha

21-06-2012 21:53

O for que havia postado está errado?
Preciso de que seja dinamicamente porque eu não sei quantos campos o usuário irá colocar, entendeu? Então estou tentando fazer uma coisa mais dinâmica...
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Salvando inputs e gerar nova linha

21-06-2012 22:14

A lógica está certa. Como você tem vários array, você conta um deles, como você fez ai. Ai se você quer pegar cada array na mesma linha, você tem que se basear no índice, podendo até mesmo usar o $i do seu for.

<?php $array1 = Array(1,2,3); $array2 = Array(4,5,6); echo $array1[0]." ".$array2[0]; ?>

Nesse caso você poderia aproveitar $i no lugar do 0.
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

Salvando inputs e gerar nova linha

22-06-2012 13:57

Agora sim consegui terminar o programa.

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

Salvando inputs e gerar nova linha

22-06-2012 14:43

;)
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

Salvando inputs e gerar nova linha

04-07-2012 14:59

Cara seguinte, tenho um probleminha com a geração de novas linhas.

<td width="545" align="center"> <select name="pm_motivo[]" id="pm_motivo" > <?php $sql_mm = "select * from mpm;"; $query_mm = @mysql_query($sql_mm) or die("Erro na consulta"); $num_mm = @mysql_num_rows($query_mm); if($num_mm == 0){ $consulta = false; $msg = "<script> alert('Nenhum registro encontrado.'); document.location.href='./'</script>;"; } else { unset ($msg); $consulta = true; } if (isset($msg)){ print $msg; } ?> <option value="0" selected="selected">Motivos da manutenção</option> <?php while($linha_mm = mysql_fetch_array($query_mm)) { ?> <option value="<?php print $linha_mm["MM_COD"]; ?>" > <?php print $linha_mm["MM_DESC"]; ?> </option> <?php }# fim do while ?> </select> </td>

Como colocarei isso dentro do javascript para que gere uma nova linha?

O meu problema está nesta parte:

<?php while($linha_mm = mysql_fetch_array($query_mm)) { ?> <option value="<?php print $linha_mm["MM_COD"]; ?>" > <?php print $linha_mm["MM_DESC"]; ?> </option> <?php }# fim do while ?>

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

Salvando inputs e gerar nova linha

04-07-2012 15:05

No caso você está listando options na consulta. Quer adicionar novos options?
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

Salvando inputs e gerar nova linha

04-07-2012 17:02

É porque eu preencho os opitons com um resultado de uma consulta no banco de dados. E para preencher com todos os campos(que eu usarei) utilizo um while, como no exemplo, então tenho que fazer isso caso inclua novas linhas com a função js de gerar nova linha.
Entedeu?
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Salvando inputs e gerar nova linha

04-07-2012 17:05

Não entendi muito bem. A geração de novas linhas é baseada em input text. Não entendi a relação com os options.
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

Salvando inputs e gerar nova linha

04-07-2012 19:01

A geração de novas linhas é feita por uma função javascript. Quando clico em um botão ele pega a função e adiciona mais uma linha para mim.

totals2 =1; function adiciona2(){ totals2++; tbl = document.getElementById("tabela2_produto"); var novaLinha = tbl.insertRow(-1); var novaCelula; novaCelula = novaLinha.insertCell(0); novaCelula.align = "center"; novaCelula.width = "118"; novaCelula.innerHTML = "<input name='pm_peri[]' type='text' id='pm_peri' size='10' maxlength='5' readonly='readonly' value='P" + totals2 + "' />"; novaCelula = novaLinha.insertCell(1); novaCelula.align = "center"; novaCelula.width = "170"; novaCelula.innerHTML = "<input name='pm_inicio[]' type='text' id='pm_inicio' size='15' maxlength='5' \/>"; novaCelula = novaLinha.insertCell(2); novaCelula.align = "center"; novaCelula.width = "175"; novaCelula.innerHTML = "<input name='pm_fim[]' type='text' id='pm_fim' size='15' maxlength='5' \/>"; novaCelula = novaLinha.insertCell(3); novaCelula.align = "center"; novaCelula.width = "545"; novaCelula.innerHTML = "<select name='pm_motivo[]' id='pm_motivo' > <option value='0' selected='selected'>Motivos da Manutenção<\/option>"; novaCelula = novaLinha.insertCell(4); novaCelula.align = "center"; novaCelula.width = "150"; novaCelula.innerHTML = "<input name='pm_relref[]' type='text' id='pm_relref' size='15' maxlength='8' \/>"; novaCelula = novaLinha.insertCell(5); novaCelula.align = "center"; novaCelula.width = "52"; novaCelula.innerHTML = "<input type='button' value='Inserir Linha' onClick='javascript:adiciona2()'><\/input>"; novaCelula = novaLinha.insertCell(6); novaCelula.align = "center"; novaCelula.width = "64"; novaCelula.innerHTML = "<input type='button' value='Remover' onClick='deleteRow2(this.parentNode.parentNode.rowIndex)'><\/input>"; }

na seguinte linha é aonde deve ficar o select que será gerado por um while
novaCelula.innerHTML = "<select name='pm_motivo[]' id='pm_motivo' > <option value='0' selected='selected'>Motivos da Manutenção<\/option>";

Segue o while que gera o select:

<?php $sql_mm = "select * from mpm;"; $query_mm = @mysql_query($sql_mm) or die("Erro na consulta"); $num_mm = @mysql_num_rows($query_mm); if($num_mm == 0){ $consulta = false; $msg = "<script> alert('Nenhum registro encontrado.'); document.location.href='./'</script>;"; } else { unset ($msg); $consulta = true; } if (isset($msg)){ print $msg; } ?> <option value="0" selected="selected">Motivos da manutenção</option> <?php while($linha_mm = mysql_fetch_array($query_mm)) { ?> <option value="<?php print $linha_mm["MM_COD"]; ?>" > <?php print $linha_mm["MM_DESC"]; ?> </option> <?php }# fim do while ?>


Como colocar que esse 'while' gere as linhas dentro da função java script????
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Salvando inputs e gerar nova linha

04-07-2012 19:12

Eu montei um exemplo usando o for substituindo o while.
Esse código vai gerar uma linha do JavaScript, com os dados capturado da consulta.
A linha chave do script é essa

$select.= "<option value='$i'>$i</option>";

Ela vai substituir essa linha sua

<option value="<?php print $linha_mm["MM_COD"]; ?>" > <?php print $linha_mm["MM_DESC"]; ?> </option>


<?php $select = "<select name='pm_motivo[]' id='pm_motivo' ><option value='0' selected='selected'>Motivos da Manutenção</option>"; for($i = 0; $i < 3; $i++) { $select.= "<option value='$i'>$i</option>"; } $select.= "</select>"; echo "novaCelula.innerHTML = \"$select\""; ?>

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

Salvando inputs e gerar nova linha

04-07-2012 20:10

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

Salvando inputs e gerar nova linha

04-07-2012 20:22

Você tem o JavaScript, e tem o trecho no código onde entra a criação do select. Pelo que entendi, você quer adicionar o select com as options vinda do bd.

Esse exemplo vai ser colocado exatamente no JS no trecho que o select deve ser criado. Quando a página carregar, vai ser gerado ali o select.

Pelo que entendi no seu código, seu while deve ficar assim

$select = "<select name='pm_motivo[]' id='pm_motivo' ><option value='0' selected='selected'>Motivos da Manutenção</option>"; while($linha_mm = mysql_fetch_array($query_mm)) { extract($linha_mm); $select.= "<option value='$MM_COD'>$MM_DESC</option>"; } $select.= "</select>"; echo "novaCelula.innerHTML = \"$select\"";

Esse código ai vai criar primeiro uma variável PHP e armazenar o <select....
Depois, vai armazenar na mesma variável as options gerada no while.
No final, vai jogar o código direto no script, através desse echo que coloquei ai.
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

Salvando inputs e gerar nova linha

05-07-2012 08:10


$select.= "<option value='$MM_COD'>$MM_DESC</option>";

O que significam essas variáveis:
$MM_DESC
$MM_COD
?
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

Salvando inputs e gerar nova linha

05-07-2012 10:30

Cara esquece essa pergunta, agora que fui perceber quej já estava no meu código...
:tmi: |-) :geek:
0
Bons tempos quando os homens eram homens e escreviam seus próprios "device drivers".
Linus Torvalds
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Salvando inputs e gerar nova linha

05-07-2012 10:53

;)
0
A melhor hospedagem para o seu site HostGator!

Quem está online

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