Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou com um problema, estou fazendo um sistema, e estava tudo bem até que eu não consegui mais progredir.
tenho uma pagina com um sistema de pesquisa que faz uma consulta de acordo com o nome do usuario e uma data inicial e final (LIKE +BETWEEN)
Ela está funcionando certinho na pesquisa, porém, eu necessito que ela faça um tabelamento diferente.
Preciso que os produtos com o mesmo nome sejam exibidos na mesma linha com os campos entrada e saida em suas respectivas colunas e só exista uma linha para cada produto indiferente se é uma entrada ou saida. E que o total de entradas/saidas que existir no sql seja somado se forem do mesmo produto.
Olhe na imagem abaixo o que eu preciso:
SOCORRO!
meu codigo está assim:
$conn = @mysql_connect("localhost", "", "") or die("Não foi possível a conexão com o Banco");
// Selecionando banco
$db = @mysql_select_db("", $conn) or die("Não foi possível selecionar o Banco");
// Recuperamos a ação enviada pelo formulário
$a = isset($_GET['a']) ? $_GET['a'] : '';
// Verificamos se a ação é de busca
if ($a == "buscar") {
// Pegamos a palavra
$palavra = trim($_POST['palavra']);
$palavra2 = trim($_POST['palavra2']);
$data1 = $_POST['data1'];
$data2 = $_POST['data2'];
$sql = mysql_query("SELECT * FROM historico WHERE usuario LIKE '%".$palavra."%' AND data BETWEEN '$data1' AND '$data2'");
$numRegistros = mysql_num_rows($sql);
// Se houver pelo menos um registro, exibe-o
if ($numRegistros != 0) {
// Exibe os resultados da pesquisa
while ($produto = mysql_fetch_object($sql)) {
echo "
<tr>
<td>".$produto->usuario . " </td>
<td>".$produto->produto . " ( ".$produto->tipo . ")</td>
<td>".$produto->custo." </td>
<td>".$produto->preço." </td>
<td>".$produto->quantidade." </td>
<td> </td>
<td> </td>
<td> </td>
<td width=\"10px\"><a href=\"editar.php?id=$id\"><div class=\"icon-edit\"><div class=\"tooltiptext\">Editar</div></div></a>
<a href=\"excluir.php?id=$id\" onclick=\"return confirm('Confirmar exclusão do registro?');\"></div>
<div class=\"icon-trash\"><div class=\"tooltiptext\">Excluir</div></div></a> </td>";
}
} else {
echo "Nenhum dado encontrado com os critérios ".$palavra.", ".$palavra2.", ".$data1.", ".$data2."";
}
}
?>Oi Motta, antes de postar a minha duvida aqui, eu pesquisei e inseri a função GROUP BY, ela realmente funciona.
Não consegui fazer ela capturar a quantidade do primeiro registro somada com a quantidade do segundo registro, para que seja exibido o valor correto na quantidade.
exemplo, produto 1 (entrada) 10 unidades
produto 1 (entrada) 20 unidades
imprimir: produto 1 (entrada) 30 unidades
Com o GROUP BY ele retorna os valores apenas do primeiro registro.
O que de errado ?
Poste o sql
erro em si não dá nenhum, mais não resolve o problema.
SEM O GROUP BY
COM O GROUP BY
não sei se é possivel recuperar os dados que foram ocultados pelo group by, se existir, não sei o nome dessa função, nem como implementar.
Obrigada
Poste o sql.
$conn = @mysql_connect("localhost", "", "") or die("Não foi possível a conexão com o Banco");
// Selecionando banco
$db = @mysql_select_db("", $conn) or die("Não foi possível selecionar o Banco");
// Recuperamos a ação enviada pelo formulário
$a = isset($_GET['a']) ? $_GET['a'] : '';
// Verificamos se a ação é de busca
if ($a == "buscar") {
// Pegamos a palavra
$palavra = trim($_POST['palavra']);
$palavra2 = trim($_POST['palavra2']);
$data1 = $_POST['data1'];
$data2 = $_POST['data2'];
$sql = mysql_query("SELECT * FROM historico WHERE usuario LIKE '%".$palavra."%' AND data BETWEEN '$data1' AND '$data2'");
$numRegistros = mysql_num_rows($sql);
// Se houver pelo menos um registro, exibe-o
if ($numRegistros != 0) {
// Exibe os resultados da pesquisa
while ($produto = mysql_fetch_object($sql)) {
echo "
<tr>
<td>".$produto->usuario . " </td>
<td>".$produto->produto . " ( ".$produto->tipo . ")</td>
<td>".$produto->custo." </td>
<td>".$produto->preço." </td>
<td>".$produto->quantidade." </td>
<td> </td>
<td> </td>
<td> </td>
<td width=\"10px\"><a href=\"editar.php?id=$id\"><div class=\"icon-edit\"><div class=\"tooltiptext\">Editar</div></div></a>
<a href=\"excluir.php?id=$id\" onclick=\"return confirm('Confirmar exclusão do registro?');\"></div>
<div class=\"icon-trash\"><div class=\"tooltiptext\">Excluir</div></div></a> </td>";
}
} else {
echo "Nenhum dado encontrado com os critérios ".$palavra.", ".$palavra2.", ".$data1.", ".$data2."";
}
}
?>Seu SELECT não tem GROUP BY...
Pesquise por GROUP BY.
http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html
https://dev.mysql.com/doc/refman/5.5/en/group-by-handling.html