Ir para conteúdo

POWERED BY:

Arquivado

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

Mateus Demboski

Cannot use a scalar value as an array in

Recommended Posts

Boa tarde galera!

Então, já estou desesperado aqui, possuo o seguinte erro:

'Cannot use a scalar value as an array in carrinho.php on line 26'

 

Este é meu código da linha 26 a 32

$_SESSION['carrinho'][$proId] = array(
            'codigo'    => $proId,
            'nome'      => $proNome,
            'valor'     => $valorCarrinho,
            'quantidade'=> 1,
            'peso'      => $proPeso
        );

já tentei:

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

 

e nada... já arranquei 80% do meu cabelo a ainda não achei o erro, portanto, pelo amor de deus, alguem me ajuda!!! :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mateus,

Creio que o erro não esta na montagem do array, mas sim nas variáveis que esta passando dentro dele.



Certifique-se de que o $valorCarrinho não esta vazio "null".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça uma verificação em cada variável substituindo-as.Ex:

$_SESSION['carrinho'][1] = array(
    'codigo'    => 1,
    'nome'      => '$proNome',
    'valor'     => 300,
    'quantidade'=> 1,
    'peso'      => 10
);

faça isso em uma variável por vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça uma verificação em cada variável substituindo-as.Ex:

$_SESSION['carrinho'][1] = array(
    'codigo'    => 1,
    'nome'      => '$proNome',
    'valor'     => 300,
    'quantidade'=> 1,
    'peso'      => 10
);

faça isso em uma variável por vez.

 

Testei aqui... se for só um resultado vái... se eu tento adicionar mais itens no carrinho retorna também:

Warning: Invalid argument supplied for foreach() in carrinho.php on line 65

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim...

$carrinhoQuery =$conexao->prepare('SELECT idprodutos, pro_nome, pro_valor, pro_valor_promocional, pro_peso FROM produtos WHERE idprodutos=?');
    $carrinhoQuery->bind_param('i', $idp);
    $carrinhoQuery->execute();
    $carrinhoQuery->bind_result($proId, $proNome, $proValor, $proValorPromo, $proPeso);
    $carrinhoQuery->store_result();
    if($carrinhoQuery->num_rows == 1 AND $carrinhoQuery->fetch()){
        $valorCarrinho = $proValor;
        if($proValor != $proValorPromo AND $proValorPromo != 0 AND $idp != 1 ){
            $valorCarrinho = $proValorPromo;
        }


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

        if(!isset($_SESSION['carrinho'][$proId])){
            $_SESSION['carrinho'][$proId] = array();
            $_SESSION['carrinho'][$proId]['codigo']     = $proId;
            $_SESSION['carrinho'][$proId]['nome']       = $proNome;
            $_SESSION['carrinho'][$proId]['valor']      = $valorCarrinho;
            $_SESSION['carrinho'][$proId]['quantidade'] = 1;
            $_SESSION['carrinho'][$proId]['peso']       = $proPeso;
        }
        if(count($_SESSION['carrinho']) > 1 AND isset($_SESSION['carrinho'][1])){
            $_SESSION['carrinho'][1]['valor'] = $conexao->query('SELECT pro_valor_promocional FROM produtos WHERE idprodutos=1')->fetch_object()->pro_valor_promocional;
        }
    }
    $carrinhoQuery->close();

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

sim...

$carrinhoQuery =$conexao->prepare('SELECT idprodutos, pro_nome, pro_valor, pro_valor_promocional, pro_peso FROM produtos WHERE idprodutos=?');
    $carrinhoQuery->bind_param('i', $idp);
    $carrinhoQuery->execute();
    $carrinhoQuery->bind_result($proId, $proNome, $proValor, $proValorPromo, $proPeso);
    $carrinhoQuery->store_result();
    if($carrinhoQuery->num_rows == 1 AND $carrinhoQuery->fetch()){
        $valorCarrinho = $proValor;
        if($proValor != $proValorPromo AND $proValorPromo != 0 AND $idp != 1 ){
            $valorCarrinho = $proValorPromo;
        }


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

        if(!isset($_SESSION['carrinho'][$proId])){
            $_SESSION['carrinho'][$proId] = array();
            $_SESSION['carrinho'][$proId]['codigo']     = $proId;
            $_SESSION['carrinho'][$proId]['nome']       = $proNome;
            $_SESSION['carrinho'][$proId]['valor']      = $valorCarrinho;
            $_SESSION['carrinho'][$proId]['quantidade'] = 1;
            $_SESSION['carrinho'][$proId]['peso']       = $proPeso;
        }
        if(count($_SESSION['carrinho']) > 1 AND isset($_SESSION['carrinho'][1])){
            $_SESSION['carrinho'][1]['valor'] = $conexao->query('SELECT pro_valor_promocional FROM produtos WHERE idprodutos=1')->fetch_object()->pro_valor_promocional;
        }
    }
    $carrinhoQuery->close();

 

 

