Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Dudilla PHP (Muy simple)

Estas en el tema de Dudilla PHP (Muy simple) en el foro de PHP en Foros del Web. Buenas, quiero hacer una clasificación de equipos, pero no me aclaro mucho con el PHP. He "más o menos" hecho el código según lo que ...
  #1 (permalink)  
Antiguo 09/11/2010, 06:10
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Dudilla PHP (Muy simple)

Buenas, quiero hacer una clasificación de equipos, pero no me aclaro mucho con el PHP.
He "más o menos" hecho el código según lo que he leído, pero no me muestra nada.
Os dejo una captura para que veáis los datos que quiero y os dejo el código que más o menos me ha salido.

(El config y demás está también, pero solo que os he pegado la parte que me interesa.)



Quiero que muestre el nombre de los equipos, el rating y las victorias (won2) ordenados de mayor a menor por el rating, añadiendo a la izquierda su pposición hasta un máximo de 10. Solo de los equipos cuyo tipo (tabla type) sea 2.

Código que más o menos he podido hacer:

Código PHP:
<table class="body6" cellspacing="0" cellpadding="0">
                      <tr class="body6-top">
                        <td colspan="7">
                         Ladder Arenas - 2c2
                        </td>
                      </tr>
                      <tr>
                        <td width="60">Posición</td>
                        <td>Nombre del Equipo</td>
                        <td>Rating</td>
                        <td>Victorias</td>
                      </tr>
                    
                    <?php
                    
                    $query_toparena 
db_query("SELECT arenateamid,name,rating,wons2 FROM arena_team,arena_team_stats WHERE type=2 ORDER BY rating DESC LIMIT 10");
                    
                    
$top_rank 1;
                    
                        echo 
'<tr><td><b>'.$top_rank++.'.</b></td><td><b>'.$results_toparena["name"].'</b></td><td class="top-rank"><b>'.$results_toparena["rating"].'</b></td><td><b>'.$results_toparena["wons2"].'</b></td>';
                        
                    
                    
                    
?>
Otra duda que tengo, es que, conseguí sacar el resultado de una columna y que se peguen en la página, pero como hago para que el resultado me quede así?

Resultado sacado de la DB / 60 / 60 / 24 = lo que yo quiera que se vea

Gracias y espero una manita =)

Saludos de un novato.

Última edición por Thous; 09/11/2010 a las 06:15
  #2 (permalink)  
Antiguo 09/11/2010, 06:18
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Dudilla PHP (Muy simple)

Prueba esta consulta, te falta decirle a MYSQL por qué campo va a relacionar ambas tablas, no basta con ponerle el mismo nombre al campo, hay que indicarselo:

SELECT arenateamid,name,rating,wons2 FROM arena_team left join arena_team_stats on arena_team.arenateamid = arena_team_stats.arenateamid WHERE type=2 ORDER BY rating DESC LIMIT 10

Que sepas tambien que si ambas tablas tuvieran un campo con igual nombre, no bastaría con hacer:

SELECT name...

Tendrias que indicarle

SELECT nombredetabla.name
...
  #3 (permalink)  
Antiguo 09/11/2010, 06:27
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Hola Vun, Gracias por tu ayuda.

Lo que me dices no me funciona. Antes no me decía ningún error la página aohra me da uno.

"Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result"
-----------------------
EDIT: Ya no sale el error, pero sigue sin darme resultados. Me sale la tabla pero sin los datos. ¿Alguna sugerencia?

Última edición por Thous; 09/11/2010 a las 06:39
  #4 (permalink)  
Antiguo 09/11/2010, 09:03
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Dudilla PHP (Muy simple)

¿probaste la consulta directamente en la consola SQL? ¿tienes phpmyadmin en tu servidor? hagamos las cosas como yo probaría
  #5 (permalink)  
Antiguo 09/11/2010, 09:57
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Cita:
Column 'arenateamid' in field list is ambiguous
Me sale esto ejecutando la query directamente
  #6 (permalink)  
