Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Mostrar valores de una consulta MYSQL en PHP correctamente

Estas en el tema de Mostrar valores de una consulta MYSQL en PHP correctamente en el foro de Mysql en Foros del Web. Buenas, os comento un problema que tengo a la hora de mostrar una información en PHP, es irritante porque la consulta MYSQL es correcta, me ...
  #1 (permalink)  
Antiguo 29/06/2012, 02:57
liranan
Invitado
 
Mensajes: n/a
Puntos:
Mostrar valores de una consulta MYSQL en PHP correctamente

Buenas, os comento un problema que tengo a la hora de mostrar una información en PHP, es irritante porque la consulta MYSQL es correcta, me devuelve toda la información que quiero, pero el problema viene a la hora de mostrarla por pantalla.

Se trata de una página web de juegos, donde puedes aceptar el reto de otro jugador.

Tengo una serie de tablas en mi base de datos:

jugadores
- nickname
- avatar
- ...

partidas
- id
- tipoPartida (número de jugadores)
- apuesta
- partidaTerminada (0 o 1 indicando si sigue abierta o no)
- ...

juegos
- id
- ...

puntuaciones
- id
- idUsuario
- idPartida
- idJuego
- puntuacion

Un usuario puede mediante un formulario crear una partida, y entonces se crea un nuevo registro en la base de datos. Cuando hay tantos usuarios que han aceptado jugar a esa partida como el campo "tipoPartida', la partida se cierra y ya nadie puede acceder a ella. Por ejemplo, si al crear la partida ponemos que sea de 4 jugadores, cuando 3 personas más la han seleccionado, ya nadie más puede hacerlo.
Esto tambien funciona correctamente, el problema viene ahora.

Tengo la siguiente consulta MYSQL:

Código PHP:
SELECT FROM ((partidas 
INNER JOIN puntuaciones ON puntuaciones
.idPartida partidas.codigoPartida)
INNER JOIN usuarios ON usuarios.nickname puntuaciones.idUsuario)
WHERE partidas.partidaTerminada AND partidas.juego '$juego' 
 
ORDER BY codigoPartida DESC 
Esta consulta me devuelve correctamente una serie de registros de todos los jugadores que tienen una partida abierta en el juego que yo tengo seleccionado ($juego).

Lo que yo quiero es que se muestre una tabla más o menos de la siguiente manera:

Código HTML:
<table>
<tr>
<td>id de la partida</td>
<td>apuesta</td>
<td>numero de jugadores</td>
<td> <div>avatar del primer usuario que creo la partida</div> 
       <div>avatar si lo hubiera de otro jugador que esté participando</div>
       <div>tantos avatares como personas hayan aceptado esta partida</div>
</td>
<td>boton para aceptar la partida</td>
</tr> 
Supongo que todo se resume a dos problemas básicos.
Al recorrer el resultado de la consulta, cómo hacer que solo se cree una fila (<tr>) por cada partida (las que tengan el mismo código) y no una por cada jugador y cómo agrupar todos los jugadores dentro de una celda de la tabla.
Y segundo problema, cómo hacer que no se muestren los registros en los que el usuario ya haya participado, por ejemplo, yo no debo poder crear una partida y luego aceptarla.

Espero que me haya expresado bien.
Gracias de antemano.
Gonzalo.
  #2 (permalink)  
Antiguo 29/06/2012, 04:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Mostrar valores de una consulta MYSQL en PHP correctamente

Si la consulta da los datos que necesitas luego es un problema de PHP tendrias que preguntar en el foro de PHP.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 29/06/2012, 04:09
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mostrar valores de una consulta MYSQL en PHP correctamente

Tienes toda la razón, Quim, sorry.
Miraré a ver si lo puedo cambiar y si no esperaré a que me lo cambie un moderador.

Etiquetas: join, php, registros, select, sql, tabla, campos
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 16:40.