Ir para conteúdo

POWERED BY:

Arquivado

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

Danilo Nicoletti

[Resolvido] Gerando um pdf atraves de uma session

Recommended Posts

bom dia Galera, queria um sistema para gerar pdf, consegui, mas preciso que ele imprima e liste todos os dados da minha session

 

eu consigo fazer ele imprimir o banco inteiro, e o primeiro cadastro da session, mas consigo fazer ele gerar todos os restistro da session

 

<?php 
     session_start();

     if(!isset($_SESSION['carrinho'])){
        $_SESSION['carrinho'] = array();
     }

     //adiciona produto

     if(isset($_GET['acao'])){

        //ADICIONAR CARRINHO
        if($_GET['acao'] == 'add'){
           $id = intval($_GET['id']);
           if(!isset($_SESSION['carrinho'][$id])){
              $_SESSION['carrinho'][$id] = 1;
           }else{
              $_SESSION['carrinho'][$id] += 1;
           }
        }

        //REMOVER CARRINHO
        if($_GET['acao'] == 'del'){
           $id = intval($_GET['id']);
           if(isset($_SESSION['carrinho'][$id])){
              unset($_SESSION['carrinho'][$id]);
           }
        }

        //ALTERAR QUANTIDADE
        if($_GET['acao'] == 'up'){
           if(is_array($_POST['prod'])){
              foreach($_POST['prod'] as $id => $qtd){
                 $id  = intval($id);
                 $qtd = intval($qtd);
                 if(!empty($qtd) || $qtd <> 0){
                    $_SESSION['carrinho'][$id] = $qtd;
                 }else{
                    unset($_SESSION['carrinho'][$id]);
                 }
              }
           }
        }

     }//print_r($_SESSION['carrinho']);


?>
<?
//CONFIGURAÇÕES DO BD MYSQL 
//$servidor = "localhost"; 
//$usuario = "root"; 
//$senha = "12345678"; 
//$bd = "diweb"; 

//TÍTULO DO RELATÓRIO 
$titulo = "Colunistas do iMasters"; 
//LOGO QUE SERÁ COLOCADO NO RELATÓRIO 
//$imagem = "logo_rodape.png"; 
//ENDEREÇO DA BIBLIOTECA FPDF 
$end_fpdf = "fpdf"; 
//NUMERO DE RESULTADOS POR PÁGINA 
$por_pagina = 13; 
//ENDEREÇO ONDE SERÁ GERADO O PDF 
$end_final = "salvar\artigo_php.pdf"; 
//TIPO DO PDF GERADO 
//F-> SALVA NO ENDEREÇO ESPECIFICADO NA VAR END_FINAL 
$tipo_pdf = "F"; 

/************** NÃO MEXER DAQUI PRA BAIXO ***************/ 


//CONECTA COM O MYSQL
require_once("connDB.php");
foreach($_SESSION['carrinho'] as $id => $qtd){
$sql   = "SELECT *  FROM pro WHERE id= '$id'";
$qr    = mysql_query($sql) or die(mysql_error());
$ln    = mysql_fetch_assoc($qr);
$row   = mysql_num_rows($qr);

        $id   = $ln['id'];
     $nome  = $ln['titulo'];
     $img   = $ln['fotoImagem'];
	 $preco = number_format($ln['valor'], 2, ',', '.');
        $sub   = number_format($ln['valor'] * $qtd, 2, ',', '.');
	 $total += $ln['valor'] * $qtd;
}
//VERIFICA SE RETORNOU ALGUMA LINHA
if(count($_SESSION['carrinho']) == 0){ echo "Não retornou nenhum registro"; die; } 

//CALCULA QUANTAS PÁGINAS VÃO SER NECESSÁRIAS
$paginas = ceil($row/$por_pagina); 

//PREPARA PARA GERAR O PDF
define("FPDF_FONTPATH", "$end_fpdf/font/");
require_once("$end_fpdf/fpdf.php"); 
$pdf = new FPDF(); 

//INICIALIZA AS VARIÁVEIS
$linha_atual = 0;
$inicio = 0; 

