imagine a seguinte situação: você entra num site onde são apresentadas as ofertas de diversos anunciantes.
baseado nos melhores preços, você vai montando sua lista de compras conforme abaixo:
produto x do anunciante A;
produto y do anunciante A
produto W do anunciante B
produto K do anunciante C;
produto Q do annunciante C
produto Z do anuciante A;
produto XY do anunciante B;
produto YZ do anunciante A; e por aí vai.
meu problema é o seguinte, eu gostaria de imprimir os dados do anunciante, como endereço,telefone de contato,etc... UMA ÚNICA VEZ ao final da lista independente de qtas vzs ele aparece na lista.
segue o código abaixo:
<?php
session_start();
//session_destroy();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sem título</title>
<style rel="stylesheet" type="text/css" media="print">
#botao {
display: none
}
</style>
<style>
.total{font:Arial, Helvetica, sans-serif;
font-size:18px;
font-weight:bold;}
.total2{font:Arial, Helvetica, sans-serif;
font-weight:bold;
font-style:italic;
}
.lista{
padding:4px;
}
</style>
</head>
<body>
<?php
//instanciar a p�gina do carrinho
$pagina = 'carrinho.php';
//inicio da class
function conexao(){
//conex�o com banco de dados
mysql_connect($this->hostname, $this->login, $this->senha) or die("N�o foi poss�vel validar os dados".mysql_error());
mysql_select_db($this->banco) or die("N�o foi poss�vel conectar ao banco".mysql_error());
mysql_query("SET NAME 'utf-8'");
mysql_query("SET character_set_connection='utf-8'");
mysql_query("SET character_set_clien='utf-8'");
mysql_query("SET character_set_results='utf-8'");
}
//mostrar carrinho de compra
function carrinho (){
$soma=0;
//verificar session
if($_SESSION){
foreach($_SESSION as $nome=>$quantidade){
if ($quantidade>0){
if(substr($nome,0,9) == 'produtos_'){
// pegar id da session
$id = substr($nome,9,(strlen($nome) -9));
$PD = mysql_query("SELECT id,id_anun, produto, valor FROM integrantes WHERE id=".mysql_real_escape_string((int)$id));
while($list = mysql_fetch_assoc($PD)){
$AN = mysql_query("SELECT `anunciantes`.`id_anun`, `anunciantes`.`nome_anun` FROM `anunciantes` WHERE id_anun=".mysql_real_escape_string($list['id_anun']));
$anun = mysql_fetch_assoc($AN);
$subtotal = $quantidade * $list['valor'];
$_SESSION['anun']=$list['id_anun'];
echo '
<tr>
<td class="lista total2">'.$anun['nome_anun'].'</td>
<td class="lista total2">'.$list['produto'].'</td>
<td class="lista total2">'.$quantidade.' X</td>
<td class="lista total2">R$ '.number_format($list['valor'],2,',','.').'</td>
<td class="lista total2"><a href="processa.php?add='.((int)$id).'"><img src="images/add.png" ="Aumentar Quantidade" width="20" height="20"></a></td>
<td class="lista"><a href="processa.php?menos='.((int)$id).'"><img src="images/menos.png" ="Diminuir Quantidade" width="20" height="20"></a></td>
<td class="lista"><a href="processa.php?del='.((int)$id).'"><img src="images/remove.png" ="Excluir item" width="20" height="20"></a></td>
<td class="lista" class="total">R$ '.number_format($subtotal,2,',','.').'</td>
<tr>
</tr>
</tr>';
echo $list['id_anun'];
//echo $_SESSION['anun'];
$end = mysql_query("SELECT DISTINCT `nome_anun` FROM `anunciantes` WHERE `id_anun` =".$list['id_anun']."HAVING id_anun = 1");
$imprime = mysql_fetch_assoc($end);
//echo $imprime['nome_anun'];
}
}
$soma += $subtotal;
}
}
if($soma == 0){
echo '<td colspan="8" class="total">Sua lista de compras est� vazia! </td>';
}else{
echo '<tr>
<tr>
<td colspan="4"class="total"></td>
<td colspan="2"class="total">TOTAL </td>
<td colspan="2" class="total" align="right"> R$: '.number_format($soma,2,',','.').'</td>
</tr>
<tr>
<td colspan="8"class="total">
</td>
</tr>
';
}
}
}
//fim class
}
$conecta = new shopping();
$conecta->conexao();
function antiSQL($sql)
{
$seg = preg_replace("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/","",$sql); //remove palavras que contenham a sintaxe sql
$seg = trim($seg); //limpa espa�os vazios
$seg = strip_tags($seg); // tira tags html e php
$seg = addslashes($seg); //adiciona barras invertidas a uma string
return $seg;
}
if(isset($_GET['add'])){
$id_produto=$_GET['add'];
$id_produto=antiSQL($id_produto);
$id_produto=(int)$id_produto;
$VER=(mysql_query("SELECT `integrantes`.`id` FROM `integrantes` WHERE id=".$id_produto));
$conta=mysql_num_rows($VER);
if($conta==1)
{
$_SESSION['produtos_'.$_GET['add']] += '1';//(isset($_SESSION['produtos_'.$_GET['add']])) ? $_SESSION['produtos_'.$_GET['add']] + 1 : 1;
header("Location:".$pagina);
}else{
echo "Produto não cadastrado";
}
}
//exclus�o de item
if(isset($_GET['del'])){
$_SESSION['produtos_'.$_GET['del']]= '0';//(isset($_SESSION['produtos_'.$_GET['del']])) ? $_SESSION['produtos_'.$_GET['del']] == 0 : 0;
header('Location:'.$pagina);
}
//subtra��o de item
if(isset($_GET['menos'])){
$_SESSION['produtos_'.$_GET['menos']]--;//(isset($_SESSION['produtos_'.$_GET['del']])) ? $_SESSION['produtos_'.$_GET['del']] == 0 : 0;
header('Location:'.$pagina);
}
?>
</body>
</html>
a parte que está entre as linhas 86 e 92 no código, é uma das inúmeras tentativas que fiz, onde eu consigo imprimir o id do anunciante, mas se tiverem sido selecionados 5 produtos desse anunciante, seu nome aparece cinco vzs.
certo da atenção dos amigos
no aguardo
OBS: no código eu apaguei os dados de conexão ao banco.
Pergunta
jlmsbage
boa tarde!
preciso de um auxilio dos amigos.
imagine a seguinte situação: você entra num site onde são apresentadas as ofertas de diversos anunciantes.
baseado nos melhores preços, você vai montando sua lista de compras conforme abaixo:
produto x do anunciante A;
produto y do anunciante A
produto W do anunciante B
produto K do anunciante C;
produto Q do annunciante C
produto Z do anuciante A;
produto XY do anunciante B;
produto YZ do anunciante A; e por aí vai.
meu problema é o seguinte, eu gostaria de imprimir os dados do anunciante, como endereço,telefone de contato,etc... UMA ÚNICA VEZ ao final da lista independente de qtas vzs ele aparece na lista.
segue o código abaixo:
<?php session_start(); //session_destroy(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Documento sem título</title> <style rel="stylesheet" type="text/css" media="print"> #botao { display: none } </style> <style> .total{font:Arial, Helvetica, sans-serif; font-size:18px; font-weight:bold;} .total2{font:Arial, Helvetica, sans-serif; font-weight:bold; font-style:italic; } .lista{ padding:4px; } </style> </head> <body> <?php //instanciar a p�gina do carrinho $pagina = 'carrinho.php'; //inicio da class function conexao(){ //conex�o com banco de dados mysql_connect($this->hostname, $this->login, $this->senha) or die("N�o foi poss�vel validar os dados".mysql_error()); mysql_select_db($this->banco) or die("N�o foi poss�vel conectar ao banco".mysql_error()); mysql_query("SET NAME 'utf-8'"); mysql_query("SET character_set_connection='utf-8'"); mysql_query("SET character_set_clien='utf-8'"); mysql_query("SET character_set_results='utf-8'"); } //mostrar carrinho de compra function carrinho (){ $soma=0; //verificar session if($_SESSION){ foreach($_SESSION as $nome=>$quantidade){ if ($quantidade>0){ if(substr($nome,0,9) == 'produtos_'){ // pegar id da session $id = substr($nome,9,(strlen($nome) -9)); $PD = mysql_query("SELECT id,id_anun, produto, valor FROM integrantes WHERE id=".mysql_real_escape_string((int)$id)); while($list = mysql_fetch_assoc($PD)){ $AN = mysql_query("SELECT `anunciantes`.`id_anun`, `anunciantes`.`nome_anun` FROM `anunciantes` WHERE id_anun=".mysql_real_escape_string($list['id_anun'])); $anun = mysql_fetch_assoc($AN); $subtotal = $quantidade * $list['valor']; $_SESSION['anun']=$list['id_anun']; echo ' <tr> <td class="lista total2">'.$anun['nome_anun'].'</td> <td class="lista total2">'.$list['produto'].'</td> <td class="lista total2">'.$quantidade.' X</td> <td class="lista total2">R$ '.number_format($list['valor'],2,',','.').'</td> <td class="lista total2"><a href="processa.php?add='.((int)$id).'"><img src="images/add.png" ="Aumentar Quantidade" width="20" height="20"></a></td> <td class="lista"><a href="processa.php?menos='.((int)$id).'"><img src="images/menos.png" ="Diminuir Quantidade" width="20" height="20"></a></td> <td class="lista"><a href="processa.php?del='.((int)$id).'"><img src="images/remove.png" ="Excluir item" width="20" height="20"></a></td> <td class="lista" class="total">R$ '.number_format($subtotal,2,',','.').'</td> <tr> </tr> </tr>'; echo $list['id_anun']; //echo $_SESSION['anun']; $end = mysql_query("SELECT DISTINCT `nome_anun` FROM `anunciantes` WHERE `id_anun` =".$list['id_anun']."HAVING id_anun = 1"); $imprime = mysql_fetch_assoc($end); //echo $imprime['nome_anun']; } } $soma += $subtotal; } } if($soma == 0){ echo '<td colspan="8" class="total">Sua lista de compras est� vazia! </td>'; }else{ echo '<tr> <tr> <td colspan="4"class="total"></td> <td colspan="2"class="total">TOTAL </td> <td colspan="2" class="total" align="right"> R$: '.number_format($soma,2,',','.').'</td> </tr> <tr> <td colspan="8"class="total"> </td> </tr> '; } } } //fim class } $conecta = new shopping(); $conecta->conexao(); function antiSQL($sql) { $seg = preg_replace("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/","",$sql); //remove palavras que contenham a sintaxe sql $seg = trim($seg); //limpa espa�os vazios $seg = strip_tags($seg); // tira tags html e php $seg = addslashes($seg); //adiciona barras invertidas a uma string return $seg; } if(isset($_GET['add'])){ $id_produto=$_GET['add']; $id_produto=antiSQL($id_produto); $id_produto=(int)$id_produto; $VER=(mysql_query("SELECT `integrantes`.`id` FROM `integrantes` WHERE id=".$id_produto)); $conta=mysql_num_rows($VER); if($conta==1) { $_SESSION['produtos_'.$_GET['add']] += '1';//(isset($_SESSION['produtos_'.$_GET['add']])) ? $_SESSION['produtos_'.$_GET['add']] + 1 : 1; header("Location:".$pagina); }else{ echo "Produto não cadastrado"; } } //exclus�o de item if(isset($_GET['del'])){ $_SESSION['produtos_'.$_GET['del']]= '0';//(isset($_SESSION['produtos_'.$_GET['del']])) ? $_SESSION['produtos_'.$_GET['del']] == 0 : 0; header('Location:'.$pagina); } //subtra��o de item if(isset($_GET['menos'])){ $_SESSION['produtos_'.$_GET['menos']]--;//(isset($_SESSION['produtos_'.$_GET['del']])) ? $_SESSION['produtos_'.$_GET['del']] == 0 : 0; header('Location:'.$pagina); } ?> </body> </html>a parte que está entre as linhas 86 e 92 no código, é uma das inúmeras tentativas que fiz, onde eu consigo imprimir o id do anunciante, mas se tiverem sido selecionados 5 produtos desse anunciante, seu nome aparece cinco vzs.
certo da atenção dos amigos
no aguardo
OBS: no código eu apaguei os dados de conexão ao banco.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.