Ir para conteúdo

POWERED BY:

Arquivado

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

Labroskas

Dados no Próprio Formulário

Recommended Posts

Boa Tarde,

Tenho uma página onde tenho Três Forms, dos quais dois (Novo/Editar) estão ocultos(Display=none), e tenho o primeiro form que é onde mostro os dados em forma de grid, nesse form tenho as opções Novo e Editar, as quais activam o Form 2 ou Form 3, dependendo da escolha efectuada pelo utilizador.
A opção Novo funciona lindamente, já a opção Editar não funciona, porque eu preciso levar o ID do registo para saber qual vou editar, a questão é que não consigo passar o ID.

<head>
  <script language="javascript" type="text/javascript">
    function MostraDiv(idx){
      form1.style.display='none';
      form2.style.display='none';
      form3.style.display='none';
      idx.style.display = 'block';
      }
   function FechaDiv(){
     form1.style.display='none';
     form2.style.display='none';
     form3.style.display='block';
     }
 </script>
</head>
<body>
  <form id="form1" name="frm_dados" method="post" action="#">

    <a href="javascript:" onclick="MostraDiv(form1)">Adicionar Registo</a>

    <a href="javascript:" onclick="MostraDiv(form2)">Editar Registo</a>

    <a href="javascript:" onclick="return MsgBoxElim()">Eliminar Registo</a>

  </form>

  <form id="form2" name="form2" method="post" action="" style="display:none;">
  </form>

  <form id="form3" name="form3" method="post" action="" enctype="multipart/form-data" style="display:none;">

  </form>
</body>

Imagem ilustrativa:

http://gyazo.com/46719fff363a2fa68feeda2a68eb132b

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ao fazer isso ele não me mostra as opções correctas, pq isto funciona tudo na mesma pagina, quando faço isso ele mostra o form editar, mas depois volta logo para o inicial que é o de visualização.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai você tem que montar a query no form editar:

$sql = "SELECT * FROM tabela WHERE id = " . $_GET['id'];
$qr = mysql_query($sql) or die(mysql_error());
$rs = mysql_fetch_assoc($qr);
// inserir os valores nos inputs
echo '<input type="text" name="titulo" value="' . $rs['titulo'] . '" />';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, e está feita essa query, mas vamos ver se me faço entender, fazendo dessa maneira consigo obter o ID selecionado, mas depois oculta novamente o form de editar e volta a mostrar o form inicial de visualização, isto talvez pq seja feito o <a href="formulario.php?id=1">Editar</a> , este problema deve-se ao facto de estar a tentar trabalhar sempre no mesmo form com as três opções.

Você viu a foto de exemplo que enviei??