//PÁGINAS
for($x=1; $x<=$paginas; $x++) { 

//VERIFICA
$inicio = $linha_atual;
$fim = $linha_atual + $por_pagina;
if($fim > $row) $fim = $row;

$pdf->Open(); 
$pdf->AddPage(); 
$pdf->SetFont("Arial", "B", 10); 
//$pdf->Image($imagem, 0, 8);
$pdf->Ln(2);
$pdf->Cell(185, 8, "Cotacao DiWeb", 0, 0, 'R'); 

//QUEBRA DE LINHA
$pdf->Ln(20); 

//MONTA O CABEÇALHO 
$pdf->Cell(15, 8, "", 1, 0, 'C'); 
$pdf->Cell(125, 8, "Produto", 1, 0, 'C'); 
$pdf->Cell(30, 8, "Valor", 1, 1, 'C'); 
//$pdf->Cell(55, 8, "Categoria", 1, 1, 'C'); 


//aqui que eu queria da um loop, pra mostra todos os registros
for($i=$inicio; $i<$fim; $i++) { 
$pdf->Cell(15, 8, $id, 1, 0, 'C'); //se eu tiro $i ele lista só o primeiro da session tipo assim  
$pdf->Cell(125, 8, mysql_result($qr, $i, "titulo"), 1, 0, 'L'); 
$pdf->Cell(30, 8, mysql_result($qr, $i, "valor"), 1, 1, 'L'); 
//$pdf->Cell(55, 8, mysql_result($sql, $i, "tipo"), 1, 1, 'L'); 
$linha_atual++;

}//FECHA FOR(REGISTROS - i)
}//FECHA FOR(PAGINAS - x) 

//SAIDA DO PDF
$pdf->Output("$end_final", "$tipo_pdf");

header('Location: salvar/artigo_php.pdf');

?>  

 

Ajuda ai Galera PLx

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi muito bem.. também nao li o codigo

 

mas a sua dificuldade está em abstrair os dados que estão na variável de sessão ?

 

não seria apenas o caso de fazer um simples loop ?

 

foreach, por exemplo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi muito bem.. também nao li o codigo

 

mas a sua dificuldade está em abstrair os dados que estão na variável de sessão ?

 

não seria apenas o caso de fazer um simples loop ?

 

foreach, por exemplo ?

 

Pois é Fera eu axava que era simplimento fazer isso preciso gerar um loop do que esta na session

$pdf->Cell(15, 8, mysql_result($qr, $i, "id"), 1, 0, 'C'); 
$pdf->Cell(125, 8, mysql_result($qr, $i, "titulo"), 1, 0, 'L'); 
$pdf->Cell(30, 8, mysql_result($qr, $i, "valor"), 1, 1, 'L'); 

 

assim ele pega os dados mysql, mas o que eu quero eh os dados da session

 

foreach($_SESSION['carrinho'] as $id => $qtd){
$pdf->Cell(15, 8, $id, 1, 0, 'C'); 
$pdf->Cell(125, 8, $ln['titulo'], 1, 0, 'L'); 
$pdf->Cell(30, 8, $preco, 1, 1, 'L'); 
//$pdf->Cell(55, 8, mysql_result($sql, $i, "tipo"), 1, 1, 'L'); 
$linha_atual++;
}//FECHA FOR(REGISTROS - i)

 

E assim ele ta selecionando soh o id o resto ta fazendo igual

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pego o code no mxmasters neh XD

 

viu a video aula?

 

xD

 

Cara eu tambem n entendi muito o q tu quer =S

Compartilhar este post


Link para o post
Compartilhar em outros sites

indices: 52, 53 = id

 

valores: 1, 2 = qtd

 

foreach($_SESSION['carrinho'] as $id => $qtd){ //<<<
$pdf->Cell(15, 8, $id, 1, 0, 'C'); 
$pdf->Cell(125, 8, $valor, 1, 0, 'L'); 
$pdf->Cell(30, 8, $preco, 1, 1, 'L'); 
$linha_atual++;}//FECHA FOR(REGISTROS - i)

 

com ess foreach só o ip na se repete

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade é $titulo e $preço

 

e é isso que eu quero saber, eu quero que elas venhão de uma session que eu criei

 

vo explica direitinho tenho um banco de dados de produtos pra venda

 

ai fiz um sistema de carrinho de compra atravez dessa sessão

 

<?php 
     session_start();

     if(!isset($_SESSION['carrinho'])){
        $_SESSION['carrinho'] = array();
     }
?>

 

de uma pagina shopping.php que add as informaçõs da session em outra pagina carrinho.php ai eu criei esse codigo que esta ai em cima

pra gerar um pdf para impressao da imformações que estao no carrinho, o que imprimi as informações no pdf é essa

 

