Problemas com função
Bom dia pessoal!!
Estou trabalhando num sistema de carrinho de compras
mas tenho encontrado grande dificuldade em fazer as
funções funcionarem certinho........
Vou postar o código do carrinho e da classe do carrinho
se alguém puder me ajudar....
está dando erro na função: ObtemSubTotalDeUmItem($cad_id,$cad_valor)
carrinho:
CODE
include("conecta.php");
include ("TCarrinho.php");
session_start();
echo $id_prod;
//Verificando se a variavel de sessão foi criada
if (!session_is_registered("MeuCarrinho")){
session_register("MeuCarrinho");
$MeuCarrinho = new TCarrinho();
}
if (!empty($op)){
switch ($op) {
case "adicionar":
if (!empty($id_prod)){
$Query = "SELECT cad_id FROM a_cad_produtos WHERE cad_id = $id_prod";
$R_Query = mysql_query($Query);
$cad_id = $R_Query['cad_id'];
if (mysql_num_rows($R_Query)>0){
$MeuCarrinho->AdicionarItem($cad_id,1);
}
}
break;
case "excluir":
$MeuCarrinho->RemoverItem($cad_id);
break;
case "atualizar":
$MeuCarrinho->AtualizarCarrinho($HTTP_POST_VARS);
break;
case "finalizar":
if ($MeuCarrinho->QuantosItens()>0) {
header("Location:CarrinhoFinal.php");
}
break;
}
}
$cad_id = $R_Query['cad_id'];
$QuerySQL = "SELECT cad_id, cad_nome, cad_valor FROM a_cad_produtos WHERE cad_id='$id_prod' "; //. $MeuCarrinho->QuerySQL_ObtemListaDeItens();
echo $QuerySQL;
$Resultado = mysql_query($QuerySQL);
?>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Mozilla/4.7 [en] (Win98; I) [Netscape]">
<title></title>
<body>
<br>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=1 WIDTH="100%" BGCOLOR="#0080C0" >
<tr>
<td>
<center>
<p><b><font color="#FFFFFF">PEDIDO</font></b></p>
</center>
</td>
</tr>
</table>
<table BORDER=0 CELLSPACING=2 CELLPADDING=4 COLS=5 WIDTH="100%" BGCOLOR="#FFFFFF" >
<tr BGCOLOR="#004080">
<td>
<center><b><font color="#FFFF99">ITEM</font></b></center>
</td>
<td>
<center><b><font color="#FFFF99">QTD.</font></b></center>
</td>
<td>
<center><b><font color="#FFFF99">PREÇO UNITÁRIO</font></b></center>
</td>
<td>
<center><b><font color="#FFFF99">TOTAL</font></b></center>
</td>
<td BGCOLOR="#FFFFFF"></td>
</tr>
<form method="post" action="carrinho.php?op=atualizar">
<?php
$preco_total = 0.00;
while(list($cad_id, $cad_nome, $cad_valor) = mysql_fetch_row($Resultado)) {
//Computando preco total
$preco_total = $preco_total + $MeuCarrinho->ObtemSubTotalDeUmItem($cad_id,$cad_valor);
echo "
<tr BGCOLOR=#DADADA>
<td><font size=-1>". $cad_nome ."</font></td>
<td>
<center><input type=TEXT name=". $cad_id ." size=2 value=". $MeuCarrinho->ObtemQuantidadeItem($cad_id) ."></center>
</td>
<td>
<center><b>R$ ". $cad_valor ."</b></center>
</td>
<td>
<center><b>". $MeuCarrinho->ObtemSubTotalDeUmItem($cad_id,$cad_valor) ."</b></center>
</td>
<td><b><font face=Tahoma><font size=-2><a href=carrinho.php?op=excluir&id_prod=". $cad_id .">Excluir</a></font></font></b></td>
</tr>
";
}
?>
Classe do carrinho:
CODE
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($cad_id,&$posicao){
//Percorrendo o vetor
for($i=0;$i<count($this->item_codigo);$i++) {
if ($this->item_codigo[$i] == $cad_id) {
$posicao = $i;
return TRUE;
}
}
}/* ObtemPosicao() */
/*
AdicinarItem
Este metodo adiciona um item no carrinho
*/
function AdicionarItem($cad_id,$quantidade)
{
//Inicializando parametro
$posicao = -1;
$achou = $this->ObtemPosicao($cad_id,$posicao);
if (!$achou){
$this->item_codigo[] = $cad_id;
$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 = " cad_id = '$cad_id'";
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 cad_id = -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($cad_id,$cad_valor){
$posicao = -1;
$achou = $this->ObtemPosicao($cad_id,$posicao);
if ($achou) {
return ($this->item_quantidade[$posicao]*$cad_valor);
}else{
return "erro ao obter sub total do item";
}
} /* ObtemSubTotalDeUmItem() */
/*
AtualizarCarrinho
Este método 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 /
?>
Discussão (5)
Carregando comentários...