Ir para conteúdo

POWERED BY:

Arquivado

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

miquimba

Erro ao registrar sessão

Recommended Posts

Galera dá uma olhada

essa é minha pagina de cadastro de produtos.

 

<?
session_start();
session_register("cod_produto");
$_SESSION["cod_produto"] = "$cod_produto";

 include "../bd/conecta.php"; //Conecta com a nosso banco de dados MySQL
 //include "ver_sessao.php"; //Verifica se a sessão está ativa
 # Definição das variáveis=======================================================================
===============			
	$nome=trim($_POST['nome']);
	$descricao=trim($_POST['descricao']);
	$preco=trim($_POST['preco']);
		$opcao=$_POST['opcao'];
		$acao=$_GET['acao'];

		if($opcao=='sim'){ // abre a pag. para inserção de característica
			include("caracteristica.php");
			//exit(0);
		}
?>

<html>
<head>
 <title>Produtos</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
 <br>
  <table width="60%" border="0" cellspacing="0" cellpadding="0" align="center">
   <tr>
	<td height="60">
	<div align="center"><font face="Arial" size="4"><b>Cadastro de Produtos </b></font></div></td>
   </tr>
  </table>
  <br>
  
<?
	if($acao == 'cadastrar')  /*Cadastra o cliente depois que o formulário for enviado */
 	{  
		  if($nome == '') {
   			$erros++;
   			$html_erros = $html_erros."<br>Nome";
 	 	}
		
		
		  if($erros == 0) { //Se não tiver nenhum erro, faz a inclusão
			   $sql = mysql_query("INSERT INTO produtos (nome, descricao, preco, opcao) 
			 		VALUES('$nome', '$descricao', '$preco', '$opcao')")
		 			 or die("Erro no comando SQL:".mysql_error());
					 $cod_produto = mysql_insert_id();
					 //echo "mysql_insert_id Retornou: $cod_produto </br>";

   						echo "<div align=center><font face=Arial size=2>Produto cadastrado com Sucesso!!
	   					 <br><br><a href='lista_produtos.php'>Voltar</a></font></div><br><br>";
   		} //fecha $erros == 0
   		else 
   		{
   		 echo "<div align=center><font face=Arial size=2><b>ATENÇÃO</b><br><br>Foram encontrados <b>$erros</b>
		  erro(s) no cadastro de Produtos:<br><b>$html_erros</b>
		<br><br><a href='java script:history.go(-1)'>Voltar</a></font></div><br><br>";
   		}//fecha else
 } /*fecha acao= cadastrar*/ 
		
?>


<?
 	if($acao == 'entrar') /*Mostra o formulário de cadastro de clientes */
 	{
	
?>
 
<form name="frm_visitas" method="post" action="<? echo $PHP_SELF; ?>?acao=cadastrar" enctype="multipart/form-data">
<table width="60%" border="1" cellspacing="0" cellpadding="0" align="center" bordercolor="#D0DCE6">
	<tr>
	 <td width="40%" height="40"><font face="Arial" size="2">  Nome:</font></td>
	 <td height="40" width="60%"><font face="Arial" size="2">  
	 <input type="text" name="nome" size="50" maxlength="50"></font>  </td>
	</tr>
	
	<tr>
	 <td width="40%" height="40"><font face="Arial" size="2">  Descricao:</font></td>
	 <td height="40" width="60%"><font face="Arial" size="2">  
		 <textarea name="descricao" cols="30" rows="4"></textarea>
	 </font>  </td>
	</tr>

	<tr>
	 <td height="40" width="40%"><font face="Arial" size="2">  Preço:</font></td>
	 <td height="40" width="60%"><font face="Arial" size="2">  
	 <input typo="text" name="preco" size="10" maxlength="10">
	 </font></td>
	</tr>
	<tr>
	 <td width="40%" height="40"><font face="Arial" size="2">  Caraterística :</font></td>
	 <td height="40" width="60%"><font face="Arial" size="2">  
		 <input name="opcao" type="radio" value="nao" checked = "checked">
		 não	
		 <input name="opcao" type="radio" value="sim" >
	 </font>sim</td>
	</tr>

<tr>
	 <td height="40" colspan="2">
	 <div align="center">
	 <input type="submit" name="cadastrar" id="cadastrar" value="Cadastrar Produto">
	 <input type="reset" name="limpar" id="limpar" value="Limpar">	 
	 <input type="button" name="voltar" id="voltar" value="Voltar" onClick='java script:window.history.back();' >
	 </div></td>
	
	</tr>
   </table>
</form>
  <? 
	  } /*fecha acao=entrar */ 
  ?>
 
 </body>
</html>

Qdo clico em caracteristica para cadastrar as caracteristicas do produto o cod_produto que deveria ficar registrado na sessão não grava.
Onde está o problema?
Segue o script para cadastrar as caracteristicas

<?PHP

include "../bd/conecta.php";
session_start();

$caracteristica = $_POST['caracteristica'];

// *** VARIÁVEIS DO SITEMA ***
// $tabela contém o valor da tabela a se inserir.
// $nr_fotos contém a quantidade de fotos que serão gravadas na tabela. É usado pelo script de manipulação de fotos mais abaixo.

$tabela = "itens";
$nr_fotos = 0;
$nome_sessao = "itens";

// *** INSERINDO O CONTEUDO NA TABELA ***
$str = "INSERT INTO $tabela (caracteristica, cod_produto) VALUES ('$caracteristica', '$cod_produto')";
$sql = mysql_query($str) or die ("INSERIR_ERROR".mysql_error());

// *** RECUPERANDO O VALOR DO ÚLTIMO ID ***
$sql_id = mysql_query("SELECT * FROM $tabela ORDER BY cod_item DESC") or die("ID_ERROR".mysql_error());
$dados = mysql_fetch_array($sql_id);
	$cod_item = $dados['cod_item'];
	
// *** FORMATANDO AS IMAGENS ***
// Para o funcionamento do script de manipulação de imagens, deve-se criar as pastas "deletar" e "images" na raiz do site, caso não tenham sido criadas ainda.
// Caso queira utilizar outros nomes, deverá alterá-los abaixo.
// O redimensionamento se dá indicando apenas o valor da largura da imagem na variável $image_wi.
// Os outros valores e scripts de bd, não precisam de alterações.
////////********************************************//////////
for($i=1; $i <=$nr_fotos; $i++){
	$id_foto = "foto".$i;
	
	$foto = $_FILES[$id_foto];
	if($foto['size']<= 0 ){
	}else{
	$nome = $foto['name']; 
	$temp = $foto['tmp_name']; 
	$nome_novo = "../images/".$nome_sessao.time()."_$i.jpg";
	$dir = "../deletar/". $nome; 
	$jpeg = move_uploaded_file($temp, $dir);
	$nome_final = "images/".$nome_sessao.time()."_$i.jpg";
	
	switch($foto['type']){
		case 'image/jpeg': $novo = imagecreatefromjpeg($dir);
		break;
		case 'image/jpg': $novo = imagecreatefromjpeg($dir);
		break;
		case 'image/pjpg': $novo = imagecreatefromjpeg($dir);
		break;
		case 'image/pjpeg': $novo = imagecreatefromjpeg($dir);
		break;
		case 'image/gif': $novo = imagecreatefromgif($dir);
		break;
		case 'image/png': $novo = imagecreatefrompng($dir);
		break;
		case 'image/x-png': $novo = imagecreatefrompng($dir);
		break;
		default: echo "Formato de imagem inválido!!<br/> <a href='java script:history.go(-1)'>Voltar</a>";
		$tipo = explode("/",$foto['type']);
		$tipo_ext = $tipo[1];
		echo "<br/> Essa imagem é .$tipo_ext, use apenas .gif, .jpg e .png!";
		exit;
		break;
	}
	
	$he = imagesx($novo);
	$wi = imagesy($novo);
	$image_wi = 390;
	$image_he = $wi / $he * $image_wi;
	
	$peq = imagecreatetruecolor($image_wi, $image_he);
	imagecopyresized($peq, $novo, 0,0,0,0, $image_wi, $image_he, $he, $wi);
	$final = imagejpeg($peq, $nome_novo, 50); 
	
	foreach (glob("../deletar/*.*") as $filename)
	{ unlink($filename); }
	
	$str_foto = "UPDATE $tabela SET foto$i='$nome_final' where id='$id'";
	$sql_foto = mysql_query($str_foto) or die("FOTOS_ERROR".mysql_error());
	}
}

mysql_query("OPTIMIZE TABLE $tabela")or die(mysql_error());

// *** ALTERE CONFORME A SEÇÃO DO PAINEL***
// Ex.: header("location: texto_inserir_form.php");
header("Location: lista.php");

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

aparece alguma mensagem de erro ?

bom dia

não aparece nenhuma mensagem de erro, somente não grava o cod_produto na tabela itens, que deveria vir pela sessão registrada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão, no início do seu código:

 

$_SESSION["cod_produto"] = "$cod_produto";

A variável $cod_produto ta vindo de onde? Porque até o momento que você atribuiu ela à sessão, ela estava vazia...ela não esta vindo de lugar algum...da uma olhada nisso...

 

Outra coisa...como é um valor numérico, não se usa aspas, o correto seria:

 

$_SESSION["cod_produto"] = $cod_produto;

Se não a sessão vai ter como valor não o código do produto mas sim o texto "$cod_produto"....

 

Espero ter ajudado ;)

 

