How to list products in categories?

Asked

Viewed 314 times

1

Hello, I have this code to show the category menu:

require_once ('./funcao/conecta.php');
$conn = conecta();
$sql = $conn->prepare("SELECT *  FROM `loja`.`categorias` ORDER BY `nome_categoria` ASC");
$sql->execute(array());
$sql->setFetchMode(PDO::FETCH_ASSOC);
$sql->execute();
while($linha = $sql->fetch()) {
$categoriaid = $linha['id_categoria'];
$nomecategoria = $linha['nome_categoria'];
echo'<li>';
echo'<a base64_encode href="./index.php?acao=add'.$linha['id'].'">'.$nomecategoria.'</a>';
echo'</li>';
}
echo'</div>';
echo '</div id="link"><div>';
echo'</div>';

And this code shows the products with pagination:

require_once('./funcao/conecta.php');
$conn = conecta();
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
echo '<table width="100%" height="0" cellspacing="60" cellpadding="60">';
$i = 1;
$limite = 10;
$pg = (isset($_GET['pg'])) ? (int)$_GET['pg'] : 1;
$inicio = ($pg * $limite) - $limite;
$busca = $conn->prepare("SELECT * FROM `produtos` ORDER BY `id`  LIMIT $inicio,$limite");
$busca->execute(array());
$busca->setFetchMode(PDO::FETCH_ASSOC);
$busca->execute();
echo '<div id="Box">';
while ($linha = $busca->fetch(PDO::FETCH_ASSOC)) {
    echo '<td align = "center"><h2>' . $linha['nome'] . '</h2></br>';
    echo '<div align="loja"><img src=' . $linha['foto'] . '></a><a base64_encode href="./shop.php?acao=add&id=' . $linha['id'] . '"></br></br>';
    echo '<p align = "center"><button type="button" name="" value="" class="quero">Eu Quero!</button></p>';

    if ($i % 5 == 0) {
        echo "</tr><tr>";
    }
    $i++;
}
echo '<div class="clear"> </div>';
echo "</tr></table>";
//seleciona o total de registros
$sql_Total = 'SELECT * FROM `produtos` ';
try {
    $query_Total = $conn->prepare($sql_Total);
    $query_Total->execute();
    $query_result = $query_Total->fetchAll(PDO::FETCH_ASSOC);
    //conta quantos registros tem no banco de dados
    $query_count = $query_Total->rowCount(PDO::FETCH_ASSOC);
    //calcula o total de paginas a serem exibidas
    $qtdPag = ceil($query_count / $limite);
} catch (PDOexception $error_Total) {
    echo 'Erro ao retornar os Dados. ' . $error_Total->getMessage();
}
//Cria os links para navega��o das paginas

echo ' <div class = "paginacao"><div align = "center" ><a href="?pg=1">Primeira Página</a>&nbsp;  ';
if ($qtdPag > 1 && $pg <= $qtdPag) {
    for ($i = 1; $i <= $qtdPag; $i++) {

        if ($i == $pg) {

            echo $i;

        } else {
            echo "<a href='index.php?pg=$i'>" . $i . "</a>";
        }

    }

}
echo "&nbsp;&nbsp; <a href=\"?pg=$qtdPag\">Última Página</a>  ";

My question is: how can I make the category menu display the products generated by the second listing, ie list the products of their respective category.

Here the bank used is:

-- phpMyAdmin SQL Dump
-- version 3.3.9.2
-- http://www.phpmyadmin.net
--
-- Servidor: 127.0.0.1
-- Tempo de Geração: Jan 07, 2016 as 09:44 PM
-- Versão do Servidor: 5.5.10
-- Versão do PHP: 5.3.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Banco de Dados: `loja`
--
CREATE DATABASE `loja` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `loja`;

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

--
-- Estrutura da tabela `categorias`
--

