Jump to content

Sugestões para implementação [Resolvido]


bioshock
 Share

Recommended Posts

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

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

/* 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?

Link to comment
Share on other sites

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());
Link to comment
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
 Share

×
×
  • Create New...

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.