Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vilson Gabriel

[Resolvido] Agrupar Registros com o mesmo valor na tabela

Recommended Posts

Seguinte, estou fazendo um sistema de enquete, ja esta quase tudo pronto, porem falta a parte de exibir o resultado da enquete.

A enquete é formada por 3 tabelas:

Pergunta

Opcoes

Votos

 

O que eu quero é:

Contar o numero de registros ma tabela votos, agrupar e contar os registros do campo vt_op_id para exibir a % de cada voto.

 

So que não sei como fazer esse select maluco...

Alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade do topico, so aproveitei como pegar o total dos campos...

Pelo oque vi no topico você soma e faz a media oque eu quero é contar e agrupar os que tem o mesmo valor.

Exemplo

 

vt_op_id = 6

vt_op_id = 3

vt_op_id =4

vt_op_id =6

vt_op_id = 6

vt_op_ id = 3

 

No Caso eu queria que saisse assim:

Total: 6

vt_op_id = 6 total 3

vt_op_id = 3 total 2

vi_op_id = 4 total 1

 

E depois quero fazer o calculo de quanto % cada grupo representa ao Total

Ah, estou usando o MYSQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, aqui tem um codigo que acho que faz o que quero, mas não consigo adapta-lo a minha necessidade.

$query=mysql_query("SELECT COUNT(*) as totalvotes FROM votes WHERE option_id IN(SELECT id FROM options WHERE ques_id='$poll_id')");
while($row=mysql_fetch_assoc($query))
	$total=$row['totalvotes'];
$query=mysql_query("SELECT options.id, options.value, COUNT(*) as votes FROM votes, options WHERE votes.option_id=options.id AND votes.option_id IN(SELECT id FROM options WHERE ques_id='$poll_id') GROUP BY votes.option_id");
while($row=mysql_fetch_assoc($query)){
	$percent=round(($row['votes']*100)/$total);
	echo '<div class="option" ><p>'.$row['value'].' (<em>'.$percent.'%, '.$row['votes'].' votes</em>)</p>';
	echo '<div class="bar ';
	if($_POST['poll']==$row['id']) echo ' yourvote';
	echo '" style="width: '.$percent.'%; " ></div></div>';
}
echo '<p>Total Votes: '.$total.'</p>';

Peguei esse codigo daqui:

http://webdeveloperplus.com/php/ajax-user-poll-using-jquery-and-php/

 

Se quiser, eu posto minhas tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código que eu te passei é BEM mais simples, mais rápido, e funciona para o que você precisa. Apenas execute-o, mudando os valores para adequar-se ao seu script e sua tabela.

Se possível indente seus códigos para mantê-los organizados, e passe a enviá-los aqui com a tag Code.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que os Records Sets do Dreamweaver estão me fazendo mal.

Não consigo colocar o teu codigo em PHP :o

Onde ta o erro?

<?php require_once('Connections/conexao_radio.php'); ?>

<?php

$idEnquete = $_POST["pq_id"];

$query = mysql_query("SELECT COUNT 'vt_id' as 'total' SUM 'vt_op_id' as 'somaVotos' FROM votos WHERE vt_pq_id = '.$idEnquete.' GROUP BY 'vt_op_id' ") or die(mysql_error());

while($array = mysql_fetch_array($query));

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

