Foros del Web » Programando para Internet » PHP »

Clasificación deportiva

Estas en el tema de Clasificación deportiva en el foro de PHP en Foros del Web. Hola, estoy realizando una clasificación de una competición de balonmano y me he atascado. A partir de aquí: Código: SELECT * FROM teams WHERE categoria='grupoa' ...
  #1 (permalink)  
Antiguo 17/10/2005, 11:30
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 12 años, 1 mes
Puntos: 0
Clasificación deportiva

Hola, estoy realizando una clasificación de una competición de balonmano y me he atascado.
A partir de aquí:

Código:
SELECT * FROM teams WHERE categoria='grupoa' ORDER BY puntos DESC
qué modificaciones habría que hacer a este código para que en caso de empate a puntos, me lo ordenara por diferencia de goles (favor-en contra). Sobra decir que todos los campos están en una tabla.
Y por otra parte, cómo se tendría que hacer para que al sacar los resultador me lo numerara, para saber qué puesto ocupa cada equipo. Por ejemplo:
1.
2.
3.
etc.
Gracias
  #2 (permalink)  
Antiguo 17/10/2005, 12:02
Avatar de TortugaChat  
Fecha de Ingreso: julio-2004
Ubicación: Coatzacoalcos, Veracruz, México.
Mensajes: 150
Antigüedad: 13 años, 4 meses
Puntos: 0
SELECT * FROM teams WHERE categoria='grupoa' ORDER BY puntos DESC, golesfavor-golescontra DESC


La numeración podría ser la que te den los resultados de la consulta, es decir, el primer registro sería el primer lugar, pues tendría más puntos y más goles a favor, y así sucesivamente.
  #3 (permalink)  
Antiguo 17/10/2005, 15:37
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 12 años, 1 mes
Puntos: 0
Perdona mi ignorancia, pero cómo se haría lo de la numeración, es que no lo pillo. Yo lo que querría es que cuando se realice la consulta, aparezcan en pantalla estos números, desde el 1 que correspondería al lider de la liga, hasta el 16 que correspondería al último equipo de la liga.
Supongo que sería ir aumentando en 1 por cada registro que aparece hasta llegar a 16. Pero ¿cómo se hace?
  #4 (permalink)  
Antiguo 17/10/2005, 20:04
Avatar de TortugaChat  
Fecha de Ingreso: julio-2004
Ubicación: Coatzacoalcos, Veracruz, México.
Mensajes: 150
Antigüedad: 13 años, 4 meses
Puntos: 0
Tomemos como base el ejemplo siguiente:


Código PHP:
    $mi_consulta "SELECT alumno_matricula, alumno_nombre, alumno_grado FROM alumnos ORDER BY alumno_grado, alumno_nombre";
    