CREATE TABLE IF NOT EXISTS `categorias` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_categoria` varchar(255) DEFAULT NULL,
  `nome_categoria` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `id_categoria` (`id_categoria`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;

--
-- Extraindo dados da tabela `categorias`
--

INSERT INTO `categorias` (`id`, `id_categoria`, `nome_categoria`) VALUES
(1, '1', 'Masculino'),
(2, '2', 'Feminino'),
(3, '3', 'Acessorios'),
(4, '4', 'Roupa Intima'),
(5, '5', 'Linha Saude'),
(6, '6', 'Cosmeticos'),
(7, '7', 'Linha Fitness');

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

--
-- Estrutura da tabela `produtos`
--

CREATE TABLE IF NOT EXISTS `produtos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_produto` varchar(255) DEFAULT NULL,
  `foto` varchar(255) DEFAULT NULL,
  `nome` varchar(255) DEFAULT NULL,
  `descricao` longtext,
  `preco` varchar(255) DEFAULT NULL,
  `tamanho` varchar(255) DEFAULT NULL,
  `cor` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `id_categoria` (`id_produto`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=179 ;

--
-- Extraindo dados da tabela `produtos`
--

INSERT INTO `produtos` (`id`, `id_produto`, `foto`, `nome`, `descricao`, `preco`, `tamanho`, `cor`) VALUES
(1, '2', 'fotos/aconchego.png', 'ACONCHEGO', 'Material sintético de alta qualidade. Solado em Poliuretano de 3 cm. Tecnologia para quem quer pisar com maciez e conforto. Tiras em sintético com cetim.', 'R$ 182,00', '33 ao 40', 'Preto,Vermelho,Marrom'),
(2, '2', 'fotos/adele.png', 'ADELE', 'Em material sintetico de alta qualidade e com detalhes trabalhados. Forro touch em Poliuretano. Fivelas douradas e palmilhas forradas.', 'R$ 233,00', '33 ao 39', 'Cor única'),
(3, '2', 'fotos/afrika.png', 'AFRIKA', 'Com material sintetico estampado com o tema onça.Forro interno em touch,com espuma na parte traseira e palmilhas forradas.Solado em TR antiderrapante,confortavel e leve, com salto dourado de 2cm.', 'R$ 198,00', '33 ao 39', 'Cor única'),
(4, '2', 'fotos/aline.png', 'ALINE', 'Toda em couro legítimo, palmilha em couro touch com detalhes em couro. Solado PU de 12cm, zíper traseiro de alta resistência.', 'R$ 303,00', '33 ao 39', 'Bordô,Preto e Azul'),
(5, '2', 'fotos/aluska.png', 'ALUSKA', 'Sintetico de alta qulidade,palmilha forrada e forro touch interno.Salto dourado de 2cm.', 'R$ 197,00', '33 ao 39', 'Vinho,Metal,Bronze,Metal,Bordo'),
(6, '2', 'fotos/amora.png', 'AMORA', 'Pedras do tipo strass em sintético de alta qualidade,super resistente. Solado em Poliuretano leve de 3cm .', 'R$ 160,00', '33 ao 40', 'Preto,Marrom'),
(7, '2', 'fotos/anaclara.png', 'ANA CLARA', 'Sintetico de qualidade com forro interno touch e palmilha e solado em Poliuretano com 8,5 cm.', 'R$ 246,00', '33 ao 39', 'Azul,Bic,Bordô,Creme'),
(8, '2', 'fotos/angelica.png', 'ANGELICA', 'Sintético de alta qualidade com forro interno em touch e tiras em couro. Solado em Poliuretano em 3,5 cm de altura.', 'R$ 187,00', '33 ao 40', 'Cor única'),
(9, '2', 'fotos/anita.png', 'ANITA', 'Em couro tipo nobuck e forro touch e solado em Poliuretano.salto de 8 cm.', 'R$ 319,00', '33 ao 39', 'Cor única'),
(10, '2', 'fotos/anna.png', 'ANNA', 'Totalmente em couro,com várias estampas e cores com forro espumado e solado em TR super aderente.', 'R$ 297,00', '33 ao 39', 'Floral,Branco,Copacabana,Revista'),
(11, '2', 'fotos/avila.png', 'AVILA', 'Flotter sintético. Possui palmilha em Poliuretano, solado com 8,5 cm de altura,trazendo fachetas delicadas com forro touch.', 'R$ 253,00', '33 ao 39', 'Preto,Musgo,Azul Bic,Terra'),
(12, '2', 'fotos/babu.png', 'BABU', 'Em sintético de alta qualidade,forro touch.Plataforma de 6 cm.', 'R$ 218,00', '33 ao 39', 'Verde,Terra,Preto'),
(13, '2', 'fotos/bambina.png', 'BAMBINA', 'Em couro com solado de 4,5 cm flexível, macio , leve com elástico na traseira.', 'R$ 223,00', '33 ao 39', 'Cor única'),
(14, '3', 'fotos/baronesa.png', 'BARONESA', 'Em couro trabalhado de dois tipos: flotter e cobra,Design elegante com botão externo traseiro. Alça com regulagem de tamanho.', 'R$ 878,00', 'único', 'Cor única'),
(15, '2', 'fotos/beatriz.png', 'BEATRIZ', 'Em couro legitimo,possui salto dourado com 2cm.Forrada internamente com forro pluma xadrez. Metais em couro envellhecido de alta qualidade.', 'R$ 319,00', '33 ao 39', 'Bordô,Floral,Musgo,Azul,Telha'),
(16, '2', 'fotos/biah.png', 'BIAH', 'Feita em couro natural,com imãs e infravermelho longo, forro interno touch.', 'R$ 218,00', '33 ao 39', 'Uva,Amarela,Telha,Red,Verde'),
(17, '1', 'fotos/billy.png', 'BILLY', 'Sapatênis de couro com design super moderno. Sola em TR e palmilha Confort em Poliuretano de alto conforto.', 'R$ 407,00', '37 ao 43', 'Marinho,Cinza,Marrom'),
(18, '3', 'fotos/classic.png', 'BOLSA CLASSIC', 'Bolsa especial em couro legítimo.Metais de alta qualidade e zíper reforçado.', 'R$ 616,00', 'único', 'Cor única'),
  • 1

    Welcome to Stack Overflow English! Although very big questions are not prohibited, they are discouraging and will cause fewer people to be interested in your question. I suggest you narrow down the scope of your question, try doing it yourself and come up with a more specific problem instead of waiting for us to do all the work.

  • 2

    @I don’t see the question this way, the scope is well defined. And it is better that the AP add what it has already done(thing he has done even for more) than not to report anything.

  • 2

    I agree @Diegofelipe. Related.

  • See if it helps http://answall.com/questions/14835/como-selectr-categorias-e-contar-n%C3%Each-category product Bamero? Rq=1 Clayton...

  • What I find snarky in this forum are the excesses of formalities instead of giving practical answers, it seems that the lack of communication is greater than the formatting and the unfortunate aesthetics..

  • @Claytoncampos this site is not a forum! It is a site of questions and answers. Questions well elaborated, following the indicated in How to ask a good question usually attract more people to answer, it is not excessive formality, it is to aim for the quality of the questions, so that they are references to other people who have a problem similar to your.

Show 1 more comment
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.