Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bioshock

Sugestões para implementação [Resolvido]

Mensagens Recomendadas

bioshock

Olá,

Gostaria que me elucidassem sobre a melhor maneira de implementar o que preciso.

Estive a fazer um registo de visitas ao site etc etc, e já está tudo a funcionar. Contudo o patrão sugeriu eu implementar esse método mas para os produtos. Ou seja: "Top 10 produtos".

O problema reside em: Os meus produtos são mostrados dinamicamente e são vistos no browser pelo id, assim como os mesmos tem uma ligação com outra tabela (categoria).

A questão centra-se em: De que forma é que eu posso obter os nomes dos id's ?

Ex: ID 1 = Pão

      ID 2 = Manteiga

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Peço desculpa enganei-me no 1º post, expliquei mal.

Eu tenho uma Tabela Produtos, nessa tabela eu guardo o nome dos produtos, etc etc.

Esses produtos são mostrados dinamicamente numa página pelo ID.

E eu queria transformar o ID no nome do produto.

Ou seja, onde está o ID 3 eu precisava de mostrar o nome do produto relativamente a esse ID.

Fiz-me entender?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Assim que vou vendo os produtos, existe um contador que adiciona um valor a cada vez que a página é visualizada.

Portanto, eu consigo mostrar os id's dos produtos + o número de visitas dos mesmos.

Mas preciso de trocar os id's dos produtos para os nomes dos mesmos.

ID 1

Visitas 47

Precisava de:

Nome: Pão

Visitas 47

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

/* Get category name from a category id */
function getCategoryName($categoryId) {
$select_category_query = sprintf("SELECT * FROM table_name WHERE id='%s'", mysql_real_escape_string($categoryId));
$select_category_result = mysql_query($select_category_query);

if (!$select_category_result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $select_category_query;
die($message);
}

$row = mysql_fetch_row($select_category_result);
return $row[1];
}

Alguém sabe se esta função pode resultar na conversão do ID para o nome?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Boas novamente.

Bem, eu penso que o problema esteja nesta query. É o seguinte:

Eu registo com sucesso o ID do produto + o número de visitas.

Agora, na página em que mostro o "Top 10" dos produtos mais vistos, na query em baixo tem de haver uma relação... e essa relação faz com que ele vá buscar os nomes à tabela produtos relativos aos IDs de cada um.

Código para mostrar os produtos:

<?php
include("connection.inc");
$query = mysql_query("SELECT produto, SUM(visitaproduto) FROM information GROUP BY produto ORDER BY SUM(visitaproduto) DESC LIMIT 10")or die("Error: " .mysql_error());

// criar a tabela 
echo "<table border='1' bordercolor='#99CC33'>";
echo "<tr align='center'><h4><th>Produto</th></h4><h4><th>Número Visitas</h4></th></tr>";

// Vai buscar todas as linhas até não haver mais
while($row = mysql_fetch_array($query)) {

// Mostra os detalhas nas linhas
$visitas = $row['SUM(visitaproduto)'];
$produto = $row['produto'];

// cria as linhas
echo "<tr>";
echo "<th width=50>$produto<br></th>";
echo "<th width=50>$visitas<br></th>";
echo "</tr>";
} 

?>

Como vos expliquei, no campo "Produto" vai aparecer o ID dos produtos, e eu preciso que apareça o NOME.

De que forma posso fazer essa relação? Com um Left join?

Edit: Ou seja, algo como:

$query = mysql_query("SELECT information.produto, produtos.nome, SUM(visitaproduto) FROM information LEFT JOIN produtos ON information.produto = produtos.nome GROUP BY produto ORDER BY SUM(visitaproduto) DESC LIMIT 10")or die("Error: " .mysql_error());

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Pronto, realmente ainda não tinha pensado dessa forma. Ou seja bastava-me fazer na tabela produtos.

Esta tabela (information) está a ser usada para processar outros dados..e assim fazia tudo na mesma.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.