Ir para conteúdo

POWERED BY:

Arquivado

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

manogaucho

[Resolvido] Criar lista com 2 tabelas

Recommended Posts

Tudo bem!

 

Assim tenho um sistema rodando, eu modifiquei um pouco ele, para torna-lo adaptável para uma amiga, mas agora estou precisando criar uma lista para mostrar certos produtos, mas to quebrando a cabeça e bem perdido, vamos lá vou tentar explicar.

Neste Link abaixo aparece uma lista com vários produtos com nomes e preços:

Veja aqui o Link

Assim, veja a figura abaixo:

veja_01.jpg

 

Nos itens com a fecha vermelha, aparece o resultado da tabela SS_categories e os resultados da fecha azul aparece o resultado da tabela SS_products .

Mas queria montar uma função que mostrasse apenas os resultados da tabela SS_categories, que só tivesse na tabela SS_products o campo “product_code “ preenchido com o valor 01.tambem teria que aparecer o campo name e o Price da mesma tabela, como mostra a figura acima.

Fiz alguma coisa nesse código abaixo.

 

<?

$conexao = mysql_connect("host","nome usuario","senha");

 

 

$bd = mysql_select_db("nome banco", $conexao) or die ("Não foi possível selecionar o Banco de dados.");

 

$sql = "SELECT * FROM SS_products WHERE product_code = '01'";

 

$resultado = mysql_query($sql, $conexao) or die ("Não foi possível executar a consulta");

echo "<TABLE BORDER=1>

<TR><TH>Nome Produto</TH> <TH>Valor</TH>";

while ($linha = mysql_fetch_array($resultado)) {

$id_item = $linha["name"];

$titulo_item = $linha["Price"];

 

echo "<TR><TD>$id_item</TD>

<TD>$titulo_item</TD></TR>";

}

echo "</TABLE>";

?>

 

Esse código que fiz, só aparece o resultado da tabela SS_products, com os campos “name” e ”Price”, que são preenchidos com 01 do campo product_code. Assim falta aparecer o nome que esta na tabela SS_categories ( Fecha Vermelha - imagem acima ).Não sei se me fiz entender , abaixo esta o link da função que fiz acima.

Veja o Codigo acima, rodando aqui

Agradeço desde já a ajuda!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!

 

Antes de mais nada, quando postar codigo, use o bbcode code ... /code ou php ... /php e nao quote.

Tentando entender seu problema...

 

Neste contexto, deve ter alguma relacao entre a tabela ss_categories e a ss_products, correto? Tipo em ss_products deve ter o codigo da categoria que deve ser o id de daca registro de ss_categories, suponho...

 

Se tiver posso ajudar a resolver seu problema que acredito seja:

 

Continuar exibindo os produtos agrupados por categoria so que com o code = 01. Procede?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!

 

Antes de mais nada, quando postar codigo, use o bbcode code ... /code ou php ... /php e nao quote.

Tentando entender seu problema...

 

Neste contexto, deve ter alguma relacao entre a tabela ss_categories e a ss_products, correto? Tipo em ss_products deve ter o codigo da categoria que deve ser o id de daca registro de ss_categories, suponho...

 

Se tiver posso ajudar a resolver seu problema que acredito seja:

 

Continuar exibindo os produtos agrupados por categoria so que com o code = 01. Procede?

 

Primeior quero agradecer a ajuda, e segundo peço desculpas vou colocar os codigos usando o /code.

Mas vamos lá.

Sim existe uma tabela iguais, é a tabela " categoryID ", abaixo esta a lista das tabela e seus campos, lembarndo que somente o campo " categoryID " é igual ou o mesmo das duas tabelas.


Tabela > SS_categories

Campos Abaixo:

categoryID ( Este campo é o mesmo entre as duas tabelas )
name
parent
products_count
description
picture
products_count_admin

Tabela > SS_products

Campos Abaixo:

productID
categoryID ( Este campo é o mesmo entre as duas tabelas )
name
description
customers_rating
Price
picture
in_stock
thumbnail
customer_votes
items_sold
big_picture
enabled
brief_description
list_price
product_code

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz alguma coisa mas , não funcionou:


<?
$conexao = mysql_connect("xxxxxxxxxx","xxxxxxxx","xxxxxxxxx");


$bd = mysql_select_db("xxxxxxxxxx", $conexao) or die ("Não foi possível selecionar o Banco de dados.");

$sql = "SELECT * FROM SS_products WHERE product_code = '01'
INNER JOIN name FROM SS_categories ORDER BY name";

$resultado = mysql_query($sql, $conexao) or die ("Não foi possível executar a consulta");
echo "<TABLE BORDER=1>
<TR></TR>Produto</TR> <TH>Vendedor</TH> <TH>Valor</TH>";
while ($linha = mysql_fetch_array($resultado)) {
$id_item = $linha["name"];
$titulo_item = $linha["Price"];
$titulo_produto = $linha["name"];

echo "<TR><TD>$titulo_produto</TD>
<TD>$id_item</TD>
<TD>$titulo_item</TD></TR>";
}
echo "</TABLE>";
?>


 

Nao faz consulta, de uma olhada no link abaixo:

Veja aqui!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

 

Desculpa ai a demora na res... Tava meio ocupado.

Vou ver aqui o que fez e seu ultimo post.

 

Olha so o que fiz:

 

<?php
/*** SUA CONEXAO AQUI ***/

#
# COLETA AS CATEGORIAS
#

$sql               = 'SELECT * FROM  ss_categories ORDER BY name';
$cat_consulta      = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

// SE EXISTEM CAT'S
If ($cat_registros = mysql_num_rows($cat_consulta))
  {
    // Inicia a tabela
    Echo '<table border="1">';

    // PERCORRE TODAS AS CAT'S
    While ($cat = mysql_fetch_assoc($cat_consulta))
          {
            // Linha da categoria
            Echo '<tr><td>'.$cat['name'].'</td></tr>';

            #
            # COLETA OS PRODUTOS DA CAT ATUAL E COM CODE = 01
            #

            $sql            = 'SELECT * FROM ss_products WHERE categoryID = '.$cat['categoryID'].' product_code = "01" ORDER BY name';
            $prod_consulta  = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

            // SE HA PRODUTOS
            If ($prod_registros = mysql_num_rows($prod_consulta))
               {
                 // PERCORRE OS PRODUTOS QUE ENCONTROU
                 While ($prod = mysql_fetch_assoc($prod_consulta))
                       {
                         // Linha do produto atual
                         Echo '<tr><td>'.$prod['name'].' - '.$prod['Price'].'</td></tr>';
                       }
               }
            // SE NAO HA PRODUTOS
            Else { Echo '<tr><td>não ha produtos nesta cat com product_code = 01</td></tr>'; }
          }

    // Fim da table
    Echo '</table>';
  }
// NAO EXISTE CAT'S
Else { Exit ('Não há categorias!'); }
?>

Atente aos comentarios e procure entender o que fiz:

- Coletei todas as categorias;

- Jogei no primeiro loop while para percorrer todas

- Dentro do loop de cada cat eu verifiquei se ha produtos naquela cat e se o product_code era igual a 01

[ 'SELECT * FROM ss_products WHERE categoryID = '.$cat['categoryID'].' product_code = "01" ORDER BY name' ]

- Se existem regitros de produtos e sai imprimido a linha da table.

 

Agora e contigo modifique e adeque ai o codigo a seu layout.

Qualquer erro, post ai!

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

 

Desculpa ai a demora na res... Tava meio ocupado.

Vou ver aqui o que fez e seu ultimo post.

 

 

<?php
/*** SUA CONEXAO AQUI ***/

#
# COLETA AS CATEGORIAS
#

$sql               = 'SELECT * FROM  ss_categories ORDER BY name';
$cat_consulta      = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

// SE EXISTEM CAT'S
If ($cat_registros = mysql_num_rows($cat_consulta))
  {
    // Inicia a tabela
    Echo '<table border="1">';

    // PERCORRE TODAS AS CAT'S
    While ($cat = mysql_fetch_assoc($cat_consulta))
          {
            // Linha da categoria
            Echo '<tr><td>'.$cat['name'].'</td></tr>';

            #
            # COLETA OS PRODUTOS DA CAT ATUAL E COM CODE = 01
            #

            $sql            = 'SELECT * FROM ss_products WHERE categoryID = '.$cat['categoryID'].' product_code = "01" ORDER BY name';
            $prod_consulta  = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

            // SE HA PRODUTOS
            If ($prod_registros = mysql_num_rows($prod_consulta))
               {
                 // PERCORRE OS PRODUTOS QUE ENCONTROU
                 While ($prod = mysql_fetch_assoc($prod_consulta))
                       {
                         // Linha do produto atual
                         Echo '<tr><td>'.$prod['name'].' - '.$prod['Price'].'</td></tr>';
                       }
               }
            // SE NAO HA PRODUTOS
            Else { Echo '<tr><td>não ha produtos nesta cat com product_code = 01</td></tr>'; }
          }

    // Fim da table
    Echo '</table>';
  }
// NAO EXISTE CAT'S
Else { Exit ('Não há categorias!'); }
?>

Atente aos comentarios e procure entender o que fiz:

- Coletei todas as categorias;

- Jogei no primeiro loop while para percorrer todas

- Dentro do loop de cada cat eu verifiquei se ha produtos naquela cat e se o product_code era igual a 01

[ 'SELECT * FROM ss_products WHERE categoryID = '.$cat['categoryID'].' product_code = "01" ORDER BY name' ]

- Se existem regitros de produtos e sai imprimido a linha da table.

 

Agora e contigo modifique e adeque ai o codigo a seu layout.

Qualquer erro, post ai!

Abraço.

 

Oi tudo bem!

so troquei os ss_products por SS_products, o resto deixei como tu fez.

Coloquei ficou assim:

<?php
$conexao = mysql_connect("host","usuario","senha"); //Faz conexão com o mysql
$db = mysql_select_db("bancodedados");

#
# COLETA AS CATEGORIAS
#

$sql               = 'SELECT * FROM  SS_categories ORDER BY name';
$cat_consulta      = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

// SE EXISTEM CAT'S
If ($cat_registros = mysql_num_rows($cat_consulta))
  {
    // Inicia a tabela
    Echo '<table border="1">';

    // PERCORRE TODAS AS CAT'S
    While ($cat = mysql_fetch_assoc($cat_consulta))
          {
            // Linha da categoria
            Echo '<tr><td>'.$cat['name'].'</td></tr>';

            #
            # COLETA OS PRODUTOS DA CAT ATUAL E COM CODE = 01
            #

            $sql            = 'SELECT * FROM SS_products WHERE categoryID = '.$cat['categoryID'].' product_code = "01" ORDER BY name';
            $prod_consulta  = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

            // SE HA PRODUTOS
            If ($prod_registros = mysql_num_rows($prod_consulta))
               {
                 // PERCORRE OS PRODUTOS QUE ENCONTROU
                 While ($prod = mysql_fetch_assoc($prod_consulta))
                       {
                         // Linha do produto atual
                         Echo '<tr><td>'.$prod['name'].' - '.$prod['Price'].'</td></tr>';
                       }
               }
            // SE NAO HA PRODUTOS
            Else { Echo '<tr><td>não ha produtos nesta cat com product_code = 01</td></tr>'; }
          }

    // Fim da table
    Echo '</table>';
  }
// NAO EXISTE CAT'S
Else { Exit ('Não há categorias!'); }
?>

Mas deu esse erro:

Erro MYSQL (1064)

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'product_code = "01" ORDER BY name' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja a pagina que estamos criando aqui:

Clique aqui

Certo, tire as aspas do valor de product_code = '01':

 

$sql            = 'SELECT * FROM ss_products WHERE categoryID = '.$cat['categoryID'].' product_code = 1 ORDER BY name';

Isso se da pelo fato de o valor do campo ser numerico. Como nao postou a estrutura com o tipo de dados nao pude perceber isso, desculpe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!

 

Funcionou?

Entendeu a logica?

Ops nã tinha lido acima. Desculpas

 

Sem Problemas.

Olha, cometi um erro:

 

$sql            = 'SELECT * FROM ss_products WHERE categoryID = '.$cat['categoryID'].' AND product_code = 1 ORDER BY name';

Faltou o AND. Desculpe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi!

 

Funcionou?

Entendeu a logica?

Ops nã tinha lido acima. Desculpas

 

Sem Problemas.

Olha, cometi um erro:

 

$sql            = 'SELECT * FROM ss_products WHERE categoryID = '.$cat['categoryID'].' AND product_code = 1 ORDER BY name';