$Resultado=mysql_query($mi_consulta,$link) or die('Falla en la consulta: ' mysql_error());
    if (
mysql_num_rows($Resultado)>0)
        { 
        
//Despliega la lista de usuarios encontrados con los criterios indicados 
        
echo '<p><span class="contenido">Lista de alumnos registrados:</span></p>'
        
// Printing results in HTML
        
echo '<table border=1 cellpadding="5" cellspacing="1"><tr><td width="170" height="30" class="'.$TipoMenu.'"><b>Matr&iacute;cula</b></td><td width="500" class="'.$TipoMenu.'"><b>Nombre del alumno</b></td><td width="50"  class="'.$TipoMenu.'"><b>Grado</b></td></tr>';
        while (
$RespuestaConsulta mysql_fetch_array($ResultadoMYSQL_ASSOC)) 
            {
            echo 
'<tr><td><span class="contenido">'.$RespuestaConsulta["alumno_matricula"].'</span></td><td><span class="contenido">'.$RespuestaConsulta["alumno_nombre"].'</span></td><td><span class="contenido">'.$ArregloDeGrados[$RespuestaConsulta["alumno_grado"]].'</span></td></tr>';
            }
        echo 
"</table>"
Bien, notarás que hay una variable llamada RESULTADO, que es la que contiene todo lo que resulte de la consulta efectuada a la base de datos, como por ejemplo, el número de registros (rows) encontrados con el criterio indicado en el SELECT.

En el ejemplo se crea una tabla con tres columnas para allí insertar los datos que se obtienen con una nueva variable ($RESPUESTACONSULTA) en conjunto con $Resultado y la función "mysql_fetch_array".

Cada renglón se obtiene en cada ciclo del WHILE. Para ti, el primer renglón sería el número uno, el siguiente que leas el número dos y así sucesivamente.

Trata de seguir el ejemplo y si tienes alguna duda, lo comentas aquí mismo.
  #5 (permalink)  
Antiguo 18/10/2005, 05:07
 
Fecha de Ingreso: octubre-2005
Mensajes: 42
Antigüedad: 12 años, 1 mes
Puntos: 0
Perdona, ya estoy molestando otra vez He estado siguiendo el ejemplo y al irlo a poner en práctica los resultados no son los esperados.

Me aparece lo siguiente:

Clasificación
P Equipos J G E P F C Pt
'.Array.' S S S S S S S S
'.Array.' S S S S S S S S
'.Array.' S S S S S S S S
'.Array.' S S S S S S S S
etc etc

Cuando lo que ando buscando es que en lugar de aparecer ese '.Array.' aparezca 1,2,3,... ¿Por qué aparecen esas S? si en la base de datos sólo hay numeros. Raro raro raro.
Ah y gracias por tu ayuda, muy amable.
  #6 (permalink)  
Antiguo 18/10/2005, 10:24
Avatar de TortugaChat  
Fecha de Ingreso: julio-2004
Ubicación: Coatzacoalcos, Veracruz, México.
Mensajes: 150
Antigüedad: 13 años, 4 meses
Puntos: 0
Por favor, muestra el código que te da ese resultado. Te adelanto que parece ser que te falta indicar un elemento del Array (el array es el resultado de mysql_fetch_array, en mi ejemplo es $RespuestaConsulta).
  #7 (permalink)  
Antiguo 18/10/2005, 13:52
 
Fecha de Ingreso: julio-2005
Ubicación: Guatemala
Mensajes: 165
Antigüedad: 12 años, 4 meses
Puntos: 0
Es fácil, en serio!

Mira usa esto, te ayudara en lo que quieres
La consulta sigue siendo como esta:

Código PHP:
$mi_consulta "SELECT * FROM teams WHERE categoria='grupoa' ORDER BY puntos DESC, golesfavor DESC, golescontra DESC" 
Ahora bien... para hacer lo de el conteo automatico usarás una variable que empiece en 0 y que por cada registro que haya encontrado le sume uno, para tal efecto usaremos la variable "$i"

Código PHP:
$Resultado=mysql_query($mi_consulta,$link) or die('Falla en la consulta: ' mysql_error());
//VARIABLE DE CONTEO INICIA EN 0
$i=0;
echo 
'<table border=1 cellpadding="5" cellspacing="1">';
echo 
'<tr><td>No.</td><td>Equipo</td><td>Pts</td><td>GF</td></tr>';

while (
$RespuestaConsulta mysql_fetch_array($ResultadoMYSQL_ASSOC)) 

     
//AHORA LE SUMAMOS 1 PARA QUE SE INCREMENTE POR CADA REGISTRO
     
$i=$i+1;
    
//AHORA EMPIEZAS A REALIZAR EL DESPLIEGUE DE DATOS
    //DONDE NECESITES EL NUMERO DE POSICION DEL EQUIPO, PONES EL VALOR DE $i
     
echo '<tr><td>{$i}</td><td>{$RespuestaConsulta[equipo]}</td><td>{$RespuestaConsulta[puntos]}</td><td>{$ResultadoConsulta[golesfavor]}</td></tr>';
}
echo 
'</table>'
Lo del ARRAY se debe a que la forma de generar la consulta, los registros se guardan en un vector, con el "While" lo que se hace es recorrer todos los registros que se obtuvieron en la consulta, y lo que esta dentro del "While" hace que los datos se muestren, el truco de lo que requerias esta en escribir "$i=$i+1;" traducido más simple----> lo que tiene la variable i, sumarle uno por cada registro.

Un truco más... para no poner "$i=$i+1;" se puede sustituir por "$i++;" que al final hace lo mismo.

Bueno, espero te sirva. Saludos a todos. Desde Guatemala

Última edición por bilkarm3; 18/10/2005 a las 14:02
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




La zona horaria es GMT -6. Ahora son las 14:16.