Erro desconhecido
Boa tarde galera!
Estou trabalhando em um código de carrinho de compras,
e após muitas dificuldades consegui chegar na parte final do
código......
O problema é que está dando um erro que eu desconheço totalmente.
O erro é este:
Fatal error: main() [<a href='function.main'>function.main</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "TCarrinho" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /home/webdi/public_html/laboratorio/acesso/php/carrinho/CarrinhoFinal.php on line 111
A página de finalização é esta:
CODE
include("config.php");
include("TCarrinho.php");
include("TMySQL.php");
session_start();
/*if (!session_is_registered("MeuCarrinho")){
header("Location:carrinho.php");
}else{
if ($MeuCarrinho->QuantosItens() == 0) {
header("Location:carrinho.php");
}
}*/
if (!empty($HTTP_POST_VARS["FORM"])){
//Abrindo conexao com o banco de dados
$MySQL = new TMySQL();
$MySQL->connect($host, $db, $user, $pass);
//Requisitanto o codigo do pedido
$Resultado = $MySQL->query("select max(id_pedido) from a_cad_pedidos");
if (mysql_result($Resultado,0,"max(id_pedido)") != ""){
$CODIGO_PEDIDO = mysql_result($Resultado,0,"max(id_pedido)") + 1;
}else{
$CODIGO_PEDIDO = 1;
}
//Gravando no banco de dados os item contidos no carrinho
for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {
$MySQL->query("INSERT INTO a_cad_pedidos (id_pedido, id_produto, cad_quantidade, cad_data) VALUES (". $CODIGO_PEDIDO .",". $MeuCarrinho->item_codigo[$i] .",". $MeuCarrinho->item_quantidade[$i] ."NOW())");
}
//Removendo o Carrinho
session_unregister("MeuCarrinho");
}
?>
<?
if (session_is_registered("MeuCarrinho")){
?>
<b>Finalizando Compra - Confirmação </b>
<FORM METHOD="POST" ACTION="CarrinhoFinal.php">
<INPUT TYPE="hidden" NAME="FORM" VALUE="FORM">
<input type="submit" value="Finalizar" name="Finalizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)">
</FORM>
<?
}else{
echo "<center><b><h3>Parabéns seu pedido foi realizado com sucesso!</h3></b></center>";
}
?>
E a página com a classe TCarrinho é esta:
CODE
<?php
/*
Classe TCarrinho
*/
class TCarrinho {
var $item_codigo = array();
var $item_quantidade = array();
/*
ObtemPosicao
Este metodo obtem a posicao de um item mediante ao seu codigo, retornando um valor booleano e gravando a posicao na variavel de referencia $posicao, caso o codigo do item esteja no carrinho.
*/
function ObtemPosicao($codigo,&$posicao){
//Percorrendo o vetor
for($i=0;$i<count($this->item_codigo);$i++) {
if ($this->item_codigo[$i] == $codigo) {
$posicao = $i;
return TRUE;
}
}
}/* ObtemPosicao() */
/*
AdicinarItem
Este metodo adiciona um item no carrinho
*/
function AdicionarItem($codigo,$quantidade)
{
//Inicializando parametro
$posicao = -1;
$achou = $this->ObtemPosicao($codigo,$posicao);
if (!$achou){
$this->item_codigo[] = $codigo;
$this->item_quantidade[] = $quantidade;
}
} /* AdicionarItem() */
/*
RemoverItem
Este metodo remove um item do carrinho de compra, passando o codigo do produto
*/
function RemoverItem($codigo)
{
//Inicializando parametro
$posicao = -1;
$achou = $this->ObtemPosicao($codigo,$posicao);
if ($achou){
//Removendo o elemento do vetor
array_splice($this->item_codigo, $posicao, 1);
array_splice($this->item_quantidade, $posicao, 1);
}
} /* RemoveItem() */
/*
QuantosItens
Este metodo retorna a quantidade de itens incluidas no carrinho de compras
*/
function QuantosItens() {
return count($this->item_quantidade);
} /* QuantosItens() */
/*
ExcluirTodosItens
Este metodo retira todos os itens contidos no carrinho de compras
*/
function ExcluirTodosItens(){
$this->item_quantidade = null;
$this->item_codigo = null;
} /* ExcluirTodosItens() */
/*
QuerySQL_ObtemListaDeItens
Este metodo gera uma parte do codigo SQL que sera usado para buscar os dados
do carrinho de compra (ID_COD, NOME e PREÇO). O comando SQL final tera como finalidade
de buscar no banco de dados apenas os dados dos itens incluidos no carrinho.
*/
function QuerySQL_ObtemListaDeItens(){
$itens = "where ";
$STR = "";
if ($this->QuantosItens()>0) {
$fixo = " id_cod =";
for ($i=0;$i<$this->QuantosItens();$i++){
$STR = $STR . $fixo . " " . $this->item_codigo[$i];
if ($i+1<$this->QuantosItens()) {
$STR = $STR . " or ";
}
}
}
if (!$STR == "") {
return $itens . $STR;
}else{
//Caso não exista nenhum item no carrinho o codigo final SQL, procurara por um item que não existe na tabela de produtos, neste caso -1.
return "where id_cod = -1";
}
} /* QuerySQL_ObtemListaDeItens() */
/*
ObtemQuantidadeItem
Este metodo obtem a quantidade de um Item
*/
function ObtemQuantidadeItem($codigo){
$posicao = -1;
$achou = $this->ObtemPosicao($codigo,$posicao);
if ($achou) {
return $this->item_quantidade[$posicao];
}else{
return "erro ao obter quantidade do item";
}
} /* ObtemQuantidaItem() */
/*
ObtemSubTotalDeUmItem
Este metodo retorna o subtotal de um item (QUANTIDADE * VALOR UNITARIO)
*/
function ObtemSubTotalDeUmItem($ID_COD,$preco){
$posicao = -1;
$achou = $this->ObtemPosicao($ID_COD,$posicao);
if ($achou) {
return ($this->item_quantidade[$posicao]*$preco);
}else{
return "erro ao obter sub total do item";
}
} /* ObtemSubTotalDeUmItem() */
/*
AtualizarCarrinho
Este metodo coleta todos as variaveis enviadas pelo FORMULARO (method="POST")
e atualiza as quantidades dos itens.
*/
function AtualizarCarrinho(&$VAR_ENVIADAS_PELO_BROWSER){
//Percorrendo a lista de itens e atualizando suas quantidades
for ($i=0;$i<$this->QuantosItens();$i++){
$this->item_quantidade[$i] = $VAR_ENVIADAS_PELO_BROWSER[$this->item_codigo[$i]];
}
} /* AtualizarCarrinho() */
} / Classe TCarrinho /
?>
Se alguém puder me ajudar!!
Estou desesperado para acabar esse sistema!!
:wacko:
Discussão (2)
Carregando comentários...