Ir para conteúdo

Arquivado

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

André Maretti

Problema ao gravar arquivo na tabela

Recommended Posts

Pessoal...

 

Minha página está cadastrando direitinho.... o problema é que se a pessoa cadastrar um produto e logo em seguida der F5... ele cadastra o mesmo produto novamente... A cada F5 q a pessoa der ele vai duplicando o último registro inserido.

 

Alguém pode me dar uma luz, de como impedir q isso aconteça.

 

Minha página está abaixo:

<?
// inicializa sessão
	session_start();
	if($_SESSION['acesso'] <> 'OK'){
	?>
	
	<script language="javascript">
	alert("Você precisa logar no sistema!");
	window.location.href="login_adm.php";
	</script>
	<?
}

//acesso ao servidor de banco de dados
$conexao=mysql_connect ('mysql1.micropinhal.com.br','micropinhal','xxx');

if ($conexao==false){
	?>
	<script language="javascript">
	alert("Erro de conexão ao servidor, tente novamentemais tarde");
	window.location.href="login_adm.php";
	</script>
	<?
} else {
	// seleciona banco de dados
	$banco=mysql_select_db ('micropinhal');
	if ($banco==false){
		?>
		<script language="javascript">
		alert ("Erro ao acessar banco de dados,tente novamente mais tarde");
		window.location.href="login_adm.php";
		</script>
		<?
	} // conexão com o banco
} //conexão com o servidor

//excluir
if ($_POST[txt_excluir] =='1'){
	//recebe produtos cehcados para exclusão
	$excluir=$_POST[check_excluir];
	for ($i=0; $i < sizeof($excluir); $i++){
//		Echo("delete from produtos_lucas where codigo = $excluir[$i]");
		$sql=mysql_query ("delete from lucas_produtos where codigo = $excluir[$i]");
	}//fecha for
} //fecha if


//INÍCIO GRAVAÇÃO DE DADOS
if(!empty($_POST["text_produto"])){
	$sql = mysql_query("insert into lucas_produtos (produto, de, por,categoria, peso, descricao) values ('$_POST[text_produto]','$_POST[text_de]','$_POST[text_por]','$_POST[text_categoria]', '$_POST[text_peso]','$_POST[text_descricao]')");
	if ($sql==false){
	?>
	<script language="javascript">
	alert("erro ao gravar dados na tabela, tente novamente mais tarde!");
	</script>
	<?
	} // fecha if do $sql
} //fecha if do $_POST["text_produto"]

?>

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<script language="javascript">
function excluir(){
	document.forms[1].txt_excluir.value="1";
	document.forms[1].submit;
}

</script>


<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <table width="590" border="0" align="center" cellpadding="3" cellspacing="0">
	<tr>
	  <td colspan="2" align="center"><input name="txt_gravar" type="hidden" id="txt_gravar" value="0" />
	  Produto Cadastrado com sucesso! </td>
	</tr>
	<tr>
	  <td colspan="2" align="center">CADASTRO DE PRODUTOS </td>
	</tr>
	<tr>
	  <td width="222"> </td>
	  <td width="359"> </td>
	</tr>
	<tr>
	  <td>Produto</td>
	  <td><input name="text_produto" type="text" id="text_produto" /></td>
	</tr>
	<tr>
	  <td>De</td>
	  <td><input name="text_de" type="text" id="text_de" /></td>
	</tr>
	<tr>
	  <td>Por</td>
	  <td><input name="text_por" type="text" id="text_por" /></td>
	</tr>
	<tr>
	  <td>Categoria</td>
	  <td><label>
		<select name="text_categoria" id="text_categoria">
		</select>
	  </label></td>
	</tr>
	<tr>
	  <td>Peso</td>
	  <td><input name="text_peso" type="text" id="text_peso" /></td>
	</tr>
	<tr>
	  <td>Descrição</td>
	  <td><input name="text_descricao" type="text" id="text_descricao" /></td>
	</tr>
	<tr>
	  <td>Imagem Grande </td>
	  <td><input name="img_grande" type="file" id="img_grande" /></td>
	</tr>
	<tr>
	  <td>Imagem Pequena </td>
	  <td><label>
		<input name="img_pequena" type="file" id="img_pequena" />
	  </label></td>
	</tr>
	<tr>
	  <td> </td>
	  <td> </td>
	</tr>
	<tr>
	  <td colspan="2" align="center"><label>
		<input type="submit" name="Submit" value="Gravar"/>
	  </label></td>
	</tr>
	<tr>
	  <td> </td>
	  <td> </td>
	</tr>
  </table>
