Ir para conteúdo

POWERED BY:

Arquivado

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

Wagner Martins - SC

Site com categoria de produtos

Recommended Posts

Olá,

 

Gostaria da ajuda de vcs em um site onde terá categoria de produtos.

 

Eh o seguinte:

 

Estou fazendo um site onde o adminstrador tera que cadastrar uma categoria de produtos, e depois cadastrar os produtos nessa categoria, com fotos e informações sobre ele.

 

Gostaria de saber como posso fazer com que o PHP procure no banco de dados cada categoria de produtos que o administrador cadastrou, e também mostrar junto os produtos cadastrados nessa categoria.

 

Obrigado desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz uma consulta assim

<?
$sql    = "SELECT categoria,nomeProduto from Produto";
$result = mysql_query($sql);
while($itens = mysql_fetch_array($result)){
   echo "categoria".$itens["categoria"]." produto ".$itens["nomeProduto"]."<br>";
}

para isto você deve ter a tabela produto cadastrada e dentro dela os campos categoria e nomeProduto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beleza, funcionou corretamente,

 

Mais só tem uma coisa, qdo imprime dois produtos de uma mesma categoria, ele fica assim:

 

Linha ligth

bolo lev

Linha ligth

Pão lev

 

Gostaria que ficasse asimm:

 

Linha ligth

bolo lev

Pão lev

 

Sera que tem como?

 

Valeuuu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, esta ai:

 

