Jump to content


Photo

Como Ordenar Dados Do Mysql


  • Faça o login para participar
13 replies to this topic

#1 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

Posted 26/02/2004, 17:11

olha só galera, tenho um script q é de votação, calculo sempre a nota na hora que o cara carrega, gravando no bd somente total de votos e total de votantes, dividindo um pelo outro e mostrando, porém agora veio a idéia de fazer um TOP15 Média, blz, mas como irei fazê-lo se calculo e É NECESSÁRIO calcular isto fora do bd, ñ gravando a média no bd, sacaram ? mas ai qro lista-los por maior nota, etc etc, teria como eu fazer isto ? :wacko: :blink:

flws....

Edição feita por: brigman, 26/02/2004, 17:12.


#2 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 26/02/2004, 20:29

Ué véio..

Pegas os dados do BD, faz a média e vai salvando num array.. Depois é só tu ordenar este array.. ;)

Pra isso, use a função array_multisort(), infos: http://www.php.net/array_multisort

Fui.. :P
Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#3 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

Posted 26/02/2004, 23:20

huhu, nem conhecia essa função de ordenar arrays :D vlws

mas ñ to conseguindo passar a nota final pros arrays kra... eu divido ela antes de jogar no array porém nem dá, como q c faz ?

Edição feita por: brigman, 26/02/2004, 23:38.


#4 seamus

seamus

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 27/02/2004, 05:39

Se eu entendi sua dúvida, vc naum tah conseguindo inserir os valores no array, naum eh isso? Faz o seguinte: depois de criar o array,
$nome_do_array = array();
para colocar os valores nele, vc pode usar a funcão array_push, assim:
array_push = ($nome_do_array, $valor)
Era isso mesmo q vc tava precisando?? :)
__________________________
.:
seamus
Nome:
Felipe Augusto Turcheti de Souza
ICQ: 128477249
MSN: felipe_ats@hotmail.com

#5 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

Posted 27/02/2004, 12:43

xxxxxx, ñ deu certo nao, será pq eu to dividindo e jogando somente a nota ja dividida ? ex:

$top15media = mysql_query("Select * from dow_downloads");
while($sel = mysql_fetch_array($top15media)) {
$dow_nome = $sel["dow_nome"];
$notas = $sel["dow_vot_total"];
$votantes = $sel["dow_vot_totalvotos"];
$notafinal = $notas/$votantes;

$notas = array($notafinal);
array_push = ($notas);

}

Edição feita por: brigman, 27/02/2004, 12:44.


#6 thiagorsl

thiagorsl
  • Visitantes

Posted 27/02/2004, 13:19

faz assim
$notas = array();
$top15media = mysql_query("Select * from dow_downloads");
while($sel = mysql_fetch_array($top15media)) {
$dow_nome = $sel["dow_nome"];
$notas = $sel["dow_vot_total"];
$votantes = $sel["dow_vot_totalvotos"];
$notafinal = $notas/$votantes;
array_push = ($notas,$notafinal);
}

#7 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

Posted 27/02/2004, 13:40

nem deu, porém consegui jogar os valores num array mas agora ñ consigo ordenar :angry:

