Comunidad de diseño web y desarrollo en internet online

Problema consulta y funciones PHP

Citar            
MensajeEscrito el 22 Dic 2012 12:18 pm
Bueno, este es mi primer tema en la comunidad y vengo con un problema que no logro solucionar... He tratado con lo que se (no mucho como me gustaria de php), pero no doy con la tecla, ni encuentro solucion a un problema que me trae de cabeza.

Explico:

Yo tengo una base de datos de jugadores de futbol hecha con tablas relacionales mediante identificadores (ej: en la tabla jugadores, cada jugador tiene un campo que es id_equipo, que lo relaciona con la tabla equipos en la que la PRIMARY KEY es id_equipo.

La página que muestra los registros que hay en la base la tengo subida a aquí:

http://tjlfifa.com/oficina/equipos.php

Tengo bastantes problemas con unos puntos que quiero solucionar y sonbásicos para el funcionamiento de la base de datos:

1º Problema:

He creado una función, para que cuando se haga click en el nombre de una liga, muestre los equipos que pertenecen a esa liga, por ejemplo, la liga adelante, tendría que mostrar sólo los equipos que tuvieran el id_liga de la liga adelante (también está hecho en tablas relacionales, como en ejemplo que dí anteriormente).

No consigo que muestre los equipos, tan sólo consigo que saque el nombre, dejo una muestra de la función y la llamada de la función en la página:

La función que utilizo desde una página donde tengo almacenadas las funciones:

Código :

 //devuelve el nombre del equipo que ficha en fichajes

 function dame_equipos_liga($id){
    if (ctype_digit($id)){
    $ssql = "select * from ligas where id_liga=" . $id;
    $rs = mysql_query($ssql);
    //compruebo si se encontró un país
    if (mysql_num_rows($rs)>0){
        $fila =mysql_fetch_array($rs);
        return $fila["nombre_liga"];
    }
    return "equipo desconocido...";
    }else{
    return false;
    }
 }


La llamada a la función que realizo en la página equipos.php

Código :


//muestra los equipos que pertenecen a cada liga
echo "<p>";
if (isset($_GET["ligas"]) && ctype_digit($_GET["ligas"])){
    $id_liga = $_GET["ligas"];
    $ssql .= " and equipos.id_liga=" . $id_liga;
    echo '<h2>5 mejores jugadores de ';
    echo dame_nombre_liga($id_liga); 
   echo '</h2>'; //cierre del título de la búsqueda del país
}

echo '<p>';


Lo que me muestra es una lista de equipos de todas las ligas.

2º Problema

Tengo otra página la cual procesa y muestra la información de cada equipo, como por ejemplo, los jugadores de cada equipo.

Bien, en la parte alta de esa página, tengo otras llamadas a otras funciones que tambuién utilizo que muestran el nombre del equipo, su presupuesto, su valoración... Pero hay otros campos que no logro mostrar porque están en otra tabla relacionada.

Por eso lo único que lograría mostrar tan sólo conectando con la tabla de equipos sería el identificador, por ejemplo, de id_estadios (que está relacionado con la tabla estadios, en la que su PRIMARY KEY es id_estadios. Esta tabla estadios contiene el nombre del estadio, su capacidad... algo que también quisiera mostrar en los datos del equipo.)

La función con la que saco los datos del equipo sería esta:

Código :

//devuelve el nombre del equipo y los datos del equipo en el que se hace click

 function dame_nombre_equipo($id){
    if (ctype_digit($id)){
    $ssql = "select * from equipos where id_equipo=" . $id;
   $rs = mysql_query($ssql);
    //compruebo si se encontró un país
    if (mysql_num_rows($rs)>0){
        $fila =mysql_fetch_array($rs);
        return '<img border="0" src="images/escudos/' . $fila["imagen_escudo"] . '" width="45" height="45">' . 
            $fila["nombre_equipo"] . "<br>Presupuesto fichajes: " .  $fila["presupuesto_fichajes"] . "<br>Valoración: " .  $fila["valoracion"] . " estrellas<br>" . "<br>" . $fila["id_banner"];
    }
    return "equipo desconocido...";
    }else{
    return false;
    }
 }
 


Y para la llamada de los datos en página de plantillas.php

Código :

//muestra los jugadores que pertenecen a cada equipo
echo '<p>';
if (isset($_GET["equipos"]) && ctype_digit($_GET["equipos"])){
    $id_equipo = $_GET["equipos"];
    $ssql .= " and jugadores.id_equipo=" . $id_equipo;
    echo '<h2>';
   echo $fila["nombre_equipo"];
    echo dame_nombre_equipo($id_equipo) . "<br>";
      echo dame_nombre_estadio($id_equipo);
   echo '</h2>'; //cierre del título de la búsqueda
}


Para los que aún no me hayan entendido(me explico mal jeje), les dejo una estructura muy básica de la base de datos para que puedan entenderme:

Tabla: equipos (id_equipo, nombre_equipo, presupuesto_fichajes, valoracion, id_liga...)
tabla: estadios (id_estadio, nombre_estadio, capacidad_estadio, id_equipo)
Tabla: ligas (id_liga, nombre_liga)

También hay otras como país, ficha, atributo, pero que no nombraré porque no tienen relación (o eso creo) con el fallo que quiero solucionar..

Muchas gracias pro la atención y espero que me ayudéis a solucionar el error.

PD: Si alguién necesita que suba los archivos para encontrar el error y mismo si quiere desarrollar un sript parecido, sin ninguna pega los subiré aquí para que puedan descargarlos.

Saludos

Por fif_pro

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Dic 2012 11:47 am
Mostrar los equipos de una liga:

Código MySQL :

SELECT * FROM `equipos` WHERE `id_liga` = 1


Mostrar todos los datos de un equipo:

Código MySQL :

SELECT * FROM `ligas`, `equipos`, `estadios` WHERE 
`equipos`.`id_equipo` = 1
AND
`ligas`.`id_liga` = `equipos`.`id_liga`
AND
`estadios`.`id_equipo` = `equipos`.`id_equipo`

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 23 Dic 2012 07:13 pm

DriverOp escribió:

Mostrar los equipos de una liga:

Código MySQL :

SELECT * FROM `equipos` WHERE `id_liga` = 1


Mostrar todos los datos de un equipo:

Código MySQL :

SELECT * FROM `ligas`, `equipos`, `estadios` WHERE 
`equipos`.`id_equipo` = 1
AND
`ligas`.`id_liga` = `equipos`.`id_liga`
AND
`estadios`.`id_equipo` = `equipos`.`id_equipo`


Gracias por la respuesta, no es lo que buscaba. Ya tengo algo igual en la página que devuelve los equipos y la que devuelve las ligas.

De la forma que me indicas, tendría que hacer una página nueva para cada liga, y que cada una tuviera el identificador de su liga, cosa que no es complicada, pero cuantos menos archivos mejor.

Me diste una idea, pero no se si es posible o yo la estoy planteando mal. Me explico:

SELECT * FROM `equipos` WHERE `id_liga` = 1

Con esa selección, en vez de = 1, podría ser igual a una variable, es decir,

SELECT * FROM `equipos` WHERE `id_liga` = $id_liga

y darle un valor a esa variable para que al hacer click por ejemplo, en liga de brasil, que solo salieran los equipos de la liga brasileña.

El caso es que he probado pero debo estar definiendo mal la variable. Pero creo que por ahí van los tiros.

Por fif_pro

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Dic 2012 07:34 pm
Evidentemente sí, debes cambiar ese "1" por una variable PHP. Pensé que eso es lo que entenderías y lo has hecho. Pero también es evidente que tu problema es otro o está en otra parte.

Normalmente para darle valor a esa variable deberías tomarla por GET:

Código PHP :

$id_liga = $_GET['id_liga'];


Pero estoy adivinando porque el código que has posteado no es suficiente para saber exactamente lo que deseas ni cómo solucionar el problema que tienes.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.