$sql    = "SELECT categoria,nome_produto,codigo from produtos";
$result = mysql_query($sql);
while($itens = mysql_fetch_array($result)){

$codigo = $itens["codigo"];
$categoria = $itens["categoria"];
$nome_produto = $itens["nome_produto"];


   echo "<h3>$categoria</h3>
   <a href=produtos.php?codigo=$codigo title=$nome_produto>$nome_produto</a><br>";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se ira funcionar:

$sql = "SELECT categoria,nome_produto,codigo from produtos";
$result = mysql_query($sql);
while($itens = mysql_fetch_array($result)){

$codigo = $itens["codigo"];
$categoria = $itens["categoria"];
$nome_produto = $itens["nome_produto"];


 echo "<h3>$categoria</h3>";
 echo "<a href=produtos.php?codigo=$codigo title=$nome_produto>$nome_produto</a><br>";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou a mesma coisa brother:

 

<?php $sql = "SELECT * from produtos";
$result = mysql_query($sql);
while($itens = mysql_fetch_array($result)){

$codigo = $itens["codigo"];
$categoria = $itens["categoria"];
$nome_produto = $itens["nome_produto"];


 echo "<h3>$categoria</h3>";
 echo "<a href=produtos.php?codigo=$codigo title=$nome_produto>$nome_produto</a><br>";

}
?>

imprime na tela assim:

 

Linha ligth

bolo lev

Linha ligth

Pão lev

 

teria q ficarf assim

 

Linha ligth

bolo lev

Pão lev

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta ai:

 

CREATE TABLE `produtos` (
  `codigo` tinyint(3) NOT NULL AUTO_INCREMENT,
  `imagem` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `imagem_menor` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `nome_produto` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `descricao` mediumtext COLLATE latin1_general_ci NOT NULL,
  `categoria` varchar(255) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`codigo`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=14 ;

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

INSERT INTO `produtos` VALUES(13, 'imagem_1256126352.jpg', 'menor_1256126352.jpg', 'bolo lev', 'asn askjda sdj', 'Linha ligth');
INSERT INTO `produtos` VALUES(12, 'imagem_1256126331.jpg', 'menor_1256126331.jpg', 'Pão lev', 'kaojsd aks daplk osk ao aqlo sdk ldklod<strong>k oki </strong>', 'Linha ligth');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho a tabela categorias

CREATE TABLE `categorias` (
  `codigo` tinyint(11) NOT NULL AUTO_INCREMENT,
  `categorias_cat` varchar(255) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`codigo`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2;

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

INSERT INTO `categorias` VALUES(1, 'Linha ligth');

e a tabela produtos:

CREATE TABLE `produtos` (
  `codigo` tinyint(3) NOT NULL AUTO_INCREMENT,
  `imagem` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `imagem_menor` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `nome_produto` varchar(255) COLLATE latin1_general_ci NOT NULL,
  `descricao` mediumtext COLLATE latin1_general_ci NOT NULL,
  `categoria` varchar(255) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`codigo`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=14;

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

INSERT INTO `produtos` VALUES(13, 'imagem_1256126352.jpg', 'menor_1256126352.jpg', 'bolo lev', 'asn askjda sdj', 'Linha ligth');
INSERT INTO `produtos` VALUES(12, 'imagem_1256126331.jpg', 'menor_1256126331.jpg', 'Pão lev', 'kaojsd aks daplk osk ao aqlo sdk ldklod<strong>k oki </strong>', 'Linha ligth');

 

Com INNER JOIN seria mais ou menos assim?

 

$result = mysql_query("SELECT * FROM categorias INNER JOIN produtos ON categorias.categorias_cat=categoria.categoria");
while ($row = mysql_fetch_array($result)){

}

como faço pata imprimir mna tela dessa forma?

 

Nome da categoria

Produto

Produto2

 

Nome da categoria2

Produto3

Produto4

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais simples é fazer 2 loops.

Um listando as categorias, e outro encaixado dentro desse, listando os produtos de cada categoria.

 

Ai o WHERE do loop interno, pega o valor que tá vindo do loop externo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O melhor NÃO é fazer dois loops. O melhor é fazer assim...

 

<?php 
$sql = "SELECT * from produtos";
$result = mysql_query($sql);
// aqui definimos a $categoria, para evitar NOTICE
$categoria = '';

while($itens = mysql_fetch_array($result)){

// aqui testamos. Se a categoria que estiver sendo exibida for diferente da última categoria
// exibimos o título. Se for igual, só vai exibir o link
if ($categoria != $itens['categoria'])
{
   echo '<h3>'.$itens['categoria'].'</h3>';
   $categoria = $itens['categoria'];
} 
echo '<a href=produtos.php?codigo='.$itens['codigo'].'>'.$itens['nome_produto'].'</a><br>';
}
?>

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora ele imprime assim:

Linha ligth

bolo lev

asasdas

Linha Lev

Pão de batato lev

Linha ligth

Pão lev

sdsa

Linha Lev

jasdk jaskd

 

Deveria ser assim:

 

 

Linha ligth

bolo lev

asasdas

Pão lev

sdsa

Linha Lev

Pão de batato lev

jasdk jaskd

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então primeiro ordene por categoria ( ORDER BY `categoria` ) , antes de fazer o loop com o if interno como o Carlos sugeriu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria assim?

$sql = "SELECT * from produtos order by '$categoria'";
$result = mysql_query($sql);
// aqui definimos a $categoria, para evitar NOTICE
$categoria = '';

while($itens = mysql_fetch_array($result)){

// aqui testamos. Se a categoria que estiver sendo exibida for diferente da última categoria
// exibimos o título. Se for igual, só vai exibir o link
if ($categoria != $itens['categoria'])
{
   echo '<h3>'.$itens['categoria'].'</h3>';
   $categoria = $itens['categoria'];
} 
echo '<a href=produtos.php?codigo='.$itens['codigo'].'>'.$itens['nome_produto'].'</a><br>';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe um erro de modelagem nas tuas tabelas, ne?!

redundância.

 

Você está guardando um varchar `categoria` na tabela produto?

Deveria ser apenas um ID, 'apontando' para a outra tabela.

 

Seria somente isso, com a modelagem atual(oque eu te disse para fazer):

$sql = "SELECT * FROM `produtos` ORDER BY `categoria` ";
Sugiro remodelar esse banco, pesquisando sobre normalização

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wawa... você tem que separar as tabelas...

 

Tem que ter uma tabela Categorias e outra Produtos... e a relação dela é 1:n

 

 

 

Categorias

| id

| categoria

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

|

|

/\

 

Produtos

| codigo

| nome

| categorias_id

| etc

| etc

| eetc

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

 

 

 

 

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.