Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, sou iniciante em PHP e mais iniciante ainda em mysql.
Tenho uma dúvida e gostaria de ajuda de vcs.Estou criando um sistema online onde posso verificar em ordem, os produtos mais vendidos nas 3 lojas.Exemplo de como deve ficar:
Produto | Loja A| Loja B| Loja C| Total |
Arroz | 5 | 4 | 2 | 11 |
Feijão | 3 | 6 | 7 | 16 |
Oleo | 7 | 3 | 9 | 19 |
Gostaria de saber qual loja está vendendo mais os produtos e a quantidade, além de ter a soma do total vendido nas 3 lojas.
Estou postando parte do código que levará esse comando
>
<?php
$ssql = "SELECT * FROM snc_vendas GROUP BY produto";
$rs = mysql_query($ssql);
$num_total_registros = mysql_num_rows($rs);
while($row = mysql_fetch_array($rs)){
$id_venda = $row['id'];
$produto = $row['produto'];
$peso = $row['peso'];
$marca = $row['marca'];
$loja = $row['loja'];
// alternando as cores da tabela
$i++;
if($i % 2 == 0 ? $cor="f9f9cc" : $cor="fbe9e9")
echo "
<tr>
<td width='15%' scope='col' align='center' style='background-color:#$cor'>$produto - ($peso)</td>
<td width='15%' scope='col' align='center' style='background-color:#$cor'>$marca</td>";
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "A"){
echo "$num_total_registros</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "B"){
echo "$num_total_registros</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "C"){
echo "$num_total_registros</td>";
}eu já tive pesquisando sobre isso, mas é muita informação e gostaria se alguém tivesse como me mostrar um exemplo parecido com o que preciso.
Desde já agradeço a colaboração
SELECT * SUM(campo-para-somar) AS total FROM sua-tabela order by campo-para-somar DESC
Feito isso testa colocando os ifs dentro do while fazendo então a contagem.
Exemplo:
if ($loja == "A"){
$cont1++;
}else if ($loja == "B"){
$cont2++;
}
else{
$cont3++;
}
É uma maneira. Porém sei que dá pra fazer isso com SQL, mas não tenho como testar aqui.
Acrescentando ...
Tenta com o group by:
SELECT * SUM(campo-para-somar) AS total FROM sua-tabela group by loja order by campo-para-somar DESC
Obrigado Marcos, mas não estou conseguindo das maneiras que me passou, como eu disse, sou novato em php.
mas coloquei assim e retorna um erro Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/meusite/public_html/admin/result_ranking_loja.php on line 27:
>
<?php
$ssql = "SELECT * SUM(produto) AS total FROM vendas group by loja order by produto DESC";
$rs = mysql_query($ssql);
while($row = mysql_fetch_array($rs)){
$id_venda = $row['id'];
$produto = $row['produto'];
$peso = $row['peso'];
$marca = $row['marca'];
$loja = $row['loja'];
echo "
<tr>
<td width='15%' scope='col' align='center' style='background-color:#$cor'>$produto - ($peso)</td>
<td width='15%' scope='col' align='center' style='background-color:#$cor'>$marca</td>";
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "A"){
echo "$cont1++</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "B"){
echo "$cont2++</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "C"){
echo "$cont3++</td>";
}
echo "</tr>";
echo "<tr><td colspan='5'><hr></td></tr>";
}Repare que criamos um "apelido" para o campo produto(total).
....
SELECT * SUM(produto) AS total FROM vendas group by loja order by produto DESC
//então recupere o valor da tupla como abaixo
$produto = $row['total'];
tem alguma coisa errada nesse SELECT que não tá deixando armar a tela. Retirei o "SUM(produto) AS total" e abriu a tela, mas sem os valores certos
dá uma olhada ai no link
http://www.flashmais.com.br/snc2/admin/result_ranking_loja.php
Marcos, eu vi, mas ali mostra a soma de valores e no meu caso é soma de vezes que foi vendido, o SUM soma números e no caso aqui é soma de produtos.
no link http://www.tizag.com/mysqlTutorial/mysqlcount.php acho que seria a melhor opção, olha ai
O mais próximo que consegui chegar foi assim;
>
<?php
$query = "SELECT *, COUNT(produto) FROM snc_vendas GROUP BY produto";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$produto = $row["produto"];
$id_venda = $row['id'];
$peso = $row['peso'];
$marca = $row['marca'];
$loja = $row['loja'];
$quantidade = $row['quantidade'];
// alternando as cores da tabela
$i++;
if($i % 2 == 0 ? $cor="f9f9cc" : $cor="fbe9e9")
echo "
<tr>
<td width='15%' scope='col' align='center' style='background-color:#$cor'>$produto - ($peso)</td>
<td width='15%' scope='col' align='center' style='background-color:#$cor'>$marca</td>";
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "Vitória"){
echo "". $row['COUNT(produto)'] ."";
echo "</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "Praia da Costa"){
echo "". $row['COUNT(produto)'] ."";
echo "</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "Vila Velha"){
echo "". $row['COUNT(produto)'] ."";
echo "</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
echo "". $row['COUNT(produto)'] ."";
echo "</td>";
echo "</tr>";
echo "<tr><td colspan='6'><hr></td></tr>";
}
echo "</table>";
?>
A soma total está correta, mas na distribuição nas lojas não confere nada.
Tem uma olha tabela ja com as lojas?
Cara você tem uma lista de produtos ja defina?
Olá Ricardo, vc tem algum exemplo de como eu usaria isso pra adaptar no meu script?
Na mesma tabela estão as 3 lojas, produtos e quantidade vendidas, alem de outras coisas.... mas só esses 3 grupos que me interessam pra esse problema
Não mexerei com valores monetários nesse problema.. só mesmo a quantidade vendida em cada loja e no final o total de produtos vendidos. só isso! Servirá pra saber qual loja está vendendo mais cada produto.
Verifique nesse link como é.
http://www.flashmais.com.br/snc2/admin/result_ranking_loja.php
Nesse caso eu precisaria unir as linhas que contem o mesmo produto e nas colunas mostrariam os resultados de cada loja e no fim... o total
Só consegui chegar até nesse ponto.
>
<?php
$query = "SELECT *, COUNT(produto) FROM snc_vendas GROUP BY produto, loja";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$produto = $row["produto"];
$id_venda = $row['id'];
$peso = $row['peso'];
$marca = $row['marca'];
$loja = $row['loja'];
$quantidade = $row['quantidade'];
// alternando as cores da tabela
$i++;
if($i % 2 == 0 ? $cor="f9f9cc" : $cor="fbe9e9")
echo "
<tr>
<td width='15%' scope='col' align='center' style='background-color:#$cor'>$produto - ($peso)</td>
<td width='15%' scope='col' align='center' style='background-color:#$cor'>$marca</td>";
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "Vitória"){
echo "". $row['COUNT(produto)'] ."";
echo "</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "Praia da Costa"){
echo "". $row['COUNT(produto)'] ."";
echo "</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
if ($loja == "Vila Velha"){
echo "". $row['COUNT(produto)'] ."";
echo "</td>";
}
echo "<td width='10%' scope='col' align='center' style='background-color:#$cor'>";
echo "". $row['COUNT(produto)'] ."";
echo "</td>";
echo "</tr>";
echo "<tr><td colspan='6'><hr></td></tr>";
}
echo "</table>";
?>
</table>
Desde já agradeço
Aqui brother este link pode le ajuda ele tem exemplo de com usar case a
http://forum.imasters.com.br/topic/489359-contar-valores-iguais-de-varias-colunas/
Começe pesquisando por https://www.google.com/search?hl=pt&site=&source=hp&q=select+count&btnG=Pesquisar'>COUNT