Olha aí como fica neste pequeno exemplo, é exactamente assim k fica :(


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <script language="javascript" type="text/javascript">
    function MostraDiv(idx){
      form1.style.display='none';
      form2.style.display='none';
      form3.style.display='none';
      idx.style.display = 'block';
      }
   function FechaDiv(){
     form1.style.display='none';
     form2.style.display='none';
     form3.style.display='block';
     }
 </script>
</head>
<body>
  <form id="form1" name="frm_dados" method="post" action="#">
    <h1>Visualizar Registos</h1>
    <table>
	<tr>
      <td><input type="text" name="id_name" value="100"></td>
    </tr>
    <tr>
      <td><a href="Untitled-5.php?id=111" onclick="MostraDiv(form2)">Adicionar Registo</a></td>
    </tr>
    <tr>
      <td><a href="Untitled-5.php?id=111" onclick="MostraDiv(form3)">Editar Registo</a></td>
    </tr>
    <tr>
      <td><a href="javascript:" onclick="return MsgBoxElim()">Eliminar Registo</a></td>
    </tr>
	</table>
  </form>

  <form id="form2" name="form2" method="post" action="" style="display:none;">
    <h1>Novo Registo</h1>
  	<input type="text" name="id_name" value="<?php echo $_GET['id'];?>">
    <a title="Retroceder" href="Untitled-5.php" onclick="FechaDiv()">Voltar</a>
  </form>

  <form id="form3" name="form3" method="post" action="" enctype="multipart/form-data" style="display:none;">
    <h1>Editar Registo</h1>
	<input type="text" name="id_name1" value="<?php echo $_GET['id'];?>">
    <a title="Retroceder" href="Untitled-5.php" onclick="FechaDiv()">Voltar</a>
  </form>
</body>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque você usa tantos forms? Usa o mesmo form pra inserir para cadastrar, só verifica se o id foi passado:

if (isset($_GET['id'])) {
    $sql = "SELECT * FROM tabela WHERE id = " . $_GET['id'];
    $qr = mysql_query($sql) or die(mysql_error());
    $rs = mysql_fetch_assoc($qr);
}
$acao = (isset($_GET['id'])) ? 'editar.php?id=1' : 'inserir.php';
$titulo = (isset($_GET['id'])) ? $rs['titulo'] : '';
echo '
<form action="' . $acao . '" method="post">
<input type="text" name="titulo" value="' . $titulo . '" />
</form>
';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso vários, devido ao facto de ter três opções (Ver/Editar/Novo), achei que seria mais fácil criar três forms, mas já vi que se calhar poderia fazer tudo através de um form com três div com ID (form1, form2, form3) e depois passava os parâmetros como você disse em cima, é isso que será melhor??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use links para chamar o formulário, se passar ID vai editar, se não passar vai inserir um novo registro. Fazendo esta comparação no formulário conseguirá usar somente um form. Na prática, veja minha resposta anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa ser chato, mas sou novato e tou super confuso, alterei o código para esta nova forma, como acha que posso enquadrar a sua solução aqui neste meu código?Acha que dá para me dar mais uma luzinha??

Cumps, e obrigado por me ajudar.

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script language="javascript" type="text/javascript">
 
    function MostraDiv(idx){
      div1.style.display='none';
      div2.style.display='none';
      div3.style.display='none';
      idx.style.display = 'block';
      }
    function FechaDiv(){
      div1.style.display='block';
      div2.style.display='none';
      div3.style.display='none';
      }
 </script>
</head>
<body>
<form id="form1" name="frm_dados" method="post" action="" style="display:block;">
  <div id="div1" name="div1" style="display:block;">
    <h1>Visualizar Registos</h1>
    <table>
      <tr>
        <td><input type="text" name="id_name" value="100"></td>
      </tr>
      <tr> <!-- javascript:{document.frm_dados.submit();} ;document.frm_dados.submit();-->
        <td><a href="javascript:" onclick="MostraDiv(div2);">Adicionar Registo</a></td>
<!-- <td><label><input type="submit" name="enviar" value="Enviar" onclick="MostraDiv(div2);"/></label></td> -->
      </tr>
      <tr>
        <td><a href="javascript:" onclick="MostraDiv(div3)">Editar Registo</a></td>
      </tr>
      <tr>
        <td><a href="javascript:" onclick="return MsgBoxElim()">Eliminar Registo</a></td>
      </tr>
</table>
  </div>
 
  <div id="div2" name="div2" style="display:none;">
    <h1>Novo Registo</h1>
    <table>
      <tr>
        <td><input type="text" name="id_name" value="<?php echo $_GET['id'];?>">
        <a title="Retroceder" href="Form_Div_Esc.php" onclick="FechaDiv()">Voltar</a></td>
      </tr>
</table>
  </div>
 
  <div id="div3" name="div3" style="display:none;">
    <h1>Editar Registo</h1>
    <table>
      <tr>
        <td><input type="text" name="id_name1" value="<?php echo $_GET['id'];?>">
        <a title="Retroceder" href="Form_Div_Esc.php" onclick="FechaDiv()">Voltar</a></td>
      </tr>
</table>
  </div>
</form>
  
</body>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz este teste abaixo, você precisará criar as validações.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
	</head>
	<body>
			<div id="div1">
				<h1>Visualizar Registos</h1>
				<h2>Adicionar Registo</h2>
				<table border="1">
					<tr>
						<th>
							Registro
						</th>
						<th>
							Editar Registo
						</th>
						<th>
							Eliminar Registo
						</th>
					<?php
					$sql = "SELECT * FROM `tabela` ORDER BY `id` DESC";
					$qr = mysql_query($sql) or die(mysql_error());
					if (mysql_num_rows($qr) > 0) {
						while ($rs = mysql_fetch_assoc($qr)) {
							echo '
							<tr>
								<td>
									' . $rs['titulo'] . '
								</td>
								<td>
									<a href="teste.php?id=' . $rs['id'] . '">Editar</a>
								</td>
								<td>
									<a onclick="return confirm(\'Deseja Relmente Excluir?\')" href="teste.php?id=' . $rs['id'] . '&excluir">Excluir</a>
								</td>
							</tr>
							';
						}
					} else {
						echo '
							<tr>
								<td colspan="3">
									Nenhum registro encontrado...
								</td>
							</tr>
						';
					}
					?>
			</table>
		  </div><!-- div1 -->
		 
		  <div id="div2">
			<h1>Novo Registo</h1>
			<table>
				<tr>
					<td>
						<?php
						if (isset($_GET['id'])) {
							$sql = "SELECT * FROM `tabela` WHERE `id` = " . $_GET['id'];
							$qr = mysql_query($sql) or die(mysql_error());
							$rs = mysql_fetch_assoc($qr);
						}
						$acao = (isset($_GET['id'])) ? "teste.php?id=" . $_GET['id'] . "&editar" : "teste.php?inserir";
						?>
						<form id="form1" name="frm_dados" method="post" action="<?php echo $acao; ?>">
							<input type="text" name="id_name" value="<?php echo $rs['titulo']; ?>" />
							<input type="submit" value="" />
							<a title="Retroceder" href="teste.php">Voltar</a>
						</form>
					</td>
				</tr>
			</table>
		  </div>
	</body>
<html>

Siga esta linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, acho k com uma boa adaptação, vou conseguir meter a funcionar, só tenho uma dúvida,

para que serve a esta parte???

 

$rs['titulo']

 

Fico muito agradecido por me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah,ok, era isso que queria saber.

 

 

Boas Alex_carvalho, fiz o código em baixo na ideologia que você me deixou, resolvi o problema de receber o ID ao editar, mas como tenho três DIV e só aparece uma de cada vez, não funciona correctamente, cada vez que selecciono por ex: o Editar, ele mostra a DIV Editar, mas volta logo de caminho à DIV de mostrar valores, tou a chamar por Javascript, será daí o problema??Olha o código abaixo direitinho, penso eu :(

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>  <script language="javascript" type="text/javascript">    function MostraDiv(idx){      div1.style.display='none';      div2.style.display='none';      div3.style.display='none';      idx.style.display = 'block';      }    function FechaDiv(){      div1.style.display='block';      div2.style.display='none';      div3.style.display='none';      } </script></head><body><?php  mysql_connect('localhost','root') or die ('Falhou conexão ao servidor');  //mysql_select_db('BD_exemplophp') or die ('Falhou conexão à base de dados');  mysql_select_db('dbgeral') or die ('Falhou conexão à base de dados');?><div id="div1" name="div1" style="display:block;">  <h1>Visualizar Registos</h1>  <h2>Adicionar Registo</h2>  <table border="1">    <tr>      <th>        Registro      </th>      <th>        Novo Registo      </th>      <th>        Editar Registo      </th>      <th>        Eliminar Registo      </th>      <?php        $sql = "SELECT * FROM utilizador ORDER BY num_aut ASC";        $qr = mysql_query($sql) or die(mysql_error());        if (mysql_num_rows($qr) > 0) {          while ($rs = mysql_fetch_assoc($qr)) {            echo '              <tr>                <td>                  ' . $rs['desig_utiliz'] . $rs['num_aut'] . '                </td>                <td>                  <a href="teste.php"onclick="MostraDiv(div2)">Novo Registo</a>                </td>                <td>                  <a href="teste.php?id=' . $rs['num_aut'] . '"onclick="MostraDiv(div3)">Editar Registo</a>                </td>                <td>                  <a onclick="return confirm(\'Deseja Realmente Excluir?\')" href="teste.php?id=' . $rs['num_aut'] . '&excluir">Excluir</a>                </td>              </tr>                ';            }          }         else           {            echo '              <tr>                <td colspan="3">                  Nenhum registro encontrado...                </td>              </tr>            ';          }      ?>  </table></div><!-- div1 --> <div id="div2" name="div2" style="display:none;">  <h1>Novo Registo</h1>  <table>    <tr>      <td>      </td>    </tr>  </table></div><!-- div2 --> <div id="div3" name="div3" style="display:none;">  <h1>Editar Registo</h1>  <table>    <tr>      <td>        <?php          if (isset($_GET['id'])) {            $sql = "SELECT * FROM utilizador WHERE num_aut = " . $_GET['id'];//echo $sql;            $qr = mysql_query($sql) or die(mysql_error());            $rs = mysql_fetch_assoc($qr);          }          $acao = (isset($_GET['id'])) ? "teste.php?id=" . $_GET['id'] . "&editar" : "teste.php?inserir"; echo $acao;        ?>        <form id="form3" name="frm_dados" method="post" action="<?php echo $acao; ?>">          <input type="text" name="id_name" value="<?php echo $rs['desig_utiliz'] . $rs['num_aut']; ?>" />          <input type="submit" value="" />          <a title="Retroceder" href="teste.php">Voltar</a>        </form>      </td>    </tr>  </table></div><!-- div3 --></body><html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode criar um arquivo para o form, nele faz a validação que fiz para ver se é para inserir ou editar. Um arquivo para listar e os arquivos inserir.php, editar.php e deletar.php

Só chame a url desejada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá ver, eu tenho esses arquivos feitos, dentro de cada um tenho as funções para as opções da escolha efectuada, ex: Se estiver em opção Novo, o ficheiro inserir.php tem lá dentro todos os INSERT'S da respectiva tabela.

O Editar tem os UPDATE'S, e o Delete tem os DELETE'S.

O que pretendo com esta página de Visualização é reduzir o número de páginas e não ser obrigado a estar sempre a criar 4 páginas(VER/NOVO/EDITAR/ELIMINAR) para cada tabela, daí eu querer fazer tudo na mesma página, sei que é mais difícil, mas só custa o primeiro, depois é quase sempre a abrir.

Cumps

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade por organização um arquivo pra cada é mais fácil, mas seja como quiser. Passe as condições para abrir o formulário passe um /inserir ou /editar?id=1.... e as ações pelo formulário a mesma coisa. Feche os blocos com if, dentro dele isset para verificar se o $_GET existe. Tudo da forma que fiz anteriormente.

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.