Ir para conteúdo

POWERED BY:

Arquivado

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

andersonseifert

Problema com session_start();

Recommended Posts

Boa noite, galera estou com problema com minha session estou desenvolvendo um carrinho de compra

quando clico em comprar é redirecionado no meu Array e nao lista o que eu adicionei aparece o error :

 

 

 Notice: A session had already been started - ignoring session_start() in C:\wamp\www\Pizzaria\ControlePage\carrinho\carrinho.php on line 3

carrinho.php

 



<?php
session_start(); //LINHA COM ERRO

$conexao = mysql_connect('localhost', 'root', '');
$db = mysql_select_db('pizza');

if (!isset($_SESSION['carrinho'])) {
$_SESSION['carrinho'] = array();
}

//adiciona produto

if (isset($_GET['acao'])) {

//ADICIONAR CARRINHO
if ($_GET['acao'] == 'add') {
$id = intval($_GET['id']);
if (!isset($_SESSION['carrinho'][$id])) {
$_SESSION['carrinho'][$id] = 1;
} else {
$_SESSION['carrinho'][$id] += 1;
}
}

//REMOVER CARRINHO
if ($_GET['acao'] == 'del') {
$id = intval($_GET['id']);
if (isset($_SESSION['carrinho'][$id])) {
unset($_SESSION['carrinho'][$id]);
}
}

//ALTERAR QUANTIDADE
if ($_GET['acao'] == 'up') {
if (is_array($_POST['prod'])) {
foreach ($_POST['prod'] as $id => $qtd) {
$id = intval($id);
$qtd = intval($qtd);
if (!empty($qtd) || $qtd <> 0) {
$_SESSION['carrinho'][$id] = $qtd;
} else {
unset($_SESSION['carrinho'][$id]);
}
}
}
}
}
?>

<!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>Carrinho de Compras</title>
</head>

<body>
<table>
<caption>Carrinho de Compras</caption>
<thead>
<tr>
<th width="244">Produto</th>
<th width="79">Quantidade</th>
<th width="89">Preço</th>
<th width="100">SubTotal</th>
<th width="64">Remover</th>
</tr>
</thead>
<form action="?acao=up" method="post">
<tfoot>
<tr>
<td colspan="5"><input type="submit" value="Atualizar Carrinho" /></td>
<tr>
    <td colspan="5"><a href="home.php?p=2">Continuar Comprando</a></td>
    </tfoot>

    <tbody>
        <?php
        if (count($_SESSION['carrinho']) == 0) {
            echo '<tr><td colspan="5">N�o h� produto no carrinho</td></tr>';
        } else {
            require("dao/conexao.php");
            $total = 0;
            foreach ($_SESSION['carrinho'] as $id => $qtd) {
                $sql = "SELECT *  FROM cardapio WHERE id= '$id'";
                $qr = mysql_query($sql) or die(mysql_error());
                $ln = mysql_fetch_assoc($qr);

                $nome = $ln['nome'];
                $preco = number_format($ln['preco'], 2, ',', '.');
                $sub = number_format($ln['preco'] * $qtd, 2, ',', '.');

                $total += $ln['preco'] * $qtd;

                echo '<tr>      
 <td>' . $nome . '</td>
 <td><input type="text" size="3" name="prod[' . $id . ']" value="' . $qtd . '" /></td>
 <td>R$ ' . $preco . '</td>
 <td>R$ ' . $sub . '</td>
 <td><a href="?acao=del&id=' . $id . '">Remove</a></td>
</tr>';
            }
            $total = number_format($total, 2, ',', '.');
            echo '<tr>
    <td colspan="4">Total</td>
    <td>R$ ' . $total . '</td>
</tr>';
        }
        ?>

    </tbody>
    </form>
    </table>

    </body>
    </html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pelo que eu estudei até hoje, eu sei que não pode haver nada antes do DOCTYPE... o php antes do doctype deve estar colado nele, sem espaços antes ou depois, ficando assim:

 

<?php
//bla bla bla
?><!DOCTYPE>

 

Posso estar errado, mas acho que é isso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retira o sesson_start dessa página...

 

A gente inicia a sessão apenas em uma página, que é usada junto com todas as outras... Geralmente na pagina de conexao, e não ficar espalhando session_start em todas as paginas do site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas retire essa linha:

 

session_start(); //LINHA COM ERRO 

:yes:


pois o próprio erro já diz que a sessão já foi iniciada.

