Ir para conteúdo

POWERED BY:

Arquivado

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

André Ricardo Theodoro

parte final

Recommended Posts

Boa tarde pessoal!!

 

Preciso de ajuda na parte final do meu carrinho

de compras!!

Já estou 1 tempão desenvolvendo este código e

não consigo achar a solução!!

 

O problema é o seguinte:

Após finalizado a compra o carrinho deve

gravar na tabela pedidos o valor de cada produto

e deve gerar 1 e-mail contendo o nome

do produto, seu código, valor unitário e valor total!

 

Esse é o código:

CODE
include("config.php");

include("TCarrinho.php");

include("TMySQL.php");

session_start();

 

$data = date("Y-m-d H:i:s");

 

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

 

//Selecionando registros da tabela de usuários

$cad_nome = $_SESSION["cad_nome"];

$DB = mysql_select_db("a_cad_usuario");

$SQL = "SELECT * FROM a_cad_usuario WHERE cad_nome = '$cad_nome'";

$Resultado = mysql_query($SQL) or die("ERRO NO COMANDO SQL" . mysql_error());

 

while ($l=mysql_fetch_array($Resultado)) {

$id_cliente = $l['cad_id'];

$cad_email = $l['cad_email'];

$cad_cpf = $l['cad_cpf'];

$cad_cnpj = $l['cad_cnpj'];

}

//Requisitanto o codigo do pedido

$Resultado = $MySQL->query("select max(id_pedidos) from a_cad_pedidos");

 

if (mysql_result($Resultado,0,"max(id_pedidos)") != ""){

$CODIGO_PEDIDO = mysql_result($Resultado,0,"max(id_pedidos)") + 1;

}else{

$CODIGO_PEDIDO = 1;

}

 

$preco_total = $_SESSION["preco_total"];

 

//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_pedidos,id_produto,

id_cliente,cad_quantidade,cad_valor_total,cad_data)

VALUES (". $CODIGO_PEDIDO .",". $MeuCarrinho->item_codigo[$i] .",

'$id_cliente',". $MeuCarrinho->item_quantidade[$i] .",

'$preco_total', '$data')")

or die("ERRO NO COMANDO SQL" . mysql_error());

}

 

//

 

$produto .= $MeuCarrinho->R_Query["item_codigo"] . "|";

$quantidade .= $MeuCarrinho->R_Query["item_quantidade"] . "|";

 

//Removendo o Carrinho

session_unregister("MeuCarrinho");

}

?>

<?

if (session_is_registered("MeuCarrinho")){

?>

<? echo "<p><b>Confirme a finalização do seu pedido!</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" >

<div align="center">

</FORM>

<?

}else{

//Selecionando registros da tabela de pedidos

$db = mysql_select_db("a_cad_pedidos");

$sql = "SELECT * FROM a_cad_pedidos WHERE id_pedidos = '$CODIGO_PEDIDO'";

$resultado = mysql_query($sql) or die("ERRO NO COMANDO SQL" . mysql_error());

 

while ($linha=mysql_fetch_array($resultado)) {

$id_cod = $linha['id_produto'];

$cad_data = $linha['cad_data'];

}

//Selecionando registros da tabela de produtos

for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {

$QuerySQL = ("SELECT cad_preco, cad_nome

FROM a_cad_produtos WHERE ID_COD =". $MeuCarrinho->item_codigo[$i] ."")

or die("ERRO NO COMANDO SQL" . mysql_error());

$Result = mysql_query($QuerySQL);

}

 

/*$sql = mysql_query("Select nome From tabela");

$produtos = array();

while ($f = mysql_fetch_object($sql))

{

$produtos[] = $f->nome;

}

*/

 

$i = 0;

$preco = array();

$nome = array();

while ($f = mysql_fetch_array($Result))

{

$preco[$i] = $f->cad_preco;

$nome[$i] = $f->cad_nome;

}

 

echo $preco[$i] ."preco \n";

echo $nome[$i] ."nome \n";

 

for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {

$MySQL->query("UPDATE a_cad_pedidos SET cad_valor = ". $preco[$i] ." WHERE id_pedidos ='$CODIGO_PEDIDO'")

or die("ERRO NO COMANDO SQL" . mysql_error());

}

 

//menssagem do e-mail

$msg= "PEDIDO: ". $CODIGO_PEDIDO ."\n";

$msg= $msg. "CLIENTE: " .$_SESSION["cad_nome"]. "\n";

$msg= $msg. "CPF/CNPJ: " .$cad_cpf. "" .$cad_cnpj. "\n";

$msg= $msg. "E-MAIL: " .$cad_email. "\n";

$msg= $msg. "DATA/HORA: " .$data. "\n";

$msg= $msg. "___________________________________ \n";

$msg= $msg. $nom ."\n";

 

// teste para envio dos produtos 2//

for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {

$msg= $msg. "PRODUTO: ". $nome[$i] ."\n";

$msg= $msg. "CÓDIGO: ". $MeuCarrinho->item_codigo[$i] ."\n";

$msg= $msg. "QUANTIDADE: ". $MeuCarrinho->item_quantidade[$i] ."\n";

$msg= $msg. "VALOR UNITÁRIO: R$ ". $preco[$i] ."\n";

$msg= $msg. "___________________________________ \n";

$msg= $msg. $nom ."\n";

}

$msg= $msg. "TOTAL DO PEDIDO: R$ ". $_SESSION["preco_total"] ."\n";

$msg= $msg. "___________________________________ \n";

 

$MeuCarrinho->QuantosItens = explode("|",$produto);

$MeuCarrinho->QuantosItens = explode("|",$quantidade);

 

//for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) { }

for($i=0;count($MeuCarrinho->QuantosItens)> $i;$i++){

if(strlen($MeuCarrinho->QuantosItens[$i])>0){

 

$msg= $msg.= " <b>" . $QuantosItens[$i] . "</b>";

$msg= $msg.= " <b>" . $QuantosItens[$i] . "</b>";

 

}

}

// dados para envio //

$cabecalho = "Pedidos \n";

 

mail("laboratorio@webdibula.com.br",$cabecalho,$msg,"From:Pedidos ");

 

 

echo "<br><center><b><h3>Parabéns seu pedido foi realizado com sucesso!</h3></b></center>";

}

?>

 

O e-mail está sendo enviado mas o nome

de cada produto e seu respectvo valor

não são enviados, e , naum grava o valor

unitário de cada produto na tabela pedidos!

 

Ajudem-me por favor!!!!!!!!

 

:wacko:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui gravar na tabela pedidos o preço unitário

mas acho q o array não está funcionando pq grava somente

o 1º preço em todos os produtos.......

a parte onde está o array é esta:

//Selecionando registros da tabela de produtos
for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {
$QuerySQL = ("SELECT cad_preco, cad_nome 
FROM a_cad_produtos WHERE ID_COD =". $MeuCarrinho->item_codigo[$i] ."") 
or die("ERRO NO COMANDO SQL" . mysql_error());
$Result = mysql_query($QuerySQL);
}
 
/*$sql = mysql_query("Select nome From tabela");
$produtos = array();
while ($f = mysql_fetch_object($sql))
{
	$produtos[] = $f->nome;
}
*/

$i = 0;
$preco = array();
$nome  = array();
while ($f = mysql_fetch_object($Result))
{
	$preco[$i] = $f->cad_preco;
	$nome[$i]  = $f->cad_nome;
}

echo $preco[$i] ."preco \n";
echo $nome[$i] ."nome \n";

for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {
$MySQL->query("UPDATE a_cad_pedidos SET cad_valor = ". $preco[$i] ." WHERE id_pedidos ='$CODIGO_PEDIDO'") 
or die("ERRO NO COMANDO SQL" . mysql_error()); 
}

O erro q está dando é este:

UPDATE a_cad_pedidos SET cad_valor = WHERE id_pedidos ='9'ERRO NO COMANDO SQLYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_pedidos ='9'' at line 1

 

E o e-mail não está sendo enviado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

André oq ue ele grava no banco????

 

 

so as FK ou não ta gravando nada na tabela pedido:::???

 

André oq ue ele grava no banco????

 

 

so as FK ou não ta gravando nada na tabela pedido:::???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só Bruno....

ele grava o primeiro Insert todo certinho:

$MySQL->query("INSERT INTO a_cad_pedidos (id_pedidos,id_produto,
id_cliente,cad_quantidade,cad_valor_total,cad_data) 
VALUES (". $CODIGO_PEDIDO .",". $MeuCarrinho->item_codigo[$i] .",
'$id_cliente',". $MeuCarrinho->item_quantidade[$i] .", 
'$preco_total', '$data')") 
or die("ERRO NO COMANDO SQL" . mysql_error());

O problema está no Update, q é onde ele deveria gravar

o preço de cada produto!!!!

 

você qr a estrutura da tabela pra ver!?

tabela a_pedidos:

CREATE TABLE `a_cad_pedidos` (

`id` int(4) NOT NULL auto_increment,

`id_pedidos` int(4) NOT NULL,

`id_produto` tinyint(4) NOT NULL,

`id_cliente` int(4) NOT NULL,

`cad_quantidade` tinyint(4) NOT NULL,

`cad_valor` int(11) NOT NULL,

`cad_valor_total` int(11) NOT NULL,

`cad_data` datetime NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=737 ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja tentou colocar o valor como float ????

 

ele ta dando erro na execução.

 

ja experimentou colocar a sintaxe desse updade direto no phpmyadmin

 

ou melhor de imprimir os valores do array onde contem o preço ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei agora mudar o valor pra float e naum adiantou.....

.........colokr direto no phpmyadmin......

como se faz isso!?

 

Qnto a tentar imprimir os valores eu tentei sim!

Imprime só o 1º valor:

//Selecionando registros da tabela de produtos
for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {
$QuerySQL = ("SELECT cad_preco, cad_nome 
FROM a_cad_produtos WHERE ID_COD =". $MeuCarrinho->item_codigo[$i] ."") 
or die("ERRO NO COMANDO SQL" . mysql_error());
$Result = mysql_query($QuerySQL);
}

/*$sql = mysql_query("Select nome From tabela");
$produtos = array();
while ($f = mysql_fetch_object($sql))
{
	$produtos[] = $f->nome;
}
*/

$i = 0;
$preco = array();
$nome  = array();
while ($f = mysql_fetch_object($Result))
{
	$preco[$i] = $f->cad_preco;
	$nome[$i]  = $f->cad_nome;
}

echo $preco[$i] ."preco \n";
echo $nome[$i] ."nome \n";

Eu acho q o erro ta no array!

Compartilhar este post


Link para o post
Compartilhar em outros sites

não deveria ter um contado aqui nesse while

 

while ($f = mysql_fetch_object($Result))

{

$preco[$i] = $f->cad_preco;

$nome[$i] = $f->cad_nome;

}

 

 

tipo um $i++;

 

coloca ae o que ta escrevendo na tela..

 

 

echo $preco[$i] ."preco \n";

echo $nome[$i] ."nome \n";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde pessoal!!

 

Acho q eu descobri ond está o erro,

é o seguinte:

No UPDATE ele altera o campo cad_valor colocando

o array dentro deste campo!

Ele faz isso em todos os registros que tiverem o id_pedidos = $CODIGO_PEDIDO!

O problema é q, por exemplo, eu tenho 3 campos registrados com o mxmo

id_pedidos!!!

Ele acaba gravando só 1 registro do array!

Acho q é porq o id_pedidos é igual em todos......

 

vou postar o código denovo aqui!:

//Selecionando registros da tabela de produtos
for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {
$QuerySQL = ("SELECT cad_preco, cad_nome 
FROM a_cad_produtos WHERE ID_COD =". $MeuCarrinho->item_codigo[$i] ."") 
or die("ERRO NO COMANDO SQL" . mysql_error());
$Result = mysql_query($QuerySQL);
}

$i = 0;
$preco = array();
$nome  = array();
while ($f = mysql_fetch_object($Result))
{
	$preco[$i] = $f->cad_preco;
	$nome[$i]  = $f->cad_nome;
	$i++;
}

echo $preco[$i] ."preco \n";
echo $nome[$i] ."nome \n";

for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {
$MySQL->query("UPDATE a_cad_pedidos SET cad_valor = ". $preco[$i] ." WHERE id_pedidos =". $CODIGO_PEDIDO ."") 
or die("ERRO NO COMANDO SQL " . mysql_error());

Alguém sabe se tem como eu conseguir

gravar o array dentro do campo cad_valor!

for($i=0;$i<$MeuCarrinho->QuantosItens();$i++) {
$MySQL->query("UPDATE a_cad_pedidos SET cad_valor = ". $preco[$i] ." WHERE id_pedidos =". $CODIGO_PEDIDO ."") 
or die("ERRO NO COMANDO SQL " . mysql_error());

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.