Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
bioshock

Sugestões para implementação [Resolvido]

Recommended Posts

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

Share this post


Link to post
Share on other sites
fnds

Não estou a perceber qual é o problema. Onde estão armazenados os nomes e os ids, na mesma tabela?

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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());

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.