Foros del Web » Programando para Internet » PHP »

Operacion dificil con arrays.

Estas en el tema de Operacion dificil con arrays. en el foro de PHP en Foros del Web. Hola compañeros. A mi php se me queda algo grande, pero en mi ayuda a unos amigos con una pagina en la que participo me ...
  #1 (permalink)  
Antiguo 01/09/2009, 09:59
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 0
Operacion dificil con arrays.

Hola compañeros.
A mi php se me queda algo grande, pero en mi ayuda a unos amigos con una pagina en la que participo me surge el siguiente dilema.

Os explico todo el problema porque a lo mejor el planteamiento que realizo esta mal.

Corremos en una competicion dividida en GPs y a su vez cada GP tiene mangas.

Los pilotos organizados por equipos.

A la hora de ver los resultados por equipos antes sumabamos todos los puntos y listo. Pero ahora queremos que solo puntuen un numero determinado de pilotos que en cada competicion sera diferente.

Los puntos de los pilotos constan de dos partes unos fijos en funcion a la posicion obtenida y otro variable que se asocia en la base de datos.

Con todo esto, consigo sacar con print_r un array que podeis ver en el adjunto.

os coloco aqui el comienzo para explicar lo que es cada cosa:

Array
(
[1] => Array -> ID del GP
(
[3] => Array -> ID del equipo
(
[DedoLento] => Array -> PILOTO
(
[idalias] => 1 -> ID del GP
[team] => 3 -> ID del equipo
[usuario] => DedoLento -> PILOTO
[id] => 29 -> ID PILOTO
[puntos] => 134 -> PUNTOS TOTALES EN EL GP
[punto] => (1/47)(2/44)(3/0)(4/43) -> PUNTOS TOTALES EN CADA MANGA
[alias] => FE1 -> Nombre del circuito
[kk] => 2 -> NUMERO MAXIMO DE PILOTOS QUE PUNTUAN (se que no deberia estar en cada registro, pero me fue mas comodo.)
[teamalias] => DRT -> Nombre del equipo, corto
[teamname] => Demanu Racing Team -> Nombre del equipo
)

[Marjilo] => Array
(
[idalias] => 1
[team] => 3
[usuario] => Marjilo
[id] => 5
[puntos] => 41
[punto] => (1/0)(2/0)(3/41)(4/0)
[alias] => FE1
[kk] => 2
[teamalias] => DRT
[teamname] => Demanu Racing Team
)

)

[4] => Array
(
[mitsumeku] => Array
(
[idalias] => 1
[team] => 4
[usuario] => mitsumeku
[id] => 6
[puntos] => 217
[punto] => (1/58)(2/54)(3/49)(4/56)
[alias] => FE1
[kk] => 2
[teamalias] => RCT
[teamname] => RC TEAM
)


La pregunta del millon, con un array asi puedo sumar los puntos de los (en este caso) dos ([kk] => 2) pilotos con mas puntos y luego mostrar una tabla con todos los resultados destacando (con el fondo de la celda o algo asi) los pilotos que puntuan en ese GP para el equipo y en orden de puntos por equipo?

Es dificil, por lo menos para mi, y si parto de un array malo o lo puedo hacer mejor estoy abierto a sugerencias.

PD. hago el array y no filtro directamente en la sql, porque los puntos por posicion no estan en esa tabla, se le suman aparte al piloto. de ahi que genero el array, para saber los puntos de cada piloto en cada GP.

Gracias a todos por vuestra ayuda.


Adjuntos- >
planetainformatico.es/gplfs/arrayGP.txt => ARRAY COMPLETO
rtn.planetainformatico.es/index.php?view=teamranking&p=1&option=com_tracks => Pagina donde estan los resultados ahora mismo, para que os hagais una idea. Ahora suma todos los puntos de todos los pilotos por equipo.
  #2 (permalink)  
Antiguo 02/09/2009, 00:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Operacion dificil con arrays.

Wow vas a tener que explicar mejor lo que quieres hacer. No entendi bien tu pregunta. A la verdad que vale un millon de verdad. Te tratare de responder por partes a ver si logro aclarar lo que quieres hacer.

Nota bien importante:
Todo esto se resuelves si ingresas los datos que hay en el array a una base de datos usando GROUP BY y COUNT puedes sacar la informacion bien facil.

Primero
Cita:
con un array asi puedo sumar los puntos de los (en este caso) dos ([kk] => 2) pilotos con mas puntos
Sí se puede sumar. Solo tienes que aprender como llegar hasta [kk]. Te sugiero leer sobre foreach, se maneja muy bien con los array. Vas a tener que crear varios foreach anidados para llegar hasta [kk].

En esa parte lo que no entendi es lo que dice con mas punto. Si es que te refieres a obtener los resultados de aquellos que tengan más punto usa la funcion natcasesort para que coloques en orden de menor a mayor los resultados que tenga los [kk] y luego con array_reverse los muestras al revés.

Cita:
luego mostrar una tabla con todos los resultados destacando (con el fondo de la celda o algo asi) los pilotos que puntuan en ese GP para el equipo y en orden de puntos por equipo
Es casi lo mismo solo que tienes que organizar dentro de cada GP usando las funciones que te indique. Este proyecto vas a tener que leer como manejarte dentro de un array. Ya que como te indique si pasaras todo a una base de datos se haría menos complicado manejarla. No te puedo brindar un codigo de como hacerlo porque ese es el trabajo que ustedes quieren hacer, por lo tanto vas a tener que leer un poco sobre array y como manejarte en ellas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 02/09/2009, 07:55
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Operacion dificil con arrays.

abimaelrc muchas gracias por responder.

Lo de volcarlo a un DB me resulta complicado ya que los datos son actualizables (recibimos sanciones etc) de modo que tendria que consultar y actualizar la DB en cada consulta. De este modo solo realizo una consulta.

Pues bien consegui lo que parecia mas dificil para mi, pero creo que es lo mas facil, jejejejeje.

Tengo un array, un poco complejo donde tengo a los dos pilotos con mas puntos por equipo y los puntos del equipo. Ahora me llega la tarea de ordenar el array pero no llego a entender del todo como hacerlo, ya que he mirado varios manuales y paginas por la red, pero no le pillo el tranquillo. me explico.

Tengo un array de este estilo:

Array
(
[1] => Array ->GP
(
[3] => Array -> EQUIPO
(
[0] => 175 -> PUNTOS DE ESTE EQUIPO
.......


Lo que quiero es ordenar por GP y luego por puntos no por equipo.... Por GP ascendente y por puntos descendente...

Muchas gracias por todo.
  #4 (permalink)  
Antiguo 02/09/2009, 08:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Operacion dificil con arrays.

¿Sigue siendo la misma estructura el array? Si es así trata haciendo varios foreach para que veas como se mueven los datos.
Código php:
Ver original
  1. foreach(){
  2.   foreach(){
  3.     foreach(){
  4.  
  5.     }
  6.   }
  7. }

Mientras tu veas que hay un array debes hacer otro foreach para manejarte en los datos que estan dentro.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
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 21:52.