</form>
  <form action="" method="post" enctype="application/x-www-form-urlencoded" name="form2" id="form2">
	<table width="641" border="0" align="center" cellpadding="3" cellspacing="0">
	  <tr>
		<td colspan="9">Produtos Cadastrados </td>
	  </tr>
	  <tr>
		<td width="56" align="center" bgcolor="#E4E4E4"><input name="txt_excluir" type="hidden" id="txt_excluir" value="0" /></td>
		<td width="60" align="center" bgcolor="#E4E4E4"> </td>
		<td width="64" align="center" bgcolor="#E4E4E4">Produto</td>
		<td width="36" align="center" bgcolor="#E4E4E4">De</td>
		<td width="37" align="center" bgcolor="#E4E4E4">Por</td>
		<td width="56" align="center" bgcolor="#E4E4E4">Peso</td>
		<td width="64" align="center" bgcolor="#E4E4E4">Categoria</td>
		<td width="118" align="center" bgcolor="#E4E4E4">Descrição</td>
		<td width="51" align="center" bgcolor="#E4E4E4">Imagem</td>
	  </tr>
	  
	  <?
	  
	 $sql = mysql_query("select * from lucas_produtos order by categoria");
	 $num_linhas = mysql_num_rows ($sql);
	 for ($i=0; $i < $num_linhas; $i++){
	 	$valor = mysql_fetch_array($sql);
		$produto[$i][codigo] = $valor[codigo];
		$produto[$i][produto] = $valor[produto];
		$produto[$i][de] = $valor[de];
		$produto[$i][por] = $valor[por];
		$produto[$i][descricao] = $valor[descricao];
		$produto[$i][peso] = $valor[peso];
		$produto[$i][categoria] = $valor[categoria];
		$produto[$i][img_grande] = $valor[img_grande];
		$produto[$i][img_pequena] = $valor[img_pequena];
			 	  
		?>
	  
	  <tr>
		<td align="center"><label>
		  <input name="check_excluir[]" type="checkbox" id="check_excluir" value="<? echo ($produto[$i][codigo]);?>" />
		</label></td>
		<td><label>
		  <input type="submit" name="Submit2" value="Alterar" />
		</label></td>
		<td><? echo($produto[$i][produto]) ?> </td>
		<td><? echo($produto[$i][de]) ?></td>
		<td><? echo($produto[$i][por]) ?></td>
		<td><? echo($produto[$i][peso]) ?></td>
		<td><? echo($produto[$i][categoria]) ?></td>
		<td><? echo($produto[$i][descricao]) ?></td>
		<td><? echo($produto[$i][imagem_pequena]) ?></td>
	  </tr>
	  <? 
	  }//fecha for
	  ?>

	  <tr>
		<td><label>
		  <input type="submit" name="Submit3" value="Excluir" onclick="excluir();" />
		</label></td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
		<td> </td>
	  </tr>
	</table>
</form>
  <p> </p>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o problema de envio duplo. Pode sr resolvido criando-se uma nova variável de sessão com valor booleano, ex: $_SESSION["item_enviado"], começando tendo falor false e depois do envio o valor deve ser mudado para true. Também deve ser criada uma condição if para só enviar se "item_enviado" tiver valor false. Sacô?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso utilize de uma vez um User Hash, ele é gerado toda vez que entrar em qq formulario do seu site e todas as outras paginas o destroi ...

 

você armazena ele na sessao e em um campo hidden do formulario, a pagina que insere formulario alem de você checar se esse user hash existe e se é verdadeiro , você verifica se eles sao iguais, ...

 

você resolve 2 problemas, o do envio duplo, e de envio de formulario que nao sejam do seu site...

Compartilhar este post


Link para o post
Compartilhar em outros sites

usando session

 

 

para usar variáveis de sessão sempre inicie com session_start()

 

<?php
session_start();

$_SESSION['foo'] = 'bar'; // atribui o valor "bar" à variável de sessão "foo"
?>

 

usando variáveis de sessão, crie uma condicional seguindo um lógica.

A sequência lógica depende do que você quer fazer.

 

No seu caso em específico,

 

inicie uma sessão no momento em que o usuario entrar no formulário

quando finalizar e gravar com sucesso, modifique o valor da sessão.

 

se o usuario der refresh na página, a rotina automaticamente verificará qual o valor da variável de sessão.

se estiver com valor de finalizado, impeça a ação de gravar e redirecione a página ou mostre uma mensagem, enfim ..

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.