Faltou o AND. Desculpe.

 

Oi tudo bem Fiz assim:

1ª com as em "01"

deu esse erro:

$sql = 'SELECT * FROM SS_products WHERE categoryID = '.$cat['categoryID'].' AND product_code = '01' ORDER BY name';

2ª sem asps em 01

da Uma olhada como ficou no link abaixo:

Veja aqui

 

Depois posso mudar a pagina, assim o erro muda, então fica uma imagem da pagina abaixo, para outros com duvidas

veja_02.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao agora deu ne?

E so adapatar ai a impressao a somente o que interessa.

Ok entendi, qualquer duvida au dou um alo, Valeu pela enorme ajuda!

 

So uma duvida, to querendo mudar uma coisa, sabe onde aparecer a mensagem " não ha produtos nesta cat com product_code = 01 ", dos campos que não estão preenchidos por " 01 ", queria simplesmente não listar, pois assim, ficaria somente os produtos que estão preenchidos pelo valor indicado.

Demais Muito Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aha!

 

Vamos ver as mods entao, olha o que vou adaptar:

 

<?php
$conexao = mysql_connect("host","usuario","senha"); //Faz conexão com o mysql
$db = mysql_select_db("bancodedados");

#
# COLETA AS CATEGORIAS
#

$sql               = 'SELECT * FROM  SS_categories ORDER BY name';
$cat_consulta      = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

// SE EXISTEM CAT'S
If ($cat_registros = mysql_num_rows($cat_consulta))
  {
    // Inicia a tabela
    Echo '<table border="1">';

    // PERCORRE TODAS AS CAT'S
    While ($cat = mysql_fetch_assoc($cat_consulta))
          {
            /* NAO VOU MAIS CRIAR A LINHA DA CAT ANTES DE TER CERTEZA QUE TEM PRODUTO COM OS REQUISITOS NECESSARIOS
            // Linha da categoria
            Echo '<tr><td>'.$cat['name'].'</td></tr>';
            */

            #
            # COLETA OS PRODUTOS DA CAT ATUAL E COM CODE = 01
            #

            $sql            = 'SELECT * FROM SS_products WHERE categoryID = '.$cat['categoryID'].' AND product_code = 1 ORDER BY name';
            $prod_consulta  = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

            // SE HA PRODUTOS
            If ($prod_registros = mysql_num_rows($prod_consulta))
               {
                 /* JA QUE TEM PRODUTO, AGORA CRIO A LINHA DA CAT */
                 // Linha da categoria
                 Echo '<tr><td>'.$cat['name'].'</td></tr>';

                 // PERCORRE OS PRODUTOS QUE ENCONTROU
                 While ($prod = mysql_fetch_assoc($prod_consulta))
                       {
                         // Linha do produto atual
                         Echo '<tr><td>'.$prod['name'].' - '.$prod['Price'].'</td></tr>';
                       }
               }
            /* SE NAO HA PRODUTOS -> NAO IMPRIME MAIS NADA VOU TIRAR O ELSE */
            //Else { Echo '<tr><td>não ha produtos nesta cat com product_code = 01</td></tr>'; }
          }

    // Fim da table
    Echo '</table>';
  }
// NAO EXISTE CAT'S
Else { Exit ('Não há categorias!'); }
?>

E assim? Teste! Veja os comentarios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aha!

 

Vamos ver as mods entao, olha o que vou adaptar:

 

<?php
$conexao = mysql_connect("host","usuario","senha"); //Faz conexão com o mysql
$db = mysql_select_db("bancodedados");

#
# COLETA AS CATEGORIAS
#

$sql               = 'SELECT * FROM  SS_categories ORDER BY name';
$cat_consulta      = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