$top15media = mysql_query("Select * from dow_downloads");
while($sel = mysql_fetch_array($top15media)) {
$dow_nome = $sel["dow_nome"];
$notas = $sel["dow_vot_total"];
$votantes = $sel["dow_vot_totalvotos"];
$notafinal = $notas/$votantes;

$array[0] = $sel["id"];
$array[1] = $sel["dow_vot_total"];
$array[2] = $sel["dow_vot_totalvotos"];
$array[3] = $sel["dow_nome"];

$array[4] = $array[1]/$array[2];
array_multisort($array[4], SORT_ASC, SORT_NUMERIC);

Da um erro assim:

Warning: Argument 1 to array_multisort() is an unknown sort flag in linha blabla

nunca trabalhei com array e ja to apanhando assim, huahua, nem sei se ta certo o array 4... o q pode estar errado

#8 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

Posted 27/02/2004, 16:31

aeww, VIVA
consegui fazer com arrays :D
...

e também fiz um guardando a média no mysql msm, xeguei a conclusão que é melhor guardar lá para consultas e talz... PORÉM surgiu uma dúvida, dei um ORDER by pela média porém ele joga na frente todo número que possui + caracteres, exemplo.

9.5 eh menor que 10 porém temm 3 caracteres, aí fik na frente, a solução eu sei seria usar casas decimais pro 10.00 e talz, mas nem quero usar, tem alguma forma de ele ñ contar o numero de caracteres e sim o numero ?

#9 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

Posted 27/02/2004, 17:15

aeww, VIVA
consegui fazer com arrays :D
...

e também fiz um guardando a média no mysql msm, xeguei a conclusão que é melhor guardar lá para consultas e talz... PORÉM surgiu uma dúvida, dei um ORDER by pela média porém ele joga na frente todo número que possui + caracteres, exemplo.

9.5 eh menor que 10 porém temm 3 caracteres, aí fik na frente, a solução eu sei seria usar casas decimais pro 10.00 e talz, mas nem quero usar, tem alguma forma de ele ñ contar o numero de caracteres e sim o numero ?

ixi, esqueçam td isso aew... usei number_format e determinei 2 casas decimais, mas ainda tahhhhhhh com um erro e realmente ñ sei pq, na ordenação, 10.00 fik sempre por ultimo, jah o 9,55 6,44, 3,03 etc ficam a frente dele, pq isso ???

#10 LucasMS

LucasMS

    Super Veterano

  • Usuários
  • 2076 posts
  • Sexo:Não informado

Posted 27/02/2004, 17:27

tipow, tenta mudar o tipo do seu campo no mysql, o de votos, poe INT (inteiro, ai nao tera numeros quebrados). talvez isso ajude .
AEEEEE post numero 201 VIvaViVa uaHUAHuhauHU

Edição feita por: gbr_chacal, 27/02/2004, 17:28.


#11 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

Posted 27/02/2004, 17:34

aew, deu certo, mas e agora c eu quiser , e número quebrados ?

parabéns pelo 201, esse eh o meu 194 hueahuea, to xegando lah tbm :D

#12 ffmm

ffmm

    Veterano

  • Usuários
  • 1224 posts
  • Sexo:Não informado

Posted 27/02/2004, 23:11

Depende de como vc ta usando o ORDER BY.
ORDER BY somente vai ordenar de forma crescente (do menor pro maior).
mas se vc usar ORDER BY campo DESC ele vai ordenar de forma decrescente (do maior pro menor).
Tente usar o ORDER BY campo DESC se já não estiver usando ele.
E qual o tipo do campo que estão os valores?

#13 brigman

brigman

    12 Horas

  • Usuários
  • 234 posts
  • Sexo:Não informado

Posted 28/02/2004, 00:47

Depende de como vc ta usando o ORDER BY.
ORDER BY somente vai ordenar de forma crescente (do menor pro maior).
mas se vc usar ORDER BY campo DESC ele vai ordenar de forma decrescente (do maior pro menor).
Tente usar o ORDER BY campo DESC se já não estiver usando ele.
E qual o tipo do campo que estão os valores?

entao fm, eu tava usando varchar(10) p/ poder ir a vírgulas e ter decimal, porém o 10,00 ficava abaixo do 9,60 ... 6,30 ... ficava lá em baixo, mesmo usando order by desc, eu ñ sei pq, mas ficava por ultimo...

ai troquei o tipo do campo pra int e resolveu-se a parada porém fica números inteiros, 10, 9, 8 7 6 5 4 3 2 1 e eu quero q fique com decimal mas como ñ pode virgula nao da...

como q posso fazer pra coloca a virgual e ele ordenar ?

#14 ffmm

ffmm

    Veterano

  • Usuários
  • 1224 posts
  • Sexo:Não informado

Posted 28/02/2004, 00:53

Tente usar campos do tipo FLOAT.
Mais informações:
http://www.mysql.com...lumn_types.html




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq