Ir para conteúdo
Fórum Script Brasil
  • 0

Relatório personalizado (Resolvido)


RRH

Pergunta

Como criar uma página php que imprima os dados de uma tabela mysql separados por tipos?

Ex:

Loja A tem

44 sapatos brancos

10 sapatos pretos

22 sapatos vermelhos

Loja B tem

11 sapatos brancos

99 sapatos pretos

32 sapatos vermelhos

e assim por diante...

Eu cheguei até aqui:

<?php
require "config.php";

$sql=("SELECT * FROM estoque WHERE sapato = 'vermelho'");
$query=mysql_query($sql);
$total=mysql_num_rows($query);
echo "Quantidade de registros encontrados: $total";

if ($total == 0){
echo "Nenhum registro encontrado!";
}
?>

Editado por RRH
Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

Você pode fazer uma tabela como:

id___produto_________loja

1__sapato vermelho__lojaA

2__sapato azul_______lojaA

3__sapato verde_____lojaA

e o select:

mysql_select("SELECT * FROM estoque WHERE loja = 'lojaA' AND produto = 'sapato azul'")
Da para você fazer um laço, ou fazer manualmente, ou então fazer um único select(SELECT * FROM estoque) e verificar na hora de exibir. Este é o jeito mais simples de se fazer, mas você tem que saber exatamente tudo que tem no seu bd. edit... fiz este exemplo, funciona quase da mesma forma, você tem que adicionar os tipos de produtos num array e depois verificar manualmente.
<?php

$query = mysql_query("SELECT * FROM estoque");

while($var = mysql_fetch_array($query)){
    
    $produtos = array(
                      "sapatoVermelho" => "0",
                      "sapatoVerde" => "0"
                      );
    
    if($var['produto'] == 'sapato vermelho'){
        $produtos[sapatoVermelho]++;
    }    
    
    if($var['produto'] == 'sapato vermelho'){
        $produtos[sapatoVerde]++;
    }    
}

?>

Mas também de o subselect da classe PDO, vou ver se acho alguma coisa referente.

Facinho assim, já achei:

http://vimeo.com/13975203

Editado por vini_loock
Link para o comentário
Compartilhar em outros sites

  • 0

Ok, mas acho que não estou conseguindo passar a minha idéia! Preciso de um código que faça a leitura de toda a tabela e depois organize os dados assim:

Loja A tem

44 sapatos brancos

10 sapatos pretos

22 sapatos vermelhos

Loja B tem

11 sapatos brancos

99 sapatos pretos

32 sapatos vermelhos

Loja C tem

30 sapatos brancos

55 sapatos pretos

20 sapatos vermelhos

De forma que eu tenha como ver em uma só tela o estoque de uma rede de lojas, entendeu?

Editado por RRH
Link para o comentário
Compartilhar em outros sites

  • 0

Fineza verificarem se os dados abaixo atendem:

-- phpMyAdmin SQL Dump
-- version 3.3.2deb1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tempo de Geração: Nov 24, 2010 as 06:18 PM
-- Versão do Servidor: 5.1.41
-- Versão do PHP: 5.3.2-1ubuntu4.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Banco de Dados: `base`
--

-- --------------------------------------------------------

--
-- Estrutura da tabela `estoque`
--

CREATE TABLE IF NOT EXISTS `estoque` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `loja` varchar(50) NOT NULL,
  `tipo` varchar(50) NOT NULL,
  `qtde` int(5) NOT NULL,
  `cor` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9;

--
-- Extraindo dados da tabela `estoque`
--

INSERT INTO `estoque` (`id`, `loja`, `tipo`, `qtde`, `cor`) VALUES
(1, 'A', 'SAPATO', 10, 'VERDE'),
(2, 'A', 'SAPATO', 35, 'PRETO'),
(3, 'A', 'SAPATO', 40, 'BRANCO'),
(4, 'B', 'SAPATO', 90, 'BRANCO'),
(5, 'B', 'SAPATO', 150, 'VERDE'),
(6, 'C', 'SAPATO', 25, 'ROSA'),
(7, 'D', 'SAPATO', 10, 'MARROM'),
(8, 'D', 'SAPATO', 15, 'PRETO');

Editado por RRH
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, pensei no seguinte, tem que testar:

<?php
require "config.php";

$ctrl_loja="";
$ctrl_tipo="";
$ctrl_cor="";
$soma=0;