if(!isset($_SESSION['carrinho'][$proId])){
    $_SESSION['carrinho'][$proId] = array();
    $_SESSION['carrinho'][$proId]['codigo']     = $proId;
    $_SESSION['carrinho'][$proId]['nome']       = $proNome;
    $_SESSION['carrinho'][$proId]['valor']      = $valorCarrinho;
    $_SESSION['carrinho'][$proId]['quantidade'] = 1;
    $_SESSION['carrinho'][$proId]['peso']       = $proPeso;
}

Você esta verificando se não foi criado a $_SESSION['carrinho']? ai ele seta os valores, tem certeza que esta correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok... parei para interpretar a mensagem de erro agora: 'Você não pode usar uma session como um array $_SESSION['carrinho']...'

Então, como aqui no servidor da empresa eu consigo?! :wacko:

 

 

if(!isset($_SESSION['carrinho'][$proId])){
    $_SESSION['carrinho'][$proId] = array();
    $_SESSION['carrinho'][$proId]['codigo']     = $proId;
    $_SESSION['carrinho'][$proId]['nome']       = $proNome;
    $_SESSION['carrinho'][$proId]['valor']      = $valorCarrinho;
    $_SESSION['carrinho'][$proId]['quantidade'] = 1;
    $_SESSION['carrinho'][$proId]['peso']       = $proPeso;
}

Você esta verificando se não foi criado a $_SESSION['carrinho']? ai ele seta os valores, tem certeza que esta correto?

 

 

não..., eu verifico se o produto de ID $proId já está no carrinho... :natalhappy:

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok... parei para interpretar a mensagem de erro agora: 'Você não pode usar uma session como um array $_SESSION['carrinho']...'

Então, como aqui no servidor da empresa eu consigo?! :wacko:

 

Eu acho que pode, pois uma SESSION é um array.

 

ok... parei para interpretar a mensagem de erro agora: 'Você não pode usar uma session como um array $_SESSION['carrinho']...'

Então, como aqui no servidor da empresa eu consigo?! :wacko:

 

 

 

não..., eu verifico se o produto de ID $proId já está no carrinho... :natalhappy:

 

ata..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esses dias eu havia feito um carrinho com o seguindo código:

<?php

if(isset($_GET['acao'])){
	
 if($_GET['acao'] == 'add'){
	$id = intval($_GET['cod']);
	if(!isset($_SESSION['carrinho'][$id])){
	   $_SESSION['carrinho'][$id] = 1;
	}else{
	   $_SESSION['carrinho'][$id] += 1;
	}
 }
	
	
	 if($_GET['acao'] == 'del'){
		$id = intval($_GET['cod']);
		if(isset($_SESSION['carrinho'][$id])){
		   unset($_SESSION['carrinho'][$id]);
		}
	 }
	  

	 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]);
			  }
		   }
		}
	 }
	
}

if(count($_SESSION['carrinho']) == 0){
        echo '<tr><td colspan="5">Não há produto no carrinho</li></tr>';
     }else{
       
		$conexao = mysql_connect('localhost','root','');
	
		mysql_select_db('farmacia',$conexao);
	   
        $total = 0;
        foreach($_SESSION['carrinho'] as $id => $qtd){
              $sql   = "SELECT *  FROM tb_produto WHERE codigo = '$id'";
              $qr    = mysql_query($sql) or die(mysql_error());
              $ln    = mysql_fetch_assoc($qr);
               
              $descricao  = $ln['descricao'];
              $preco = number_format($ln['preco'], 2, ',', '.');
              $sub   = number_format($ln['preco'] * $qtd, 2, ',', '.');
               
              $total += $ln['preco'] * $qtd;
            
           echo '<form action="?acao=up" method="post">
		   <ul>      
                 <li>'.substr($descricao, 0,13).'</li>
                 <li><input style="width:30px; height:10px;" type="text" name="prod['.$id.']" value="'.$qtd.'" /></li>
                 <li>R$ '.$preco.'</li>
                 <li>R$ '.$sub.'</li>
                 <li><a href="?acao=del&cod='.$id.'">Remove</a></li>
              </ul>';
        }
           $total = number_format($total, 2, ',', '.');
		   
           echo '
		   	<ul>
                    <li style="background-color:#CCC; width:465px;">Total</li>
                    <li>R$ '.$total.'</li>
					<li><input style="" type="submit" value="Atualizar Carrinho" /></li>
              </ul>
			 </form>';
     }

?>


Como pode ver eu criei um array de $_SESSION.

 

linha 08

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.