Foros del Web » Programando para Internet » PHP »

como regresar resultados en orden especifico

Estas en el tema de como regresar resultados en orden especifico en el foro de PHP en Foros del Web. Hola! Estoy haciendo mis pininos en php y estoy trabajando en un pequenio ejemplo que agrupa informacion y me he topado con dos problemas: 1) ...
  #1 (permalink)  
Antiguo 22/02/2007, 10:32
 
Fecha de Ingreso: febrero-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
como regresar resultados en orden especifico

Hola! Estoy haciendo mis pininos en php y estoy trabajando en un pequenio ejemplo que agrupa informacion y me he topado con dos problemas:
1) Como puedo hacer para que la regrese en determinado orden, es decir, en orden descendente basandondonos en la funcion calcularPuntos del script de abajo

He estado tratando con SORT, SORT_DESC y multisort, pero nada parece funcionar. Supongo que no estoy sabiendo darle la intruccion correctamente

2) Como hacer para que solo tome resultados de dos equipos y los despliegue cuando yo quiera, por ejemplo, solo equipo B y C, dejando fuera al A.

Les agradesco su tiempo y ayuda!


Código PHP:
$arrTeams[0]['nombre'] = "Equipo A"
$arrTeams[0]['juegosJugados'] = 10
$arrTeams[0]['juegosPerdidos'] = 10

$arrTeams[1]['nombre'] = "Equipo B"
$arrTeams[1]['juegosJugados'] = 10
$arrTeams[1]['juegosPerdidos'] = 0

$arrTeams[2]['nombre'] = "Equipo C"
$arrTeams[2]['juegosJugados'] = 10
$arrTeams[2]['juegosPerdidos'] = 5

function 
calcularPuntos($juegosJugados$juegosPerdidos$puntosPorJuego=2) { 
    
$juegosGanados $juegosJugados-$juegosPerdidos
    return 
$juegosGanados*$puntosPorJuego
}

echo 
"<table>"
foreach (
$arrTeams as $id => $data) { 
    echo 
"<tr>"
    echo 
"<td>".$data['nombre']."</td>"
    echo 
"<td>".$data['juegosJugados']."</td>"
    echo 
"<td>".$data['juegosPerdidos']."</td>"
    echo 
"<td>".calcularPuntos($data['juegosJugados'], $data['juegosPerdidos'])."</td>"
    echo 
"</tr>"

echo 
"</table>"
  #2 (permalink)  
Antiguo 22/02/2007, 11:08
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Re: como regresar resultados en orden especifico

se me ocurre que tal vez te convenga mas poner como etiquetas de $arrTeams los nombres de los equipos

Código:
$arrTeams["Equipo A"]['juegosJugados'] = 10;  
$arrTeams["Equipo A"]['juegosPerdidos'] = 10;  
 
$arrTeams["Equipo B"]['juegosJugados'] = 10;  
$arrTeams["Equipo B"]['juegosPerdidos'] = 0;  

$arrTeams["Equipo C"]['juegosJugados'] = 10;  
$arrTeams["Equipo C"]['juegosPerdidos'] = 5;
asi se te va a simplificar lo segundo.

Para poder ordenarlo, deberias modificar la funcion calcularPuntos, o bien calcular primero todos los puntos y despues mostrar los resultados (teniendo $arrTeams como recien te mostre)

por ejemplo

Código:
$puntos = array();
foreach($arrTeams as $id=>$data) {
$puntos[$id]=calcularPuntos($data['juegosJugados'], $data['juegosPerdidos']);
}

//ordenar por puntos
$puntos=array_flip($puntos);
ksort($puntos);
$puntos=array_flip($puntos);

echo "<table>";  
foreach ($puntos as $id => $data) {
//$id=nombre del equipo
//$data=puntos
    echo "<tr>";  
    echo "<td>".$id."</td>";  
    echo "<td>".$arrTeams[$id]['juegosJugados']."</td>";  
    echo "<td>".$arrTeams[$id]['juegosPerdidos']."</td>";  
    echo "<td>".$data."</td>";  
    echo "</tr>";  
}  
echo "</table>";
tal vez alguien conozca alguna otra sulucion,pero esto es lo qe se me ocurre a mi 8D

espero que te pueda ayudar


exitos
  #3 (permalink)  
Antiguo 22/02/2007, 13:03
 
Fecha de Ingreso: febrero-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: como regresar resultados en orden especifico

y como se puede hacer para que las regrese en orden inverso, es decir, de mas puntos a menos. Ahorita, en el ejemplo de ahorita, regresa de menos a mas.

gracias por su ayuda!
  #4 (permalink)  
Antiguo 22/02/2007, 13:57
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Re: como regresar resultados en orden especifico

puedes cambiar la funcion ksort() por krsort()

exitos
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:31.