Foros del Web » Programando para Internet » PHP »

Relacionar 2 tablas a través de una tercera

Estas en el tema de Relacionar 2 tablas a través de una tercera en el foro de PHP en Foros del Web. Hola! La cosa es así, yo tengo 2 tablas: -establecimientos y -planes, dentro de establecimientos tengo idplan (establecimientos.idplan) y dentro de planes, un id y ...
  #1 (permalink)  
Antiguo 16/04/2008, 17:26
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Relacionar 2 tablas a través de una tercera

Hola!
La cosa es así, yo tengo 2 tablas: -establecimientos y -planes, dentro de establecimientos tengo idplan (establecimientos.idplan) y dentro de planes, un id y un campo nombre (planes.id, planes.nombre).

La cosa es que un mismo registro en la tabla establecimientos, puede tener varias correspondencias en la tabla planes (una escuela puede tener varias orientaciones), entonces lo que quiero hacer es crear una tercer tabla: -establecimientos2planes, con las siguientes columnas: id_est y id_plan y me guarde la id del establecimiento correspondida con la id del plan, tantas veces como sea necesario.

(Es decir, si al establecimiento.id=1 le corresponden los planes.id=3 y planes.id=10. En la tabla establecimientos2planes aparecerían 2 nuevos registros:
id_est=1 | id_plan=3
id_est=1 | id_plan=10)

Sé que esto se puede hacer, pero no sé bien cómo....

Y cómo quedaría para que lo pudiera seleccionar con checkbox desde mi formulario y los datos se guardaran correctamente en esta nueva base?


Muchísimas Gracias!!!
  #2 (permalink)  
Antiguo 17/04/2008, 00:46
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años
Puntos: 5
Re: Relacionar 2 tablas a través de una tercera

Buenas, esto es más de SQL que de PHP

Para hacer una relación de 1 a varios no necesitas una tabla intermedia, que sería para una relación de varios a varios.

Si un establecimiento puede tener varios planes lo óptimo será que agregues a la tabla planes un campo con el ID de establecimiento, quedando así relacionado en la consulta:

SELECT * FROM planes p INNER JOIN establecimientos e ON p.id=e.planes_id WHERE ...

Última edición por mgusdl; 17/04/2008 a las 01:10
  #3 (permalink)  
Antiguo 17/04/2008, 05:43
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Relacionar 2 tablas a través de una tercera

Claro, esto es más MySQL que PHP... Pero porque eso ya lo sé hacer...

Lo que no sé, es cómo puedo, agregando checkboxs a mi formulario de ingreso de registros, lograr q se ingresen los registros necesarios en esa tercera tabla (dependiendo de la cantidad de planes elegidos)

Gracias!
  #4 (permalink)  
Antiguo 17/04/2008, 05:55
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Re: Relacionar 2 tablas a través de una tercera

pues, antes de hacer la consulta, comprueba los valores de los checkbox, los q están activos....

y segun eso, haces una consulta `dinámica`
  #5 (permalink)  
Antiguo 17/04/2008, 09:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Relacionar 2 tablas a través de una tercera

Gracias por tu respuesta!

Tendrías un poquitín más de info sobre eso?

Gracias de nuevo!
  #6 (permalink)  
Antiguo 17/04/2008, 10:20
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Re: Relacionar 2 tablas a través de una tercera

para obtener los valores en php:

http://www.forosdelweb.com/f18/ayuda-recibir-checkbox-con-php-524564/

y por ejemplo, los guardas en una variable... no sé, esq como no sé exactamente q quieres hacer...... pongamos que son checkbox de "gustos" de helados ! XDD

Código PHP:
if(isset($_POST["chocolate"])) $gustos="\"chocolate\"";
if(isset(
$_POST["fresa"])) $gustos.=",\"fresa\"";
if(isset(
$_POST["vainilla"])) $gustos.=",\"vainilla\"";

$where="where `sabor` in(".$gustos.")";

$sql="SELECT * from recetas ".$where
Espero que te sirva ^^
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:16.