Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, boa tarde!
Postei aqui ontem sobre um erro e rapidamente os colegas me deram a solução. Agora venho recorrer a vocês por outro motivo: tenho um formulário (em papel) com uma parte fixa de 8 campos. Já estou conseguindo digitar esses campos e armazenar no banco tranquilo. O problema é a segunda parte do formulário, que é uma tabela que pode ter 1 ou n linhas.
Fiz para isso duas tabelas relacionadas, por um código da primeira parte do formulário, mas agora estou tendo dificuldades para adicionar os outros campos.
Preciso que, depois de incluir a primeira pagina, salvar e ter o código gerado, ele me leve para uma pagina com estas informações e me de a possibilidade de inserir os outros campos (que são 5), quantas vezes for preciso, relacionados ao primeiro formulário.
Alguém teria uma luz?
Recorro aos amigos por ser novo em programação php...
Desde já, obrigado!
Isso, seria mais ou menos isso. Na primeira página, teria os campos "profissional, data, codigo setor, codigo unidade, referencia, area..." e após salvar, será gerado um código de 6 dígitos.
Na página 2, eu queria que aparecesse o código gerado e os dados que foram preenchidos na pagina 1, mais os campos "numero, servico, estudos, memória, custo", que pode ser preenchido mais de uma vez para os dados da pagina 1.
A estrutura do banco (e até pode-se dizer o formulário) é mais ou menos assim:
/applications/core/interface/imageproxy/imageproxy.php?img=http://www.grupofgx.com.br/images/banco.jpg&key=21036e3d5ab35447bd47bb1a04e43f0d1012fc2128e49faa0a2f6ff2ee19f89f" alt="banco.jpg" />
Uma solução simples seria:
1º Quando finalizar o cadastro da primeira pagina(tabela1 ) use uma função header para redirecionar para a segunda pagina(tabela2) passando o codigo gerado do profissional através da URL.
Ex.:
<?php
header('Location: [http://seusistema.com.br/tabela2.php?id=$codigodoprofissional'](http://seusistema.com.br/tabela2.php?id=%24codigodoprofissional));
?>
Como não tem a necessidade de cadastrar o mesmo profissional sempre crie uma pagina para buscar esses profissionais e coloque um botao(link) para redirecionar o usuario para a pagina 2 caso queira cadastrar novos registros na (tabela2) usando como referência o codigo gerado na tabela1.
<a href="pagina2.php?id=$codigodoprofissional">Criar Novo Registro</a>
2º Na segunda pagina(tabela 2) você pega através do método GET a váriavel código profissional e realiza a busca dos registros cadastrados ou insere novos registros na tabela 2 usando o codigo gerado na tabela1 para relacionar as duas tabelas.
//Recupera através do metodo GET o codigo do profissional passado pela URL
$id_profissional = $_GET['id'];
//Realiza a busca dos registros já criados na tabela 2
$sql_reg = 'SELECT * FROM tabela2 WHERE codigogeradoauto = '.$id_profissional.'';
$sql_reg_exec = mysql_query($sql_reg)or die(mysql_error());
//Cria um loop para imprimir os resultados numa tabela html por exemplo;
while($r=mysql_fetch_array($sql_reg_exec)){
echo $r['numero'];
echo $r['servico'];
echo $r['estudo'];
echo $r['memoria'];
}
//Para cadastrar novos registros crie o formulario e insira no banco de dados usando o codigo do profissional gerado na tabela 1 como referência
INSERT INTO tabela2 (codigo, dado1, dado2) VALUES ('.$id_profissional.', 'valor1', 'valor2');
franthesco a solução é simples mas tenta ver se te ajuda..
Vmolina, obrigado pela ajuda! Consegui resolver aqui usando sessions para mostrar os dados digitados na parte 1, já que o volume de formulários e variação de dados e profissionais vai ser grande. Também já estou conseguindo incluir os dados da página 2 no banco, relacionando com a tabela 1.
Queria agora, se possível, uma forma de ele ir "mostrando" a medida que eu salvo, as linhas que eu já incluí na tabela 2, relacionadas ao código que estou mostrando "tabela 1".
Tentei fazer assim, mas nao deu:
<?php
//conectando com o banco de dados
require_once("include/conexao.php");
// PEGAR OS DADOS DIGITADOS E INSERIR NO BANCO
$cod_form = $_SESSION['cod_form'];
$id_int = strtoupper($_POST['id_int']);
$servicos = strtoupper($_POST['servicos']);
$est_proj = strtoupper($_POST['est_proj']);
$mem_calc = strtoupper($_POST['mem_calc']);
$custo = strtoupper($_POST['custo']);
$digitador = $_SESSION['nome'];
$data_hora = date('Y-m-d H:i:s');
$sql = "INSERT INTO A1T_ACOES (cod_form,id_int,servicos,est_proj,mem_calc,custo,digitador,data_hora) VALUES ('$cod_form','$id_int','$servicos','$est_proj','$mem_calc','$custo','$digitador','$data_hora')";
$resultado = mysql_query($sql);
echo mysql_error();
//LISTA REGISTROS FEITOS
$busca = $_SESSION['cod_form'];
$resultado2 = mysql_query("SELECT * FROM A1T_ACOES WHERE cod_form = '$busca'");echo "<table border=1>\n";
echo "<tr><td>ID</td><td>Serviços</td><td>Estudo/Projeto</td><td>Mmória de cálculo</td><td>Custo</td></tr>\n";printf("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>\n", $linha["id_int"], $linha["servicos"], $linha["est_proj"], $linha["mm_calc"], $linha["custo"], $linha["data_hora"]); }
while ($linha = mysql_fetch_array($resultado2));
echo "</table>\n";
} else {
echo "Nenhum registro encontrado!";
}
Será que tem como?
Tipo o enem ?
franthesco, o que seria o:
$cod_form = $_SESSION['cod_form'];
$id_int = strtoupper($_POST['id_int']);
?!Tipo o enem? Nao sei como é... rsrsrsrs :upset:
$cod_form = $_SESSION['cod_form'];
É o código que usei pra pegar o código do formulario da tabela1 para por na tabela 2
$id_int = strtoupper($_POST['id_int']);.
É o comando que dou para pegar o número da intervenção (id_int), do formulário.
c quer que no final apareça os dados de todos as telas anteriormente, para que o usuario possa conferir e confimar, tipo o enem ?
/applications/core/interface/imageproxy/imageproxy.php?img=http://img842.imageshack.us/img842/6815/semttulopnq.jpg&key=6a0d912718047b4dcff1a762ed22c40b5930ae5603326a239e4c953d6682fac8" alt="semttulopnq.jpg" />
Cristianoolv, isso u já fiz... O que quero é algo mais ou menos assim:
campos (campo1) (campo2) (campo3)...
digita 1 2 3 Salvar
Aí quando o cara clica em salvar as informações apareçam pra ele, os campos limpam, e ele digita novas informações.....
campos (campo1) (campo2) (campo3)...
digita 5 6 7 Salvar
aparce 1 2 3
Se ele clicar em salvar de novo, vai aparecer assim:
campos (campo1) (campo2) (campo3)...
(vazios pq ele nao digitou nada)
aparce 1 2 3
5 6 7
Que foi o que ele ja inseriu na tabela2, que esta relacionada com a tabela1, que está aparecendo no cabeçalho...
Franthesco não testei o código mas ve se vai clarear as ideia:
<?php
session_start();
//conectando com o banco de dados
require_once("include/conexao.php");
?>
<form id="form1" action="" method="post">
<input name="servicos" type="text"><br/>
<input name="est_proj" type="text"><br/>
<input name="mem_calc" type="text"><br/>
<input name="custo" type="text"><br/>
<input name="nome" type="text"><br/>
<input type="hidden" name="acao" value="salvar" />
<input type="submit" align="middle" name="Submit" value="Salvar" style="cursor:pointer"/>
</form>
<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'salvar'){
// PEGAR OS DADOS DIGITADOS E INSERIR NO BANCO
$cod_form = $_SESSION['cod_form'];
$id_int = strtoupper($_POST['id_int']);
$servicos = strtoupper($_POST['servicos']);
$est_proj = strtoupper($_POST['est_proj']);
$mem_calc = strtoupper($_POST['mem_calc']);
$custo = strtoupper($_POST['custo']);
$digitador = $_SESSION['nome'];
$data_hora = date('Y-m-d H:i:s');
$sql = "INSERT INTO A1T_ACOES (cod_form,id_int,servicos,est_proj,mem_calc,custo,digitador,data_hora) VALUES ('$cod_form','$id_int','$servicos','$est_proj','$mem_calc','$custo','$digitador','$data_hora')";
$resultado = mysql_query($sql);
echo mysql_error();
}
$busca = $_SESSION['cod_form'];
$resultado2 = mysql_query("SELECT * FROM A1T_ACOES WHERE cod_form = '$busca' Order by ID DESC") or die(mysql_error());
if(mysql_num_rows($resultado2) == 0){
echo 'Nenhum registro encontrado!';
}else{
echo '
<table width="950" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>ID</td>
<td>Serviços</td>
<td>Estudo/Projeto</td>
<td>Mmória de cálculo</td>
<td>Custo</td>
</tr>
';
while ($linha = mysql_fetch_array($resultado2)){
echo '
<tr>
<td>'.$linha['id'].'</td>
<td>'.$linha['servicos'].'</td>
<td>'.$linha['est_proje'].'</td>
<td>'.$linha['memoria'].'</td>
<td>'.$linha['Custo'].'</td>
</tr>
';
}
echo '</table>';
}
?>
Se for o caso na conclusao do cadastro do form vc da um refresh para atualizar os dados:
echo "<meta HTTP-EQUIV='refresh' CONTENT='0;URL=nome_do_arquivo.php'>";
franthesco, você quer trabalhar com o cadastro em etapas?!
Ex.: pagina 1 = nome, sexo
pagina 2 = email, telefone
......