for($i=$inicio; $i<$fim; $i++) { 
$pdf->Cell(15, 8, mysql_result($qr, $i, "id"), 1, 0, 'C'); 
$pdf->Cell(125, 8, mysql_result($qr, $i, "titulo"), 1, 0, 'L'); 
$pdf->Cell(30, 8, mysql_result($qr, $i, "valor"), 1, 1, 'L');
$linha_atual++; 

 

 

mas por aki ele imprimi as informações do db e faz a repetição eu queria imprimir as informaçoes que estao na session ms como voce viu ele soh pega o id ou a qtd

nao sei se eh por causa do

foreach($_SESSION['carrinho'] as $id => $qtd){

 

 

No Aguardo !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema está na forma como armazena os dados na variável de sessão..

 

está guardando apenas ID e quantidade.

 

por isso achei estranho e perguntei acima o que seriam os índices e valores..

 

normalmente armazena-se também o nome e valor do produto, para evitar ter que fazr consultas ao banco de dados.

 

 

mostre o trecho do código que adiciona dados ao carrinho de compras

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php 
     session_start();

     if(!isset($_SESSION['carrinho'])){
        $_SESSION['carrinho'] = array();
     }

     //adiciona produto

     if(isset($_GET['acao'])){

        //ADICIONAR CARRINHO
        if($_GET['acao'] == 'add'){
           $id = intval($_GET['id']);
           if(!isset($_SESSION['carrinho'][$id])){
              $_SESSION['carrinho'][$id] = 1;
           }else{
              $_SESSION['carrinho'][$id] += 1;
           }
        }

        //REMOVER CARRINHO
        if($_GET['acao'] == 'del'){
           $id = intval($_GET['id']);
           if(isset($_SESSION['carrinho'][$id])){
              unset($_SESSION['carrinho'][$id]);
           }
        }

        //ALTERAR QUANTIDADE
        if($_GET['acao'] == 'up'){
           if(is_array($_POST['prod'])){
              foreach($_POST['prod'] as $id => $qtd){
                 $id  = intval($id);
                 $qtd = intval($qtd);
                 if(!empty($qtd) || $qtd <> 0){
                    $_SESSION['carrinho'][$id] = $qtd;
                 }else{
                    unset($_SESSION['carrinho'][$id]);
                 }
              }
           }
        }

     }
     print_r($_SESSION['carrinho']);

?>

<? 
    if(count($_SESSION['carrinho']) == 0){
    echo '<tr>
        <td width="19" height="50"><img src="img/esquerdo.jpg" /></td>
		<td width="19" height="50"></td>
        <td width="669" align="center">Nao á Produtos no Carrinho</td>
		<td width="14" ><div align="right"><img src="img/direito.jpg"/></div></td>
	   <tr>';
    }else{
 require_once("connDB.php");
foreach($_SESSION['carrinho'] as $id => $qtd){
                             $sql   = "SELECT *  FROM pro WHERE id= '$id' ";
                             $qr    = mysql_query($sql) or die(mysql_error());
                             $ln    = mysql_fetch_assoc($qr);

	$nome  = $ln['titulo'];
	$img   = $ln['fotoImagem'];
	$preco = number_format($ln['valor'], 2, ',', '.');
       $sub   = number_format($ln['valor'] * $qtd, 2, ',', '.');
	$total += $ln['valor'] * $qtd;

	echo   '<tr >
                 <td width="19" height="50"><img src="img/esquerdo.jpg" /></td>
                 <td width="50"><img src="'.$img.'" width="50" height="50"/></td>
                 <td width="418" id="kk">'.$nome.'</td>
                 <td width="61" id="ll"><input type="text" size="2" name="prod['.$id.']" value="'.$qtd.'" /></td>
                 <td width="95" id="ii">R$ '.$preco.'</td>
			  <td width="95" id="ii">R$ '.$sub.'</td>
              <td width="30" id="xx"><a href="?acao=del&id='.$id.'"><img src="img/x.png" border="0"/></a></td>
                 <td width="14" ><img src="img/direito.jpg" /></td>
              </tr>
		     <tr>
               <td colspan="8" height="15" align="center" background="img/tudo.jpg"><img src="img/linha6.png"  /></td>
              </tr>';
  }
 $total = number_format($total, 2, ',', '.');
 }
?>

são esses dois codigos

 

<a href="carrinho.php?acao=add&id='.$exibir['id'].'" target="_parent"><img src="img/add.png" border="0"></a>

 

 

e esse é o link que eu adiciono no carrinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee consegui Resolver com esse codigo Aqui

 

<?php 
     session_start();

     if(!isset($_SESSION['carrinho'])){
        $_SESSION['carrinho'] = array();
     }
 //print_r($_SESSION['carrinho']);
?>

 foreach($_SESSION['carrinho'] as $id => $qtd){
       $sql   = "SELECT *  FROM pro WHERE id= '$id' ";
       $qr    = mysql_query($sql) or die(mysql_error());
       $ln    = mysql_fetch_assoc($qr);

	$a++;
	$nome  = $ln['titulo'];
	$img   = $ln['fotoImagem'];
	$preco = number_format($ln['valor'], 2, ',', '.');
       $sub   = number_format($ln['valor'] * $qtd, 2, ',', '.');
	$total += $ln['valor'] * $qtd;

	$pdf->Cell(15, 8, $a, 1, 0, 'C');
	$pdf->Cell(125, 8, $nome, 1, 0, 'L');
	$pdf->Cell(20, 8, $qtd, 1, 0, 'L');
	$pdf->Cell(30, 8, $sub, 1, 1, 'L'); 

  }
  $total = number_format($total, 2, ',', '.');
}//FECHA FOR(PAGINAS - x) 

 

Valeu por terem ajudado

 

Obrigado

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.