Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
boas... gostava de saber como posso pegar nos valores do carrinho de compras e juntar-lhe um formulario com os dados do cliente para de seguinda enviar via email os conteudos do carrinho e form...
eu percebo mas apenas o basico... nao sou nenhum expert no assunto, quando mete comandos mais complicados ja me atrapalha um pouco...
Mas tu entendeu a lógica que eu passei ?
sim entendi... ate criei um codigo mas n esta a funcionar la mt bem... aparece la que o carrinho esta vazio... ve:
<?
session_start();
include('conexao.php');
?>
<html>
<body>
<form action='enviarcompras.php' method='post'>
<?
$itens = mysql_query('SELECT * FROM carrinho,produtos WHERE carrinho.cod = produtos.id AND carrinho.sessao = "'.$sessao.'"');
if(mysql_num_rows($itens) < 1){
// Se o carrinho estiver vazio só exibe uma mensagem e um link para a loja
echo "<br><center> O Carrinho está Vazio!<br><br><a href='index.php'>Ir para a loja</a>";
} else {
?>
<center>
<img src='BannerCarrinho.png' border='0'><br>
<table bgcolor='#99cc33' cellpadding='5' cellspacing='1' width='800'>
<tr valign="middle">
<td bgcolor="#e3e3e3" width="40" align="left" valign="middle">
<font color='#99cc33' size='2'><b></b>
</td>
<td bgcolor="#e3e3e3" width="600" align="left" valign="middle">
<font color='#99cc33' size='2'><b>Lista de Produtos:</b>
</td>
<td bgcolor="#eeeeee" width="100">
<center>
<font color='#99cc33' size='2'><b>Preço Uni.</b>
</td>
<td bgcolor="#e3e3e3" width="50">
<center>
<font color='#99cc33' size='2'><b>Quant.</b>
</td>
<td bgcolor="#eeeeee" width="50">
<center>
<font color='#99cc33' size='2'><b>Opções</b>
</td>
</tr>
<?
// Dou um loop pra listar is itens do carrinho de compras
while($item = mysql_fetch_array($itens)){
?>
<tr valign="middle">
<td bgcolor="#e3e3e3" width="40" align="left" valign="middle">
<center><b><a href="detalhes.php?id=<? echo $item['cod'] ?>"><? echo '<img width=40 height=30 border=0 src="Imagens/'.$item['img'].'">' ?></a></b>
</td>
<td bgcolor="#e3e3e3" width="600" align="left" valign="middle">
<b><a href="detalhes.php?id=<? echo $item['cod'] ?>"><? echo $item['nome'] ?></a></b>
</td>
<td bgcolor="#eeeeee" width="100">
<center>
<b>€</b> <? echo number_format($item['preco'], 2, ',', '') ?>
</td>
<td bgcolor="#e3e3e3" width="50">
<center>
<input size='4' type='text' name='quantidade[<? echo $item["cod"] ?>]' value='<? echo $item["quant"] ?>'>
</td>
<td bgcolor="#eeeeee" width="50">
<center>
<a href='remover.php?id=<? echo $item["cod"] ?>'><img src='BotRemover.png' border='0'></a>
</td>
</tr>
<?
$total += $item['preco'] * $item['quant'];
}}
?>
</form>
</body>
</html>Pelo que vi, a var $sessao não existe e você colocou-a na query SQL. Logo ele não vai achar nada.
E usa JOINS, fica melhor http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif:
$sessao = session_id();
$sql = "SELECT * FROM carrinhos INNER JOIN produtos ON carrinhos.cod=produtos.id WHERE carrinhos.sessao='$sessao'";
faloja acrescentei os forms para inserir os dados pessoais, mas inda n esta bom e n sei como isto ira enviar junto com os dados do form, os produtos comprados... :o
<?
session_start();
include('conexao.php');
?>
<html>
<body>
<form action='enviarcompras.php' method='post'>
<?
$itens = mysql_query('SELECT * FROM carrinho,produtos WHERE carrinho.cod = produtos.id AND carrinho.sessao = "'.$sessao.'"');
if(mysql_num_rows($itens) < 1){
// Se o carrinho estiver vazio só exibe uma mensagem e um link para a loja
echo "<br><center> O Carrinho está Vazio!<br><br><a href='index.php'>Ir para a loja</a>";
} else {
?>
<center>
<img src='BannerCarrinho.png' border='0'><br>
<table bgcolor='#99cc33' cellpadding='5' cellspacing='1' width='800'>
<tr valign="middle">
<td bgcolor="#e3e3e3" width="40" align="left" valign="middle">
<font color='#99cc33' size='2'><b></b>
</td>
<td bgcolor="#e3e3e3" width="600" align="left" valign="middle">
<font color='#99cc33' size='2'><b>Lista de Produtos:</b>
</td>
<td bgcolor="#eeeeee" width="100">
<center>
<font color='#99cc33' size='2'><b>Preço Uni.</b>
</td>
<td bgcolor="#e3e3e3" width="50">
<center>
<font color='#99cc33' size='2'><b>Quant.</b>
</td>
<td bgcolor="#eeeeee" width="50">
<center>
<font color='#99cc33' size='2'><b>Opções</b>
</td>
</tr>
<?
// Dou um loop pra listar is itens do carrinho de compras
while($item = mysql_fetch_array($itens)){
?>
<tr valign="middle">
<td bgcolor="#e3e3e3" width="40" align="left" valign="middle">
<center><b><a href="detalhes.php?id=<? echo $item['cod'] ?>"><? echo '<img width=40 height=30 border=0 src="Imagens/'.$item['img'].'">' ?></a></b>
</td>
<td bgcolor="#e3e3e3" width="600" align="left" valign="middle">
<b><a href="detalhes.php?id=<? echo $item['cod'] ?>"><? echo $item['nome'] ?></a></b>
</td>
<td bgcolor="#eeeeee" width="100">
<center>
<b>€</b> <? echo number_format($item['preco'], 2, ',', '') ?>
</td>
<td bgcolor="#e3e3e3" width="50">
<center>
<input size='4' type='text' name='quantidade[<? echo $item["cod"] ?>]' value='<? echo $item["quant"] ?>'>
</td>
<td bgcolor="#eeeeee" width="50">
<center>
<a href='remover.php?id=<? echo $item["cod"] ?>'><img src='BotRemover.png' border='0'></a>
</td>
</tr>
<tr>
<td>
<br>
<font face="Arial Narrow">
<input type="hidden" name="emaildest" value="endereço@servidor.com"></font>
<font face="Arial Narrow">
<input type="hidden" name="redirecionar" value="index.php ">
</font>
<center>
<table width="635" bgcolor="#000000" border="0" align="center" cellspacing="0" cellpadding="1" height="270">
<tr>
<td width="633" height="268">
<div align="center">
<center>
<table width="344" bgcolor="#C4C4AA" border="1" cellspacing="0" cellpadding="3" style="border-collapse: collapse" bordercolor="#111111" height="271">
<tr>
<td width="93" height="22"><font face="Tahoma" size="2">Seu nome:</font></td>
<td width="239" height="22">
<font face="Arial Narrow">
<input type="text" size="70" name="nome" value=""></font></td>
</tr>
<tr>
<td width="93" height="22"><font face="Tahoma" size="2">Seu E-mail:</font></td>
<td width="239" height="22">
<font face="Arial Narrow">
<input type="text" size="70" name="email" value=""></font></td>
</tr>
<tr>
<td width="93" height="22"><font face="Tahoma" size="2">Assunto:</font></td>
<td width="239" height="22">
<font face="Arial Narrow">
<input type="text" size="70" name="assunto" value="Compras Efectuadas Via Loja Online"></font></td>
</tr>
<tr>
<td width="93" height="100"><font face="Tahoma" size="2">Mensagem:</font></td>
<td width="239" height="100">
<font face="Arial Narrow">
</tr>
<tr>
<td colspan="2" align="center" width="331" height="71">
<font face="Arial Narrow">
<input type="submit" value=" Enviar " style="float: left; font-family: Tahoma"></font>
<font face="Tahoma"><input type="reset" value=" Limpar " style="float: left"></font>
<font face="Arial Narrow">
</font></td>
</tr>
</table>
</center>
</div>
</td>
</tr>
</table>
<?
$total += $item['preco'] * $item['quant'];
}}
?>
</form>
</body>
</html>>
Pelo que vi, a var $sessao não existe e você colocou-a na query SQL. Logo ele não vai achar nada.
E usa JOINS, fica melhor http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif:
$sessao = session_id();
$sql = "SELECT * FROM carrinhos INNER JOIN produtos ON carrinhos.cod=produtos.id WHERE carrinhos.sessao='$sessao'";
falo
deu erro... :(
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/rpublici/public_html/teste/Produtos/finalizar.php on line 14
Tu mudou o nome das tabelas?
Sim, olha a lógica:
Dentro do loop, você coloca inputs do tipo hidden para armazenar os dados dos produtos. Depois, usa um foreach para pegar os dados e jogar no e-mail. Exemplo:
echo "<input type='hidden' name='quant[]' value='{$array["quantidade"]}'";
foreach ($_POST["quant"] as $value) {
// Resgata os dados aqui
}
É só uma lógica. Tem q aperfeiçoar ela a partir do que já te dissemos por aqui.
Não podemos fazer por ti. Eu acho é que tu tem preguiça de pensar e fica esperando a gente fazer os códigos pra ti.
Abraços
>
Tu mudou o nome das tabelas?
Sim, olha a lógica:
Dentro do loop, você coloca inputs do tipo hidden para armazenar os dados dos produtos. Depois, usa um foreach para pegar os dados e jogar no e-mail. Exemplo:
echo "<input type='hidden' name='quant[]' value='{$array["quantidade"]}'";
foreach ($_POST["quant"] as $value) {
// Resgata os dados aqui
}
É só uma lógica. Tem q aperfeiçoar ela a partir do que já te dissemos por aqui.
Não podemos fazer por ti. Eu acho é que tu tem preguiça de pensar e fica esperando a gente fazer os códigos pra ti.
Abraços
olha eu fiz aqui de outra forma... agora ja inseri alguns campos de dados pessoais e os links para email, da uma olhada:
<?
session_start();
include('conexao.php');
?>
<html>
<body>
<form action='enviarcompras.php' method='post'>
<?
$sessao = session_id();
$itens = mysql_query('SELECT carrinho.cod, carrinho.quant, produtos.nome, produtos.img, produtos.preco FROM carrinho,produtos
WHERE carrinho.cod = produtos.id AND carrinho.sessao = "'.$sessao.'"');
if(mysql_num_rows($itens) < 1){
// Se o carrinho estiver vazio só exibe uma mensagem e um link para a loja
echo "<br><center> O Carrinho está Vazio!<br><br><a href='index.php'>Ir para a loja</a>";
} else {
?>
<center>
<img src='BannerCarrinho.png' border='0'><br>
<table bgcolor='#99cc33' cellpadding='5' cellspacing='1' width='800'>
<tr valign="middle">
<td bgcolor="#e3e3e3" width="40" align="left" valign="middle">
<font color='#99cc33' size='2'><b></b>
</td>
<td bgcolor="#e3e3e3" width="600" align="left" valign="middle">
<font color='#99cc33' size='2'><b>Lista de Produtos:</b>
</td>
<td bgcolor="#eeeeee" width="100">
<center>
<font color='#99cc33' size='2'><b>Preço Uni.</b>
</td>
<td bgcolor="#e3e3e3" width="50">
<center>
<font color='#99cc33' size='2'><b>Quant.</b>
</td>
<td bgcolor="#eeeeee" width="50">
<center>
<font color='#99cc33' size='2'><b>Opções</b>
</td>
</tr>
<?
// Dou um loop pra listar is itens do carrinho de compras
while($item = mysql_fetch_array($itens)){
?>
<tr valign="middle">
<td bgcolor="#e3e3e3" width="40" align="left" valign="middle">
<center><b><a href="detalhes.php?id=<? echo $item['cod'] ?>"><? echo '<img width=40 height=30 border=0 src="Imagens/'.$item['img'].'">' ?></a></b>
</td>
<td bgcolor="#e3e3e3" width="600" align="left" valign="middle">
<b><a href="detalhes.php?id=<? echo $item['cod'] ?>"><? echo $item['nome'] ?></a></b>
</td>
<td bgcolor="#eeeeee" width="100">
<center>
<b>€</b> <? echo number_format($item['preco'], 2, ',', '') ?>
</td>
<td bgcolor="#e3e3e3" width="50">
<center>
<input size='4' type='text' name='quantidade[<? echo $item["cod"] ?>]' value='<? echo $item["quant"] ?>'>
</td>
<td bgcolor="#eeeeee" width="50">
<center>
<a href='remover.php?id=<? echo $item["cod"] ?>'><img src='BotRemover.png' border='0'></a>
</td>
</tr>
<?
$total += $item['preco'] * $item['quant'];
}}
?>
</table>
<table bgcolor='#99cc33' cellpadding='5' cellspacing='1' width='800'>
<tr valign="middle">
<td>
<center>
<font size=4 color=white>
<b><u>Dados para Facturação</u></b>
<br>
<br>
<input type="hidden" name="emaildest" value="endereço@servidor.com"></font>
<input type="hidden" name="redirecionar" value="index.php ">
<font face="Tahoma" size="2">
Nome:<br><input type="text" size="70" name="nome" value="">
<br>
<br>
E-mail:<br><input type="text" size="70" name="email" value="">
<br>
<br>
Assunto:<br><input type="text" size="70" name="assunto" value="Compras Efectuadas Via Loja Online">
<br>
<br>
<input type="submit" value=" Enviar "> <input type="reset" value=" Limpar ">
<br>
<br>
</td>
</tr>
</table>
</form>
</body>
</html>
esta tudo como deve ser, so que eu gostava que o form fosse enviado atravez desta mesma pagina em vez de ser na enviacompras.php, nao sei se é possivel... outra coisa é que embora os produtos do carrinho se encontrem dentro do form, será que sao enviados?
Só serão enviados se estiverem em inputs.
Coloca um <? $PHP_SELF; ?> na action.
Depois faz uma verificação pra ver se o botão "enviar" foi pressionado. Se sim, rode o código pra enviar o email. Se não, exiba o form da ficha.
Falo
nao estou a conseguir... :( n envia nada...
ja envia qualquer coisinha, mas a parte dos produtos inda nao envia... alem disso mal s entra na pagina finalizar.php aquilo envia logo um mail sem nada sozinho
<?
session_start();
include('conexao.php');
?>
<html>
<body>
<form action='finalizar.php' method='post'>
<?
$sessao = session_id();
$itens = mysql_query('SELECT carrinho.cod, carrinho.quant, produtos.nome, produtos.img, produtos.preco FROM carrinho,produtos
WHERE carrinho.cod = produtos.id AND carrinho.sessao = "'.$sessao.'"');
if(mysql_num_rows($itens) < 1){
// Se o carrinho estiver vazio só exibe uma mensagem e um link para a loja
echo "<br><center> O Carrinho está Vazio!<br><br><a href='index.php'>Ir para a loja</a>";
} else {
?>
<center>
<img src='BannerCarrinho.png' border='0'><br>
<table bgcolor='#99cc33' cellpadding='5' cellspacing='1' width='800'>
<tr valign="middle">
<td bgcolor="#e3e3e3" width="40" align="left" valign="middle">
<font color='#99cc33' size='2'><b></b>
</td>
<td bgcolor="#e3e3e3" width="600" align="left" valign="middle">
<font color='#99cc33' size='2'><b>Lista de Produtos:</b>
</td>
<td bgcolor="#eeeeee" width="100">
<center>
<font color='#99cc33' size='2'><b>Preço Uni.</b>
</td>
<td bgcolor="#e3e3e3" width="50">
<center>
<font color='#99cc33' size='2'><b>Quant.</b>
</td>
<td bgcolor="#eeeeee" width="50">
<center>
<font color='#99cc33' size='2'><b>Opções</b>
</td>
</tr>
<?
// Dou um loop pra listar is itens do carrinho de compras
while($item = mysql_fetch_array($itens)){
?>
<tr valign="middle">
<td bgcolor="#e3e3e3" width="40" align="left" valign="middle">
<center><b><a href="detalhes.php?id=<? echo $item['cod'] ?>"><? echo '<img width=40 height=30 border=0 src="Imagens/'.$item['img'].'">' ?></a></b>
</td>
<td bgcolor="#e3e3e3" width="600" align="left" valign="middle">
<b><a href="detalhes.php?id=<? echo $item['cod'] ?>"><? echo $item['nome'] ?></a></b>
</td>
<td bgcolor="#eeeeee" width="100">
<center>
<b>€</b> <? echo number_format($item['preco'], 2, ',', '') ?>
</td>
<td bgcolor="#e3e3e3" width="50">
<center>
<input size='4' type='text' name='quantidade[<? echo $item["cod"] ?>]' value='<? echo $item["quant"] ?>'>
</td>
<td bgcolor="#eeeeee" width="50">
<center>
<a href='remover.php?id=<? echo $item["cod"] ?>'><img src='BotRemover.png' border='0'></a>
</td>
</tr>
<?
$total += $item['preco'] * $item['quant'];
}}
?>
</table>
<table bgcolor='#99cc33' cellpadding='5' cellspacing='1' width='800'>
<tr valign="middle">
<td>
<center>
<font size=4 color=white>
<b><u>Dados para Facturação</u></b>
</font>
<br>
<br>
<input type="hidden" name="emaildest" value="click01@rpublicidade.com">
<input type="hidden" name="redirecionar" value="index.php ">
<font face="Tahoma" size="2">
Nome:<br><input type="text" size="70" name="nome" value="">
<br>
<br>
E-mail:<br><input type="text" size="70" name="email" value="">
<br>
<br>
Assunto:<br><input type="text" size="70" name="assunto" value="Compras Efectuadas Via Loja Online">
<br>
<br>
<input type="submit" value=" Enviar "> <input type="reset" value=" Limpar ">
<br>
<br>
</td>
</tr>
</table>
<?
//pega as variaveis por POST
$nome = $_POST["nome"];
$email = $_POST["email"];
$assunto = $_POST["assunto"];
$encomenda = $_POST["encomenda"];
global $email; //função para validar a variável $email no script todo
$data = date("d/m/y"); //função para pegar a data de envio do e-mail
$ip = $_SERVER['REMOTE_ADDR']; //função para pegar o ip do usuário
$navegador = $_SERVER['HTTP_USER_AGENT']; //função para pegar o navegador do visitante//aqui envia o e-mail para você
mail ("click01@rpublicidade.com", //email aonde o php vai enviar os dados do form
"$assunto",
"Nome: $nome\nData: $data\nIp: $ip\nNavegador: $navegador\nHora: $hora\nE-mail: $email\nEncomenda: $encomenda",
"From: $email"
);
//aqui são as configurações para enviar o e-mail para o visitante
$site = "..."; //o e-mail que aparecerá na caixa postal do visitante
$titulo = "Obrigado pela preferência!"; //titulo da mensagem enviada para o visitante
$msg = "$nome, a sua encomenda foi enviada para a administração, consulte o seu e-mail.";
//aqui envia o e-mail de auto-resposta para o visitante
mail("$email",
"$titulo",
"$encomenda",
"From: $site"
);
?>
</form>
</body>
</html>Tô vendo que teu problema é o básico HTML.
Como é que tu quer enviar os produtos por um form se tu não bota eles em inputs?
Cria inputs do tipo hidden pra gravar os dados dos produtos e depois usar foreach ou for para resgatar eles.
Dá uma lida em comandos básicos HTML e ler um pouco sobre arrays, foreach e for no manual do PHP.
Depois eu vejo se consigo editar essa bagunça que tá o teu script.
Falo
o meu problema n é o criar os inputs, mas é que aquilo tem q ser input para tds os produtos com $nome etc... ne? isso é q é lixado, se fosse so um determinado produto era facil, so que nesse field, ele tem q receber tds os produtos com $nome etc...
oO
Você não entende muito de php ou está com preguiça de pensar? Muito simples:
Roda uma query sql, depois joga num array e resgata os dados no form...
Qual o mistério disso? oO
falo