Foros del Web » Programando para Internet » PHP »

tabla de posiciones dinamica

Estas en el tema de tabla de posiciones dinamica en el foro de PHP en Foros del Web. Buenas amigos!! Tengo un problema para hacer la tabla de posiciones de un torneo de futbol. He usado el buscador del foro, y si bien ...
  #1 (permalink)  
Antiguo 14/09/2008, 15:56
 
Fecha de Ingreso: septiembre-2008
Mensajes: 5
Antigüedad: 11 años, 2 meses
Puntos: 0
tabla de posiciones dinamica

Buenas amigos!! Tengo un problema para hacer la tabla de posiciones de un torneo de futbol. He usado el buscador del foro, y si bien hay varios temas parecidos, ninguno resuelve mi duda. Asique aca va.

Tengo una tabla en la DB que contiene:
Tabla partidos
idPartido
fecha
equipoA
equipoB
golesA
golesB

Y tengo que generar dinamicamente la tabla de posiciones (no puedo usar una tabla de equipos que contenga los puntos... restriccion del problema :(
Tengo este codigo hecho, pero por algun extraño motivo, el arreglo puntos se carga con mas elementos que los equipos existentes
Código PHP:
$qry mysql_query("SELECT * FROM partidos");
while (
$row mysql_fetch_array($qry))
{
        
$equipoA $row[equipoA];
        
$equipoB $row[equipoB];
        
        if(
$row['golesA'] > $row['golesB'])
            
$puntos[$equipoA] += 3;
        if(
$row['golesB'] > $row['golesA'])
            
$puntos[$equipoB] += 3;
        if(
$row['golesB'] == $row['golesA'])
        {
            
$puntos[$equipoB] += 1;
            
$puntos[$equipoB] += 1;
        }
        
reset($puntos);
}

foreach(
$puntos as $punto)
{
    echo 
"$punto<br>";

La idea es que el indice del arreglo $puntos, sea el nombre del equipo, pero un mismo equipo (racing por ej) se puede encontrar como equipoA en una fila, y otras como equipoB en otra fila. Y parece q eso hace que el arreglo $puntos contenga mas de un elemento con indice "racing"

Alguna idea? gracias!
  #2 (permalink)  
Antiguo 14/09/2008, 16:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: tabla de posiciones dinamica

Hola zspikes,

Haz probado usar un var_dump($puntos) después de tu while para ver como están los valores al final del while?

Saludos.
  #3 (permalink)  
Antiguo 14/09/2008, 16:19
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: tabla de posiciones dinamica

Es imposible que un arreglo contenga dos elementos con el mismo índice. Por lo pronto veo dos errores en tu script, que podrían ser la causa de tu problema:

Código php:
Ver original
  1. $qry = mysql_query("SELECT * FROM partidos");
  2. while ($row = mysql_fetch_array($qry))
  3. {
  4.         $equipoA = $row[equipoA]; // Mejor usa $row['equipoA']
  5.         $equipoB = $row[equipoB]; // Mejor usa $row['equipoB']
  6.        
  7.         if($row['golesA'] > $row['golesB'])
  8.             $puntos[$equipoA] += 3;
  9.         if($row['golesB'] > $row['golesA'])
  10.             $puntos[$equipoB] += 3;
  11.         if($row['golesB'] == $row['golesA'])
  12.         {
  13.             $puntos[$equipoB] += 1;
  14.             $puntos[$equipoB] += 1;
  15.             // Y al equipo A no le sumas nada?
  16.         }
  17.         reset($puntos);
  18. }
  19.  
  20. foreach($puntos as $punto)
  21. {
  22.     echo "$punto<br>";
  23. }
Por otro lado, debes usar asort() para ordenar tus resultados

Corrigiendo las dos cosas que te indico, puede que tu problema se solucione. Si no, indica que es lo que está mal (La suma de puntos? El ordenamiento?)

Saludos,
  #4 (permalink)  
Antiguo 14/09/2008, 16:37
 
Fecha de Ingreso: septiembre-2008
Mensajes: 5
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: tabla de posiciones dinamica

Muchas gracias por sus respuestas!! Okram, es cierto, suelo cometer esos errores tontos, pero lo arregle y todavia nada.

GatorV, hice el vardump() y me aparecio esto:
array(7) { ["river"]=> int(6) ["boca"]=> int(0) ["racing"]=> int(3) ["independiente"]=> int(1) ["slorenzo"]=> int(0) ["slorenzo "]=> int(3) ["river "]=> int(1) }

fijense q river y slorenzo salen 2 veces :S, por q sera?
Por cierto, la tabla partidos tiene estos datos... quizas ayude:
idPartido fecha equipoA equipoB golesA golesB
13 2 racing slorenzo 2 1
12 2 boca slorenzo 0 4
11 1 independiente river 1 1
10 1 river boca 3 0
14 3 river racing 3 2
  #5 (permalink)  
Antiguo 14/09/2008, 16:45
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: tabla de posiciones dinamica

Ese problema al parecer es de los registros en la base de datos, los cuales contienen aparentemente espacios al comienzo y al final. Prueba aplicando trim() sobre ellos para eliminar los espacios de más:

Código php:
Ver original
  1. $equipoA = trim($row['equipoA']);
  2. $equipoB = trim($row['equipoB']);
Saludos,
  #6 (permalink)  
Antiguo 14/09/2008, 16:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 5
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: tabla de posiciones dinamica

FUNCIONO!!!!!! :D
ni me di cuenta de los espacios jaja, q ojo! Muchas gracias amigos!!!
Solo una ultima pregunta. Como puedo hacer para obtener el nombre del indice del arreglo? asi puedo imprimir por pantalla algo como
slorenzo: 5
river: 3
racing: 1
...
  #7 (permalink)  
Antiguo 14/09/2008, 17:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: tabla de posiciones dinamica

Usa un foreach:
Código php:
Ver original
  1. foreach($puntos as $equipo => $puntaje ) {
  2.     echo $equipo . ":" . $puntaje;
  3. }

Saludos.
  #8 (permalink)  
Antiguo 14/09/2008, 17:45
 
Fecha de Ingreso: septiembre-2008
Mensajes: 5
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: tabla de posiciones dinamica

acabo de encontrar la funcion array_keys(), iba a usar esa, pero tu metodo me gusta mas.
Mil gracias muchachos!!!
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 06:35.