Antiguo 09/11/2010, 10:43
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Dudilla PHP (Muy simple)

Eso es lo que te decia, MYSQL no sabe a que arenateamid se refiere, si la columna de la primera tabla o de la segunda, pon esto:

SELECT arena_team.arenateamid,name,rating,wons2 FROM arena_team left join arena_team_stats on arena_team.arenateamid = arena_team_stats.arenateamid WHERE type=2 ORDER BY rating DESC LIMIT 10
  #7 (permalink)  
Antiguo 09/11/2010, 11:15
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Hola otra vez VUN, gracias por tu ayuda =)

Poniendo la nueva consulta que tu me has dicho no me funciona tampoco. Ejecutandola en la base de datos me dice que wons2 no existe.
¿Hará referencia a una tabla que no es?

(En la imagen de arriba tienes la estructura correcta)
  #8 (permalink)  
Antiguo 09/11/2010, 11:18
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Dudilla PHP (Muy simple)

Saludos

Es por que esa columna no existe o no la encuentra. Haz loq ue te indico Vun


Código MySQL:
Ver original
  1. SELECT arena_team.arenateamid,arena_team_stats.name,arena_team_stats.rating,arena_team_stats.wons2 FROM arena_team left join arena_team_stats on arena_team.arenateamid = arena_team_stats.arenateamid WHERE arena_team_stats.type=2 ORDER BY arena_team_stats.rating DESC LIMIT 10

No se si sea esta la estructura de la tabla es verificar los alias que correspondan a cada columna y listos
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #9 (permalink)  
Antiguo 09/11/2010, 11:39
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Hola Nano, gracias por tu ayuda también =)

Sigue sin funcionar. Os dejo el código y una captura del resultado...
La consulta SQL está perfecta, me da los datos tal cual los quiero.

Código PHP:
                    <table class="body6" cellspacing="0" cellpadding="0">
                      <tr class="body6-top">
                        <td colspan="7">
                         Ladder Arenas - 2c2
                        </td>
                      </tr>
                      <tr>
                        <td width="60">Posición</td>
                        <td>Nombre del Equipo</td>
                        <td>Rating</td>
                        <td>Victorias</td>
                      </tr>
                    
                    <?php
                    
                    
                    $query_toparena 
db_query("SELECT arena_team.arenateamid,arena_team.name,arena_team_stats.rating,arena_team_stats.wins2 FROM arena_team LEFT JOIN arena_team_stats ON arena_team.arenateamid = arena_team_stats.arenateamid WHERE arena_team.type=2 ORDER BY arena_team_stats.rating DESC LIMIT 10");
                    
                    
$top_rank 1;
                                            
                        echo 
'<tr><td><b>'.$top_rank++.'.</b></td><td><b>'.$results_toparena["arena_team.name"].'</b></td><td class="top-rank"><b>'.$results_toparena["arena_team_stats.rating"].'</b></td><td><b>'.$results_toparena["arena_team_stats.wins2"].'</b></td></tr>';
                        
                    
                    
                    
?>

                    </table>

  #10 (permalink)  
Antiguo 09/11/2010, 11:47
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Dudilla PHP (Muy simple)

Bueno, tienes que tener un bucle sí o sí


Código PHP:
$top_rank 1;
$query mysql_query("SELECT arena_team.arenateamid,arena_team.name,arena_team_stats.rating,arena_team_stats.wins2 FROM arena_team LEFT JOIN arena_team_stats ON arena_team.arenateamid = arena_team_stats.arenateamid WHERE arena_team.type=2 ORDER BY arena_team_stats.rating DESC LIMIT 10");
while(
$row=mysql_fetch_array($query)) {
   echo 
'<tr><td><b>'.$top_rank++.'.</b></td><td><b>'.$row["arena_team.name"].'</b></td><td class="top-rank"><b>'.$row["arena_team_stats.rating"].'</b></td><td><b>'.$row["arena_team_stats.wins2"].'</b></td></tr>'

La funcion mysql_query() hace la peticion a la base de datos, pero no contiene datos aun. Ya cada vez que aplicamos la funcion mysql_fetch_array() es cuando avanzamos a la siguiente linea para recoger los registros en un array.
  #11 (permalink)  
Antiguo 09/11/2010, 12:53
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Hola Vun,

Quitando lo que tenía y poniendo lo que tú me has dicho me salen los siguientes erroes:

Cita:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'root'@'localhost' (using password: YES) in D:\xampp\htdocs\pradoxwam\wam-pages\top-players.php on line 374

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in D:\xampp\htdocs\pradoxwam\wam-pages\top-players.php on line 374

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\pradoxwam\wam-pages\top-players.php on line 375
Gracias por la ayuda =)
  #12 (permalink)  
Antiguo 09/11/2010, 13:16
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Cita:
<?php
$query_toparena = db_query("SELECT arena_team.arenateamid,arena_team.name,arena_team_ stats.rating,arena_team_stats.wins2 FROM arena_team LEFT JOIN arena_team_stats ON arena_team.arenateamid = arena_team_stats.arenateamid WHERE arena_team.type=2 ORDER BY arena_team_stats.rating DESC LIMIT 5");
$top_rank = 1;
while($results_toparena=mysqli_fetch_array($query_ toparena))
{
echo '<tr><td><b>'.$top_rank++.'.</b></td><td><b>'.$results_toparena["arena_team.name"].'</b></td><td class="top-rank"><b>'.$results_toparena["arena_team_stats.rating"].'</b></td><td><b>'.$results_toparena["arena_team_stats.wins2"].'</b></td></tr>';
}
?>
Poniendo eso he conseguido que se ponga la tabla tal cual la quiero, con las 10 primeras posiciones, pero no se rellena con datos. Está en blanco.
  #13 (permalink)  
Antiguo 09/11/2010, 16:39
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Dudilla PHP (Muy simple)

SAludos

No debes indicarle el alias cuando recorres el ciclo y pintas la posicion del array

Código PHP:
Ver original
  1. <?php
  2. $query_toparena = db_query("SELECT arena_team.arenateamid,arena_team.name,arena_team_ stats.rating,arena_team_stats.wins2 FROM arena_team LEFT JOIN arena_team_stats ON arena_team.arenateamid = arena_team_stats.arenateamid WHERE arena_team.type=2 ORDER BY arena_team_stats.rating DESC LIMIT 5");
  3. $top_rank = 1;
  4. while($results_toparena=mysqli_fetch_array($query_ toparena))
  5. {
  6. echo '<tr><td><b>'.$top_rank++.'.</b></td><td><b>'.$results_toparena["name"].'</b></td><td class="top-rank"><b>'.$results_toparena["rating"].'</b></td><td><b>'.$results_toparena["wins2"].'</b></td></tr>';
  7. }
  8. ?>
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #14 (permalink)  
Antiguo 12/11/2010, 06:38
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Hola nano, gracias por ayudarme =)

Lo que tu me has dicho, me da error global en la página :S

Cita:
Parse error: syntax error, unexpected T_STRING in D:\xampp\htdocs\pradoxwam\wam-pages\top-players.php on line 375
  #15 (permalink)  
Antiguo 12/11/2010, 08:16
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Dudilla PHP (Muy simple)

Saludos

disculpa no me habia fijado qeu estabas utilizando funciones drupal

Código PHP:

      <?php

      $query_toparena 
db_query("SELECT arena_team.arenateamid,arena_team.name,arena_team_ stats.rating,arena_team_stats.wins2 FROM arena_team LEFT JOIN arena_team_stats ON arena_team.arenateamid = arena_team_stats.arenateamid WHERE arena_team.type=2 ORDER BY arena_team_stats.rating DESC LIMIT 5");
 
      
$top_rank 1;

      while(
$results_toparena=db_fetch_array($query_toparena)) {
        
$consecutivo=$top_rank++;
        
$name=$results_toparena["name"];
        
$rating=$results_toparena["rating"];
        
$wins2=$results_toparena["wins2"];
        
      echo 
'<tr><td><b>'.$consecutivo.'</b></td><td><b>'.$name.'</b></td><td class="top-rank">
      <b>'
.$rating.'</b></td><td><b>'.$wins2.'</b></td></tr>';
      }
      
?>
Intenta de esta manera
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #16 (permalink)  
Antiguo 24/11/2010, 16:47
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Gracias por la ayuda nano, pero sigue igual :S Me da este error:

Cita:
Fatal error: Call to undefined function db_fetch_array() in D:\xampp\htdocs\pradoxwam\wam-pages\top-players.php on line 378
Poniendo esto:

Código PHP:
                    <table class="body6" cellspacing="0" cellpadding="0">
                      <tr class="body6-top">
                        <td colspan="7">
                         Ladder Arenas - 2c2
                        </td>
                      </tr>
                      <tr>
                        <td width="60">Posición</td>
                        <td>Nombre del Equipo</td>
                        <td>Rating</td>
                        <td>Victorias</td>
                      </tr>
                    
                    <?php
                    $query_toparena 
db_query("SELECT arena_team.arenateamid,arena_team.name,arena_team_stats.rating,arena_team_stats.wins2 FROM arena_team LEFT JOIN arena_team_stats ON arena_team.arenateamid = arena_team_stats.arenateamid WHERE arena_team.type=2 ORDER BY arena_team_stats.rating DESC LIMIT 5");
                    
$top_rank 1;
                    while(
$results_toparena=mysqli_fetch_array($query_toparena))
                    {                    
                        echo 
'<tr><td><b>'.$top_rank++.'.</b></td><td><b>'.$results_toparena["arena_team.name"].'</b></td><td class="top-rank"><b>'.$results_toparena["arena_team_stats.rating"].'</b></td><td><b>'.$results_toparena["arena_team_stats.wins2"].'</b></td></tr>';
                    }
                        
?>

                    </table>
Consigo que me salga la tabla, pero no me sale ningún resultado, es decir, no salen los nombres de los equipos ni nada. Simplemente los 5 primeros huecos, pero ni el nombre del equipo, ni el rating, ni las victorias.
  #17 (permalink)  
Antiguo 24/11/2010, 16:58
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Dudilla PHP (Muy simple)

Saludos

No debes indicar lo alias Cuando pintas los registros


Código PHP:
<?php
                    $query_toparena 
db_query("SELECT arena_team.arenateamid,arena_team.name,arena_team_stats.rating,arena_team_stats.wins2 FROM arena_team LEFT JOIN arena_team_stats ON arena_team.arenateamid = arena_team_stats.arenateamid WHERE arena_team.type=2 ORDER BY arena_team_stats.rating DESC LIMIT 5");
                    
$top_rank 1;
                    while(
$results_toparena=mysqli_fetch_array($query_toparena))
                    {                    
                        echo 
'<tr><td><b>'.$top_rank++.'.</b></td><td><b>'.$results_toparena["name"].'</b></td><td class="top-rank"><b>'.$results_toparena["rating"].'</b></td><td><b>'.$results_toparena["wins2"].'</b></td></tr>';
                    }
                        
?>
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #18 (permalink)  
Antiguo 25/11/2010, 04:39
 
Fecha de Ingreso: abril-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Dudilla PHP (Muy simple)

Que grande! Muchas gracias! Ya me funciona =)
  #19 (permalink)  
Antiguo 25/11/2010, 04:42
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Dudilla PHP (Muy simple)

Vaya, al final salió, me alegro! yo sobre drupal no tenía mucha idea


Etiquetas: simple
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:55.