para colunas e tabelas, você deve usar ` (crase) e não ' (aspas simples)

 

$query = mysql_query("SELECT COUNT(`vt_id`) AS `total`, SUM(`vt_op_id`) AS `somaVotos` FROM `votos` WHERE `vt_pq_id` = {$idEnquete} GROUP BY `vt_op_id` ") or die(mysql_error());

mas assim cara, qndo aparecer algum erro, diga exatamente qual, pois facilita muito pra nós.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Notice: Undefined index: pq_id in C:\wamp\www\radiosintonize\teste.php on line 3

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''votos' WHERE 'vt_pq_id' = GROUP BY 'vt_op_id'' at line 1

 

<?php require_once('Connections/conexao_radio.php'); ?>
<?php 
    $idEnquete = $_POST["pq_id"];
    $query = mysql_query("SELECT COUNT('vt_id') AS 'total', SUM('vt_op_id') AS 'somaVotos' FROM 'votos' WHERE 'vt_pq_id' = {$idEnquete} GROUP BY 'vt_op_id' ") or die(mysql_error());
    while($array = mysql_fetch_array($query));
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

$idEnquete = $_POST["pq_id"];

 

Essa variável é nula. Verifique se está correta e se retorna algo no echo.

 

Não notei erros na Query em si, porém verifique se as colunas estão corretas.

 

Essa variavel é pra(pelo menos deveria) pega o atributo pq_id da url.

Exemplo:

resultado.php?pq_id=2

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro da query, deve ser pq a variavel do POST, não tá 'vindo'.

 

e sim, largue logo o Dreamweaver.. você vai evoluir horrores, qndo tomar a coragem dessa iniciativa.

mas não use ele, nem em [Modo Codigo], pega logo uma IDE melhor e mais leve.. sem autocomplete, e que não gere aqueles monstros de códigos horriveis e automáticos :P

 

<?php 
     require_once('Connections/conexao_radio.php');
    
    if( $_SERVER['REQUEST_METHOD']=='POST' )
    {
 
        $idEnquete = (int)$_POST["pq_id"];
        $query = mysql_query("SELECT COUNT('vt_id') AS 'total', SUM('vt_op_id') AS 'somaVotos' FROM 'votos' WHERE 'vt_pq_id' = {$idEnquete} GROUP BY 'vt_op_id' ") or die(mysql_error());
    //..

   }//fecha após toda a rotina que PRECISA do POST
?>

edit: se é DA URL, então é $_GET e não $_POST

<?php 
     require_once('Connections/conexao_radio.php');
    

        $idEnquete = (int)$_GET['pq_id'];
        $query = mysql_query("SELECT COUNT('vt_id') AS 'total', SUM('vt_op_id') AS 'somaVotos' FROM 'votos' WHERE 'vt_pq_id' = {$idEnquete} GROUP BY 'vt_op_id' ") or die(mysql_error());
    //..

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, utilize $_GET ao invés de $_POST nesse caso.

 

Sobre o dreamweaver, concordo. Eu utilizo atualmente o Coda, do MAC OS X, e posso dizer que é o melhor que já usei. Já passei pelo bloco de notas puro, DW, Geany do Linux, VIM e outros tantos. Para quem está em plataforma Windows, recomendo o notepad++.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php 
	require_once('Connections/conexao_radio.php');
	
	$idEnquete = (int)$_GET['pq_id'];
	$query = mysql_query("SELECT COUNT('vt_id') AS 'total', SUM('vt_op_id') AS 'somaVotos' FROM 'votos' WHERE 'vt_pq_id' = {$idEnquete} GROUP BY 'vt_op_id' ") or die(mysql_error());
	$total=$row['total'];
	$somavotos=$row['somaVotos'];
	
	echo $total;
?>
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''votos' WHERE 'vt_pq_id' = 2 GROUP BY 'vt_op_id'' at line 1

 

__________

Sobre o Notepad++, eu gosto do auto completar, ao menos no css, e o do Notepad++ é muito tosco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo $idEnquete;

 

o que retorna isso?

 

Mude a linha da Query para exatamente isso:

 

$query = mysql_query('SELECT COUNT(`vt_id`) AS `total`, SUM(`vt_op_id`) AS `somaVotos` FROM `votos` WHERE `vt_pq_id` = '.$idEnquete.' GROUP BY `vt_op_id` ') or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo $idEnquete;

 

o que retorna isso?

 

Mude a linha da Query para exatamente isso:

 

$query = mysql_query('SELECT COUNT(`vt_id`) AS `total`, SUM(`vt_op_id`) AS `somaVotos` FROM `votos` WHERE `vt_pq_id` = '.$idEnquete.' GROUP BY `vt_op_id` ') or die(mysql_error());
Bom o echo $idEnquete; retorna 2 que foi o valor que coloquei na url: http://localhost/radiosintonize/teste.php?pq_id=2

 

Mas agora aparece o seguinte erro:

 

 

Notice: Undefined variable: row in C:\wamp\www\radiosintonize\teste.php on line 6

 

Notice: Undefined variable: row in C:\wamp\www\radiosintonize\teste.php on line 7

 

Codigo:

 

<?php 
	require_once('Connections/conexao_radio.php');
	
	$idEnquete = (int)$_GET['pq_id'];
	$query = mysql_query('SELECT COUNT(`vt_id`) AS `total`, SUM(`vt_op_id`) AS `somaVotos` FROM `votos` WHERE `vt_pq_id` = '.$idEnquete.' GROUP BY `vt_op_id` ') or die(mysql_error());
	$total=$row['total'];
	$somavotos=$row['somaVotos'];
	
	echo $total;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

para colunas e tabelas, você deve usar ` (crase) e não ' (aspas simples)

 

if( mysql_num_rows( $query ) )
{
   $row = mysql_fetch_assoc( $query );
   $total=$row['total'];//inutil isso

}
e fala sério, eita atribuição desnecessáriaaa!!!

usa logo o array retornado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.