Ir para conteúdo

POWERED BY:

Arquivado

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

inforsis

[Resolvido] Dados na sessão com array

Recommended Posts

Bom Dia a todos!

Então estou com um probleminha, acho que não muito complicado...

Estou montando um sistema de cesta de pedidos. Os dados vêm do Banco de Dados.

 

<?
$sql = "SELECT * FROM `fullpot_prod` WHERE code = '$code' and status='1'";
$resultado = mysql_query($sql) or die('erro<br>'.$sql.'<br>'.mysql_error());
$num_linhas = mysql_num_rows($resultado);
?>
<?php if ($num_linhas >0){
//faz um loop para listar os produtos
for ($i = 0; $i < $num_linhas; $i++) { 
	$produto = mysql_fetch_array($resultado);
	$item 			  = $produto["item"];
	$code			 = $produto["code"];
	$description	  = $produto["description"];
	$price			= $produto["price"];
	$image			= $produto["image"];
	$status		   = $produto["status"];

?>
				
				<div id="subpagina">
				
							
				<img id="img_produto" src="http://www.fullpotofflowers.com/2.0/imagens/products/<? echo $produto["image"] ?>" alt="<? echo $produto["item"];?>" width="300" height="300" border="1" />
				
				<p><strong>Code:</strong> <span><? echo $produto["code"]; ?></span><br />
				
				<strong>Product:</strong> <span><? echo $produto["item"]; ?></span><br />
				
				<strong>Price:</strong> <span><? if ($price == "0") { echo "";} else echo $produto["price"]; ?></span><br />
				
				<strong>Descrição:</strong> <span><? echo $produto["description"]; ?></span></p><br />
				
				<form action="cart3.php?code=<? echo $produto["code"]; ?>" method="get">
				<input type='hidden' name='code' value='<? echo $produto["code"]; ?>' />
				<input type='hidden' name='image' value='<? echo $produto["image"]; ?>' />
				<input name="add" type="submit" id="add" value="Add To Cart"  />
				</form>
				
<?php
			  
} 

}

 if ($num_linhas < 1){
  echo "<br /><p class=\"center\">No records were located searching for <strong>$code</strong></p>";
			   
}
 ?>

Envio por um formulário usasndo um hidden, crio uma session e adiciono o item selecionado.

 

<?
session_start();
$code  = $_GET['code'];
$image  = $_GET['image'];

$cesta = array();

$_SESSION["code"] = "$code";
$_SESSION["image"] = "$image";
?>

Depois exibo o item em uma outra página:

<?
session_start();
echo $_SESSION = $code;?><br />
<img src="http://www.fullpotofflowers.com/2.0/imagens/products/<?php echo $_SESSION = $image; ?>">

O Problema

Então da forma que coloquei acima, eu apenas guarda um unico item na sessão, porém o usuário deve permanecer no sistema e selecionar novaos itens e os itens anteriores ficam na sessão. Bom para isso, devo usar array. Só que não estou sabendo como proceder para pegar estes dados e colocar em um array e exibi-los. Alguém pode ma auxiliar?

 

PS: Li alguns tópicos na busca, encontrei este post do GuttoSP, mais não sonsegui resultado.

 

Obrigado!

ATé Mais. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala, inforzyz!

 

Crie $_SESSION['code'] como um array. Faça assim:

 

$_SESSION["code"][] = "$code";
$_SESSION["image"][] = "$image";

 

No último bloco de códigos, você fez errado. Veja:

echo $_SESSION = $code;

Faça:

echo $_SESSION['code'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então modifiquei, aparentemente ficou correto... Poderiam me auxiliar também na exibição de todos os itens que constam na seção.

 

<?
session_start();
echo $_SESSION['code'];?><br />
<img src="http://www.fullpotofflowers.com/2.0/imagens/products/<?php echo $_SESSION['image']; ?>">

Obrigado, ate mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve inforsis!

 

bem, considerando que você está usando chaves numéricas no array ([0], [1], etc), só fazer um loop para todos os itens:

for($i = 0; $i < count($_SESSION["code"]); $i++){
	print $_SESSION["code"][$i];
}

até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

leonardonobre, valeu pela dica de link. Vou dar uma olhada. Porém acho que seguindo a linha de raciiocinio que comecei é mais facil. Com o auxilio de vocês...

 

Então Diego, eu coloquei da maneira que você falou para visualizar (na lógica, esta tudo correto.) Só nao entendi porque me foi retornado o numero de registros e não as informacoes (por exemplo, me retornou o numero "4").

 

<?
session_start();
$code  = $_GET['code'];
$image  = $_GET['image'];

$_SESSION["code"][0] = "$code";
$_SESSION["image"][0] = "$image";
?>

<?
session_start();
for($i = 0; $i < count($_SESSION["code"]); $i++){
echo $_SESSION["code"][$i];?><br />
<img src="http://www.fullpotofflowers.com/2.0/imagens/products/<?php echo $_SESSION["image"][$i]; }?>">

Alguém, pode me orientar?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas não é um número que fica armazenado em $_SESSION['code']? :unsure:

 

 

No primeiro bloco de código, você definiu o índice zero. Isso fará com que, sempre que o usuário selecionar um produto, ele seja inserido no primeiro índice, sobrescrevendo o já existente. Não defina números. Faça como mostrei antes:

 

$_SESSION['code'] [] = $code;

 

 

Dessa forma, o novo produto sempre será inserido num novo índice. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Beraldo sem definir valor, me retorna o erro:

 

Fatal error: [] operator not supported for strings in /home/content/f/u/l/fullpot/html/new/cart3.php on line 5

Eu não preciso de um for com um indice para pegar esses valores e suas posições? Bom já tentei mais não acertei... O segundo bloco do código esta assim:

<?
session_start();
$code  = $_GET['code'];
$image  = $_GET['image'];

$_SESSION['code'][] = $code;
$_SESSION['image'][] = $image;

?>

Pode me orientar?

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

inforsis, sobre o seu último post de ontem... você fechou a session e testou novamente? pra acontecer aquilo, é porque os dados da session ainda estavam guaradas em string, e não em array

 

sobre esse erro, o beraldo tá certo, vai guardar sempre no mesmo índice assim... mas se desse jeito dá erro, uma alternativa é colocar o índice dinamicamente, com a ajuda da função count():

$_SESSION['code'][count($_SESSION['code'])] = $code;

até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$_SESSION['code'] tem que ser um array. Para ter certeza disso, faça isto:

 

if (!isset($_SESSION['code']) || !is_array($_SESSION['code']))
{
	$_SESSION['code'] = array();
}

$_SESSION['code'][] = $code;
//...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Beraldo, obrigado pela atenção.

Bom durante o dia o Diego (jeronymo) me auxiliou bastante essa dica que ele deu foi excencial... depois disso tive alguns outros problemas meio sem sentido... Mais no final ele me ajudou mais uma vez a resolver o problema. Assim ficaram os blocos de códigos:

 

<?
session_start();

$code  = $_GET['code'];
$image  = $_GET['image'];

$_SESSION['item'][] = $code."-".$image;

?>

<?
session_start();
for($i = 0; $i < sizeof($_SESSION); $i++){
	echo $_SESSION['item'][$i];
	echo "<br />";
}
?>

Isso resolveu o problema que citei no primeiro post. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Obrigado Beraldo e Diego. http://forum.imasters.com.br/public/style_emoticons/default/clap.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.