$sql=("SELECT * FROM estoque order by loja asc,tipo asc,cor asc);
$query=mysql_query($sql);
$total=mysql_num_rows($query);
if($total)
{
  echo "Quantidade de registros encontrados: $total";
}
else
{
  echo "Nenhum registro encontrado!";
  exit;
}

while($res=mysql_fetch_array($query)
{
  $loja=$res['loja'];
  $tipo=$res['tipo'];
  $cor=$res['cor'];
  if($ctrl_loja != $loja)
  {
    if($ctrl_loja)
    {
      echo $soma."\n";
    }
    echo "Loja".$loja."\n";
    $ctrl_loja=$loja;
    $tipo="";
    $cor="";
  }
  if($ctrl_tipo != $tipo)
  {
    echo "Tipo ".$tipo."\n";
    $ctrl_tipo=$tipo;
  }
  if($ctrl_cor != $cor)
  {
    echo "Quantidade da cor ".$cor.":";
    $ctrl_cor=$cor;
    $soma=1;
  }
  if($ctrl_loja == $loja AND $ctrl_tipo == $tipo AND $ctrl_cor == $cor)
  {
    $soma++;
  }
}

?>

Não testei, mas deve dar certo.

Editado por svjets
Link para o comentário
Compartilhar em outros sites

  • 0

Infelizmente o que você fez é muito avançado pra mim e eu não consegui encontrar solução para o que está faltando para o seu código funcionar. Depois de inserir algumas aspas e parenteses que estavam faltando eu visualizei exatamente o texto abaixo como resposta:

Quantidade de registros encontrados: 5LojaA Tipo SAPATO Quantidade da cor PRETO:Quantidade da cor VERDE:2 LojaB Tipo Quantidade da cor :Tipo SAPATO Quantidade da cor VERDE:

Outra coisa que percebi foi que faltava a coluna de quantidade (qtde) que já alterei no ultimo post na estrutura da tabela.

Editado por RRH
Link para o comentário
Compartilhar em outros sites

  • 0

Tendo já as quantidades definidas fica mais simples:

<?php
require "config.php";

$ctrl_loja="";
$ctrl_tipo="";
$ctrl_cor="";

$sql="SELECT * FROM estoque order by loja asc,tipo asc,cor asc";
$query=mysql_query($sql);
$total=mysql_num_rows($query);
if($total)
{
  echo "Quantidade de registros encontrados: $total";
}
else
{
  echo "Nenhum registro encontrado!";
  exit;
}

while($res=mysql_fetch_array($query))
{
  $loja=$res['loja'];
  $tipo=$res['tipo'];
  $cor=$res['cor'];
  $qtde=$res['qtde'];
  if($ctrl_loja != $loja)
  {
    echo "Loja".$loja."<br />\n";
    $ctrl_loja=$loja;
    $tipo="";
    $cor="";
  }
  if($ctrl_tipo != $tipo)
  {
    echo "Tipo ".$tipo."<br />\n";
    $ctrl_tipo=$tipo;
  }
  if($ctrl_cor != $cor)
  {
    echo "Quantidade da cor ".$cor.": ".$qtde."<br /><br />";
    $ctrl_cor=$cor;
  }
}

?>

Editado por svjets
Link para o comentário
Compartilhar em outros sites

  • 0

Ainda está faltando alguns ajustes:

Quantidade de registros encontrados: 8LojaA

Tipo SAPATO

Quantidade da cor VERDE: 35

LojaB

Tipo

Quantidade da cor : 90

Tipo SAPATO

Quantidade da cor VERDE: 150

LojaC

Tipo

Quantidade da cor : 25

LojaD

Tipo SAPATO

Quantidade da cor VERDE: 15

Link para o comentário
Compartilhar em outros sites

  • 0

Refazendo o código já que só há um tipo de uma única cor para cada loja.

<?php
require "config.php";

$ctrl_loja="";

$sql="SELECT * FROM estoque ORDER BY loja,tipo,cor";
$query=mysql_query($sql);
$total=mysql_num_rows($query);
if($total)
{
  echo "Quantidade de registros encontrados: ".$total."<br /><br />";
}
else
{
  echo "Nenhum registro encontrado!";
  exit;
}

while($res=mysql_fetch_array($query))
{
  $loja=$res['loja'];
  $tipo=$res['tipo'];
  $cor=$res['cor'];
  $qtde=$res['qtde'];
  if($ctrl_loja != $loja)
  {
    echo "<br />Loja ".$loja." tem<br />\n";
    $ctrl_loja=$loja;
    $cor="";
  }
  echo $qtde." ".$tipo." da cor ".$cor."<br />;
}

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado a todos pela ajuda. Consegui o resultado que precisava com o código abaixo:

<?
include "config.php";

?>
<table border="1"><tr>
   <td><b>Loja</b></td>
   <td><b>Funcao</b></td>
   <td><b>Total</b></td>
</tr>
<?
$query="select loja, funcao, count(*) as total from rede group by loja, funcao order by loja, funcao";

$resultado = mysql_query($query, $conexao);
while ($linha = mysql_fetch_array($resultado)) {
   ?>
   <tr>
      <td><? echo $linha['loja']; ?></td>
      <td><? echo $linha['funcao']; ?></td>
      <td><? echo $linha['total']; ?></td>
   </tr>
   <?
}
?>
</table>

Resultado:

Loja Funcao Total

A GERENTE 2

A MOTORISTA 2

B GERENTE 1

B MOTORISTA 1

Editado por RRH
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...