Abraço e sucesso no projeto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão, no início do seu código:

 

$_SESSION["cod_produto"] = "$cod_produto";

A variável $cod_produto ta vindo de onde? Porque até o momento que você atribuiu ela à sessão, ela estava vazia...ela não esta vindo de lugar algum...da uma olhada nisso...

 

Outra coisa...como é um valor numérico, não se usa aspas, o correto seria:

 

$_SESSION["cod_produto"] = $cod_produto;

Se não a sessão vai ter como valor não o código do produto mas sim o texto "$cod_produto"....

 

Espero ter ajudado ;)

 

Abraço e sucesso no projeto!

A variável $cod_produto é o id da tabela produtos, com esse id preciso para inserir no campo cod_produto na tabela itens.

a tabela produtos está assim;

cod_produto

nome

descricao

preco

opcao

 

e a tabela itens assim;

cod_item

cod_produto

caracteristica

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então amigo, em que parte do seu código você está atribuíndo esse cod_produto na sessão?

tirei as aspas como sugeriu e apareceu essa mensagem;

 

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

 

Agora travou, pq não sei onde ativar as variaveis globais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque no topo da página:

 

error_reporting(E_ALL);

e cole aqui o que retorna, já saberemos se a variável está definida oou não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque no topo da página:

 

error_reporting(E_ALL);

e cole aqui o que retorna, já saberemos se a variável está definida oou não.

Obrigado galera, consegui resolver o problema...

tinha que pedir para a hospedagem ativas as variáveis globais.

Obrigado pelas dicas.

 

ATT.

Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é correto isso. Lembre-se que a partir do PHP6 não haverá mais essa possibilidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é correto isso. Lembre-se que a partir do PHP6 não haverá mais essa possibilidade.

Isso http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

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.