ou já foi iniciada na referida página, ou em outra página que voce está referenciando através de include etc..

 

 

Abraço.

 

 

 




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

É Fiz como o SANTOS flw o erro sumiu, tirei include e o so que agora nao esta adiciondo o produto no array quando clico em COMPRAR .

session_start(); //LINHA COM ERRO 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Otimo Hinom irei testar.



Galera nao deu certo, quando clico em comprar ele faz o redirecionamento para a proxina carrinho so que o produto nao é adicionado

de uma olhada no link

 

carrinho.php : http://pastebin.com/LzxQa3Jh

cardapio.php: http://pastebin.com/WxwT9eEu

 

outra coisa que percebi que na URL tinha que ficar assim :

http://localhost/carrinhocompra/carrinho.php?acao=add&id=1

 

mas nao ta ficando, ta aparecendo assim :

http://localhost/pizzaria/home.php?p=10

Compartilhar este post


Link para o post
Compartilhar em outros sites

Otimo Hinom irei testar.

 

Galera nao deu certo, quando clico em comprar ele faz o redirecionamento para a proxina carrinho so que o produto nao é adicionado

de uma olhada no link

 

carrinho.php : http://pastebin.com/LzxQa3Jh

cardapio.php: http://pastebin.com/WxwT9eEu

 

outra coisa que percebi que na URL tinha que ficar assim :

http://localhost/carrinhocompra/carrinho.php?acao=add&id=1

 

mas nao ta ficando, ta aparecendo assim :

http://localhost/pizzaria/home.php?p=10

 

Cara, localhost agente não vai ver seus código funcionando nunca, ou vc configura seu roteador com um ddns pra nós acessarmos, ou publica em algum domínio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma observação:

Evite passar parâmetros via GET, principalmente nesse tipo de transação.

Procure usar o POST que é mais seguro.

 

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raphael nao coloquei o local host para acessarem e sim para ver o que esta passando na Url Brother.

 

 

Galera alguem pode me ajudar ?

 

 

 

 

galera posso postar minhas classe onde uso session pra facilitar ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retornando, voce retirou essa linha certo?

session_start(); //LINHA COM ERRO 

 

Porque voce retirou o include? que página é essa que voce está incluindo é essa ?

require("dao/conexao.php");

 

 

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Santos estou chamando com Require amigo, desse jeito mesmo. So que quando eu clico em Comprar nao esta adicionando Produto, essas sao minhas classes :

 

cardapio.php (onde fica meu Comprar)

http://pastebin.com/m2uEZAyk

 

 

carrinho.php

http://pastebin.com/C2hJMYEJ

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este código funciona para mim:

 

<?php
session_start();

$_POST['prod'] = array(1 => 4.5 , 2 => 7 , 4 => 2.1);

echo '<pre>' ;
print_r($_SESSION);	
echo '</pre>' ;

//$conexao = mysql_connect('localhost', 'root', '');
//		$db = mysql_select_db('pizza');

if (!isset($_SESSION['carrinho']))
	$_SESSION['carrinho'] = array();

//adiciona produto
if (isset($_GET['acao'])) {

	//ADICIONAR CARRINHO
	if ($_GET['acao'] == 'add') {
		$id = intval($_GET['id']);
		if (!isset($_SESSION['carrinho'][$id]))
			$_SESSION['carrinho'][$id] = 1;
		else
			$_SESSION['carrinho'][$id] += 1;
	}

	//REMOVER CARRINHO
	else if ($_GET['acao'] == 'del') {
		$id = intval($_GET['id']);
		if (isset($_SESSION['carrinho'][$id]))
			unset($_SESSION['carrinho'][$id]);
	}

	//ALTERAR QUANTIDADE
	else if ($_GET['acao'] == 'up') {
		if (is_array($_POST['prod'])){
			foreach ($_POST['prod'] as $id => $qtd){
				$id = intval($id); /// -> não sei pra que isto, tento em vista que $id sempre é int
				$qtd = intval($qtd);
				if (!empty($qtd) || $qtd != 0)
					$_SESSION['carrinho'][$id] = $qtd;
				else
					unset($_SESSION['carrinho'][$id]);
			}
		}
	}
	else
		die('acao inesperada!');
		
	
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao deu certo, nao esta adicionando quando clico em COMPRAR.

 

Já que não temos sua base de dados, poste algumas linhas da tabela "cardapio" para que seja populado o array diretor no código.

 

Ou então, tente publicar em algum lugar que possa ser visto

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.