// SE EXISTEM CAT'S
If ($cat_registros = mysql_num_rows($cat_consulta))
  {
    // Inicia a tabela
    Echo '<table border="1">';

    // PERCORRE TODAS AS CAT'S
    While ($cat = mysql_fetch_assoc($cat_consulta))
          {
            /* NAO VOU MAIS CRIAR A LINHA DA CAT ANTES DE TER CERTEZA QUE TEM PRODUTO COM OS REQUISITOS NECESSARIOS
            // Linha da categoria
            Echo '<tr><td>'.$cat['name'].'</td></tr>';
            */

            #
            # COLETA OS PRODUTOS DA CAT ATUAL E COM CODE = 01
            #

            $sql            = 'SELECT * FROM SS_products WHERE categoryID = '.$cat['categoryID'].' AND product_code = 1 ORDER BY name';
            $prod_consulta  = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

            // SE HA PRODUTOS
            If ($prod_registros = mysql_num_rows($prod_consulta))
               {
                 /* JA QUE TEM PRODUTO, AGORA CRIO A LINHA DA CAT */
                 // Linha da categoria
                 Echo '<tr><td>'.$cat['name'].'</td></tr>';

                 // PERCORRE OS PRODUTOS QUE ENCONTROU
                 While ($prod = mysql_fetch_assoc($prod_consulta))
                       {
                         // Linha do produto atual
                         Echo '<tr><td>'.$prod['name'].' - '.$prod['Price'].'</td></tr>';
                       }
               }
            /* SE NAO HA PRODUTOS -> NAO IMPRIME MAIS NADA VOU TIRAR O ELSE */
            //Else { Echo '<tr><td>não ha produtos nesta cat com product_code = 01</td></tr>'; }
          }

    // Fim da table
    Echo '</table>';
  }
// NAO EXISTE CAT'S
Else { Exit ('Não há categorias!'); }
?>

E assim? Teste! Veja os comentarios.

 

Acertou na mosca. Muito Obrigado novamente.

Veja o Link Funcionando abaixo.

Clique aqui

 

Valeu mesmo, por toda ajuda.

Abaixo esta o link modificado, logico somento o Visual,pois o principal ja foi feito, por nosso amigo " InterPlanet ".

Clique aqui

Abaixo o Codigo Modificado:


<?php
$conexao = mysql_connect("host","usuario","senha"); //Faz conexão com o mysql
$db = mysql_select_db("nome banco");
#
# COLETA AS CATEGORIAS
#

$sql               = 'SELECT * FROM  SS_categories ORDER BY name';
$cat_consulta      = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

// SE EXISTEM CAT'S
If ($cat_registros = mysql_num_rows($cat_consulta))
  {
    // Inicia a tabela
    Echo '<table width="600" border="5" align="center" bgcolor="#FFFFCC">';

    // PERCORRE TODAS AS CAT'S
    While ($cat = mysql_fetch_assoc($cat_consulta))
          {
            /* NAO VOU MAIS CRIAR A LINHA DA CAT ANTES DE TER CERTEZA QUE TEM PRODUTO COM OS REQUISITOS NECESSARIOS
            // Linha da categoria
            Echo '<tr><td>'.$cat['name'].'</td></tr>';
            */

            #
            # COLETA OS PRODUTOS DA CAT ATUAL E COM CODE = 01
            #

            $sql            = 'SELECT * FROM SS_products WHERE categoryID = '.$cat['categoryID'].' AND product_code = 01 ORDER BY name';
            $prod_consulta  = mysql_query($sql) OR Die ('Erro MYSQL ('.mysql_errno().')<br>'.mysql_error());

            // SE HA PRODUTOS
            If ($prod_registros = mysql_num_rows($prod_consulta))
               {
                 /* JA QUE TEM PRODUTO, AGORA CRIO A LINHA DA CAT */
                 // Linha da categoria
                 Echo '<tr><td><div align="center"><strong><font color="#FF0000" size="4">'.$cat['name'].'</font></strong></td></tr>';

                 // PERCORRE OS PRODUTOS QUE ENCONTROU
                 While ($prod = mysql_fetch_assoc($prod_consulta))
                       {
                         // Linha do produto atual
                         Echo '<tr><td><div align="left"><strong><font size="3">Tudo bem! '.$prod['name'].' Seu Valor colocado foi: R$: '.$prod['Price'].'   Reais</font></strong></td></tr>';
                       }
               }
            /* SE NAO HA PRODUTOS -> NAO IMPRIME MAIS NADA VOU TIRAR O ELSE */
            //Else { Echo '<tr><td>não ha produtos nesta cat com product_code = 01</td></tr>'; }
          }

    // Fim da table
    Echo '</table>';
  }
// NAO EXISTE CAT'S
Else { Exit ('Não há categorias!'); }
?>

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.