Foros del Web » Programando para Internet » PHP »

clasificacion (puestos) por puntajes

Estas en el tema de clasificacion (puestos) por puntajes en el foro de PHP en Foros del Web. Hola, bueno estoy implementando un sistema nuevo y actualmente ya tenemos unos 10,000 usuarios registrados en la base de datos... pues la base de datos ...
  #1 (permalink)  
Antiguo 29/10/2011, 23:14
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 9 meses
Puntos: 10
clasificacion (puestos) por puntajes

Hola, bueno estoy implementando un sistema nuevo y actualmente ya tenemos unos 10,000 usuarios registrados en la base de datos...

pues la base de datos con la tabla "tabla", tiene 2 columnas "identificador" y "puntajes".

imaginense que actualmente la base sea de esta forma:


IDENTIFICADOR | PUNTAJES

1 | 1000
2 | 2000
3 | 1600
4 | 800



como puedo hacer para que cuando llame al identificador 1 me diga "puesto 3", cuando diga identificador 2 me diga "puesto 1", cuando diga identificador 3 me diga "puesto 2" y finalemente cuando diga idenficador 4 me diga "puesto 4".

Pues osea ordenar una tabla por el valor "puntajes" y poder llamar cualquier identificador y saber en que lugar se encuentra.

Gracias!
  #2 (permalink)  
Antiguo 30/10/2011, 00:39
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: clasificacion (puestos) por puntajes

Sencillo...
Código PHP:
Ver original
  1. $sql = 'select puntuajes from tabla order by puntuajes desc';
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 30/10/2011, 10:11
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 9 meses
Puntos: 10
Respuesta: clasificacion (puestos) por puntajes

Cita:
Iniciado por Nemutagk Ver Mensaje
Sencillo...
Código PHP:
Ver original
  1. $sql = 'select puntuajes from tabla order by puntuajes desc';
Gracias!

Pero una ves que los tengo ordenados... como hago para tener la ubicacion de 1 solo ?
  #4 (permalink)  
Antiguo 30/10/2011, 11:02
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: clasificacion (puestos) por puntajes

Bueno la solución es posible con MySQL (En una sola consulta), la idea es crear un campo temporal con la numeración, aquí encontrarás un ejemplo:

MySQL – running totals/determine row position

Ahora una solución con PHP que no me parece tan optima pero igual funciona:

Código PHP:
Ver original
  1. <?php
  2. $c = mysql_connect('localhost', 'root', '12345');
  3. mysql_select_db('basededatos');
  4.  
  5. $sql = 'select * from puntaje order by p desc';
  6. $res = mysql_query($sql) or die(mysql_error());
  7.  
  8. $data = array();
  9. $x = 1;
  10.  
  11. while ($reg = mysql_fetch_array($res)) {
  12.     $data[$reg['id']] = array('puntaje' => $reg['p'], 'pos' => $x++);
  13. }
  14.  
  15. echo $data[1]['pos'] . '<br />'; //id 1 = posición 3
  16. echo $data[2]['pos'] . '<br />'; //id 1 = posición 1
  17. echo $data[3]['pos'] . '<br />'; //id 1 = posición 2
  18. echo $data[4]['pos'] . '<br />'; //id 1 = posición 4

Espero que te sirva alguna de las 2 formas, para mayor información consulta en el foro de MySQL. Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 30/10/2011, 12:06
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 9 meses
Puntos: 10
Respuesta: clasificacion (puestos) por puntajes

Cita:
Iniciado por andresdzphp Ver Mensaje
Bueno la solución es posible con MySQL (En una sola consulta), la idea es crear un campo temporal con la numeración, aquí encontrarás un ejemplo:

MySQL – running totals/determine row position

Ahora una solución con PHP que no me parece tan optima pero igual funciona:

Código PHP:
Ver original
  1. <?php
  2. $c = mysql_connect('localhost', 'root', '12345');
  3. mysql_select_db('basededatos');
  4.  
  5. $sql = 'select * from puntaje order by p desc';
  6. $res = mysql_query($sql) or die(mysql_error());
  7.  
  8. $data = array();
  9. $x = 1;
  10.  
  11. while ($reg = mysql_fetch_array($res)) {
  12.     $data[$reg['id']] = array('puntaje' => $reg['p'], 'pos' => $x++);
  13. }
  14.  
  15. echo $data[1]['pos'] . '<br />'; //id 1 = posición 3
  16. echo $data[2]['pos'] . '<br />'; //id 1 = posición 1
  17. echo $data[3]['pos'] . '<br />'; //id 1 = posición 2
  18. echo $data[4]['pos'] . '<br />'; //id 1 = posición 4

Espero que te sirva alguna de las 2 formas, para mayor información consulta en el foro de MySQL. Saludos.
Hola, gracias por esto, parece funcionar.. pero hay alguna funcion que remplase al fetch_array ?

me sale este error:

Código PHP:
Ver original
  1. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/dowordco/public_html/test/card/tester.php on line 17
  #6 (permalink)  
Antiguo 30/10/2011, 12:14
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: clasificacion (puestos) por puntajes

Muestra como lo estás usando
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 30/10/2011, 19:24
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 9 meses
Puntos: 10
Respuesta: clasificacion (puestos) por puntajes

Código PHP:
Ver original
  1. $bd_host = "localhost";
  2.           $bd_usuario = "usuario";
  3.           $bd_password = "pas";
  4.           $bd_base = "base";
  5.  
  6.           $con = mysql_connect($bd_host, $bd_usuario, $bd_password);
  7.           mysql_select_db($bd_base, $con);
  8.  
  9.           $sql = 'select * FROM datacards order by p desc';
  10.           $res = mysql_query($sql);
  11.  
  12.           $data = array();
  13.           $x = 1;
  14.  
  15.           while ($reg = mysql_fetch_array($res)) {
  16.               $data[$reg['identificador']] = array('puntaje' => $reg['p'], 'pos' => $x++);
  17.           }
  18.  
  19.           echo $data[1]['pos'].'!<br />'; //id 1 = posición 3
  20.           echo $data[2]['pos'].'!<br />'; //id 1 = posición 1
  21.           echo $data[3]['pos'].'!<br />'; //id 1 = posición 2
  22.           echo $data[4]['pos'].'!<br />'; //id 1 = posición 4
  #8 (permalink)  
Antiguo 30/10/2011, 19:29
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: clasificacion (puestos) por puntajes

Código PHP:
Ver original
  1. $sql = 'select * FROM datacards order by puntajes desc';

aquí en tu consulta la letra p es tu columna de puntajes

MUY IMPORTANTE: Siempre colocale el or die a mysql_query para poder conocer los errores:

Código PHP:
Ver original
  1. $res = mysql_query($sql) or die(mysql_error()); //NO SE LO QUITES

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 30/10/2011, 19:57
 
Fecha de Ingreso: febrero-2011
Mensajes: 99
Antigüedad: 13 años, 9 meses
Puntos: 10
Respuesta: clasificacion (puestos) por puntajes

Cita:
Iniciado por andresdzphp Ver Mensaje
Código PHP:
Ver original
  1. $sql = 'select * FROM datacards order by puntajes desc';

aquí en tu consulta la letra p es tu columna de puntajes

MUY IMPORTANTE: Siempre colocale el or die a mysql_query para poder conocer los errores:

Código PHP:
Ver original
  1. $res = mysql_query($sql) or die(mysql_error()); //NO SE LO QUITES

Saludos.

Wao.... wao!! eres un dioos te amo xD me enamore haah.. muchas gracias, he estado mas de 2 dias tratando con esto, gracias!

no se si te puedo pedir un fabor, haha.. esq estoy haciendo un proyecto con tarjetas dinamicas y php, y al parecer tengo un error con la libreria GD, bueno si sabes algo acerca de esto pasa por aca: http://www.forosdelweb.com/f18/libre...tf-8-a-954408/

Gracias!

Etiquetas: puestos, puntajes, tabla, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:08.