PHP - Relacionar tablas

 
Vista:
sin imagen de perfil
Val: 40
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lucas (21 intervenciones) el 07/12/2016 21:48:06
Hola buenas tardes.
Mi consulta es sobre como relacionar estas tablas

Aca van mis 3 tablas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
--
 Estructura de tabla para la tabla `goleadores`
--
 
CREATE TABLE `goleadores` (
  `Id` int(11) NOT NULL,
  `Equipo` varchar(30) NOT NULL,
  `Nombre` varchar(30) NOT NULL,
  `Apellido` varchar(30) NOT NULL,
  `Goles` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--
-- Indices de la tabla `goleadores`
--
ALTER TABLE `goleadores`
  ADD PRIMARY KEY (`Id`);
 
 
-- --------------------------------------------------------
 
--
-- Estructura de tabla para la tabla `noticias`
--
 
CREATE TABLE `noticias` (
  `Id` int(11) NOT NULL,
  `Titulo` varchar(100) NOT NULL,
  `Texto` mediumtext NOT NULL,
  `Equipo` varchar(50) NOT NULL,
  `Foto` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--
-- Indices de la tabla `noticias`
--
ALTER TABLE `noticias`
  ADD PRIMARY KEY (`Id`);
 
 
 
-- --------------------------------------------------------
 
--
-- Estructura de tabla para la tabla `posiciones`
--
 
CREATE TABLE `posiciones` (
  `Id` int(11) NOT NULL,
  `Equipo` varchar(50) NOT NULL,
  `PJ` int(11) NOT NULL,
  `PG` int(11) NOT NULL,
  `PE` int(11) NOT NULL,
  `PP` int(11) NOT NULL,
  `DG` int(11) NOT NULL,
  `Puntos` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
--
-- Indices de la tabla `posiciones`
--
ALTER TABLE `posiciones`
  ADD PRIMARY KEY (`Id`);
 
-- --------------------------------------------------------

El problema que tengo es a la hora de crear un filtro y querer realizar una busqueda por ejemplo de un equipo y que me muestre todos los datos de ese equipo.

Los id que tengo creados en cada tabla son de clave primaria y autoincrement, y no los podria cambiar ya que tengo programado todo con eso.

Me prodrian ayudar a ver que puedo hacer?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lopez
Val: 395
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lopez (128 intervenciones) el 08/12/2016 02:44:13
Lucas,

JOIN es la idea. Un ejemplo para que pruebes:
1
SELECT * FROM tabla1,tabla2 WHERE tabla1.id = tabla2.id;

Si gustas nos puedes compartir el codigo PHP + Mysql que estas usando para generar las consultas,
Partamos desde allí que felices estaremos de ayudar ;)

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 40
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lucas (21 intervenciones) el 08/12/2016 14:46:23
Muchas gracias por contestar.
Yo tengo 3 secciones, una que muestra los datos de la tabla posiciones, otra que muestra los datos de goleadores y otro que muestra los datos de noticias.
Lo que necesito es crear un filtro que busque el nombre de un equipo y me muestre todo lo que hay sobre ese equipo.
Aca les paso un poco de codigo, sobre la seccion de posiciones (Ya que los demas se repite el codigo)
Estoy desorientado con el tema, busque filtros pero buscan de una sola tabla, y tampoco se si como yo tengo las tablas es posible hacerlo.

Este es el posiciones.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<tr>
	<th>Equipo</th>
	<th>PJ</th>
	<th>PG</th>
	<th>PE</th>
	<th>PP</th>
	<th>DG</th>
	<th>Puntos</th>
</tr>
 
<?php
include("conexion.php");
				$tabla = "posiciones";
$query = "SELECT * FROM posiciones";
$resultado = $conexion->query($query);
while($row = $resultado->fetch_assoc()){
?>
 
	<tr>
		<td><?php echo $row['Equipo']; ?></td>
		<td><?php echo $row['PJ']; ?></td>
		<td><?php echo $row['PG']; ?></td>
		<td><?php echo $row['PE']; ?></td>
		<td><?php echo $row['PP']; ?></td>
		<td><?php echo $row['DG']; ?></td>
		<td><?php echo $row['Puntos']; ?></td>
	</tr>
 
<?php
}
?>


Aca el conexion

1
2
3
<?php
$conexion = new mysqli('localhost','root','','futbol');
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 40
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lucas (21 intervenciones) el 08/12/2016 16:42:31
Gracias lopez, ahi lo estuve viendo y la verdad que no lo entendi mucho
Si me podes ayudar aca mejor ,si no, no hay problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lopez
Val: 395
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lopez (128 intervenciones) el 08/12/2016 18:32:34
Estimado Lucas,

Espero no se lea como sermón, pero antes de solicitar ayuda en foros, siempre ten en cuenta el siguiente concepto básico:
Piensa en que le hablas a un colega ocupadisimo, La idea es resumir todo en una o dos lineas,
entragando el error que recibes y sobre todo haberse INFORMADO Y PROBADO ANTES un código-solucion,
asi estaras entendido del tema y podrascomprender las posibles soluciones que te podamos brindar..

Habiendo dicho eso, vamos paso a paso. Lo primero, tus tablas estan careciendo de un campo de referencia, es decir,
entiendo "GOLEADORES" seria la tabla maestra cierto?, aquí quieres NOTICIAS Y POSICIONES se relacionen y soliciten.
El caso es que en NOTICIAS no tienes un campo que INDIQUE a que goleador estará asociada o perteneciendo.
Usaré TBL NOTICIAS como ejemplo, y añadire un campo nuevo, "id_goleador" que hará referencia al "id" en la tabla GOLEADORES.

1
2
3
4
5
6
7
8
9
CREATE TABLE `noticias` (
  `Id` int(11) NOT NULL,
  `Titulo` varchar(100) NOT NULL,
  `Texto` mediumtext NOT NULL,
  `Equipo` varchar(50) NOT NULL,
  `Foto` varchar(20) NOT NULL,
  `id_goleador` varchar(20) NOT NULL
 
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Vamos bien?
Si puedes, luego de estos cambios, ve rellenando la base de datos para asi poder ir testeando.
Si dejas el dump, tambien es útil.

Quedo atento a tu respuesta ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 40
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lucas (21 intervenciones) el 08/12/2016 19:30:30
Perdon lopez, lo que pasa que no puedo ni probar porque no se por donde empezar, es por eso que no puedo poner errores, etc.
Tabla maestra no tengo, son 3 tablas por separado.
La tabla posiciones guarda el equipo, los puntos etc.
La tabla de goleadores guarda el nombre y apellido del jugador, goles y equipo, etc.
La tabla de noticias guarda el titulo, equipo, noticia y una foto.
Son 3 tablas por separado, que no estan relacionadas entre si.
Esto me lo pidieron para un final, ahora me agregaron y me dijieron que tengo que filtrar informacion.
Por ejemplo, que filtre el equipo : Boca juniors.
Y me de la informacion relacionada de boca junior en noticas, goleadores y posiciones.
Eso es concretamente lo que necesito, perdon por no ser tan claro y no poner errores ni avances, el tema es que no se por donde empezar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lopez
Val: 395
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lopez (128 intervenciones) el 08/12/2016 20:17:35
Lucas,

No es que no sepas donde empezar, creo no entiendes la programacion,
disculpa si se lee mala leche, pero prefiero seamos honestos, asi explicarte de manera diferente.

Primero debes entender lo que es el modelo entidad relacion,
no tienes que ser un experto, solo pon atencion.

A idea, la tabla maestra es la que tiene al actor o personaje

1
2
3
4
5
TABLA MAESTRA (Equipos)
 
idu ( 007)
nombre (BocaJuniors)
goles (28)

1
2
3
4
5
6
TABLA NOTICIAS
idn (ejemplo 1)
idu_n (007)
titulo ( Mi primera noticia )
texto (Aqui probando y aprendiendo sobre Boca)
)

Es decir IDU (TABLA Maestra) = IDU_N (Tabla NOTICIAS)

Si te das cuenta el campo IDU (ID de usuario, es unico) de la tabla maestra,
se repite en el campo IDU_N dentro de la tabla NOTICIAS.
Esta es la forma en que la noticia entendera a quien esta relacionada.

La idea es simple, añade 1 nuevo campo llamado id_goleador a ambas tablas NOTICIAS Y POSICIONES .
Luego en noticias.php:

1
$query = "SELECT * FROM equipos,noticias WHERE equipos.idu=$_GET["idu"] AND noticias.idu_n=$_GET["idu"]";

Para probar esto, en tu localhost accedes a donde este noticias.php de esta manera:
http://localhost/futbol/noticias.php?iud=007&idu_n=007

Nos cuentas que tal va todo ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 40
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lucas (21 intervenciones) el 08/12/2016 20:55:56
Bueno gracias, ahora voy a intentar con eso y cualquier cosa vuelvo a comentar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 40
Ha aumentado su posición en 7 puestos en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por lucas (21 intervenciones) el 12/12/2016 16:43:09
Hola, buenos dias.
Ahi estuve viendo esos videos y comprendí como era la lógica de la BD.
Ahora me surge la siguiente duda.
Muestro el codigo primero
///Aca dejo el link para ver una imagen de la BD///
https://s29.postimg.org/m982thclz/Base_de_datos.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<table class="table">
	<thead class="thead-inverse">
		<tr>
			<th>Equipo</th>
			<th>Nombre</th>
			<th>Apellido</th>
			<th>Goles</th>
			<th colspan="2">Operaciones</th>
		</tr>
	</thead>
	<?php
	include("conexion.php");
	$query = "SELECT * FROM goleadores";
	$resultado = $conexion->query($query);
	while($row = $resultado->fetch_assoc()){
	?>
 
		<tr>
			<td><?php echo $row['Id_eq1']; ?></td>
			<td><?php echo $row['Nombre']; ?></td>
			<td><?php echo $row['Apellido']; ?></td>
			<td><?php echo $row['Goles']; ?></td>
			<td><a class="pad btn btn-primary" href="goleadores-modificar.php?Id_gol=<?php echo $row['Id_gol'];?>">Modificar</a></td>
			<td><a class="pad btn btn-danger" href="funciones.php?Id_gol=<?php echo $row['Id_gol'];?>">Eliminar</a></td>
		</tr>
 
	<?php
	}
	?>

Aca tengo mi codigo, que me muestra de la tabla goleadores, el Equipo, Nombre, Apellido y Goles.
Pero en el caso del Equipo me muestra el Id_eq1 (Osea 1, el id que almacena de su tabla madre que es posiciones).
En cuestion, en vez de que me muestre ese Id_eq1, necesito que me muestre el equipo de ese id que esta en la otra tabla madre llamada posiciones.
Disculpen si no soy muy claro

Desde ya muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lopez
Val: 395
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Relacionar tablas

Publicado por Lopez (128 intervenciones) el 17/12/2016 14:27:03
Lucas,

Te quedaría algo cómo:

1
"SELECT * from posiciones,goleadores,noticias WHERE eq_id.posiciones = ' ".$_GET["eq_id"]." ' and id_eq2.noticias =  ' ".$_GET["eq_id"]." '  AND id_eq1.goleadores =  ' ".$_GET["eq_id"]." ' "

1
' ".$_GET["eq_id"]." '
Es una variable de tipo $_GET. http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=577:get-php-recuperar-datos-de-formularios-html-pedir-datos-ejemplos-y-ejercicios-resueltos-cu00833b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193.

Para usarla deberás, si por ejemplo tu archivo *.php con el código que estamos desarrollando, se llama INDEX.PHP,
accederás usando la siguiente direcion : [url]http://localhost/tu_carpeta_con_codigo/index.php?eq_id=1[/url]

Espero te ayude,
Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar