Foros del Web » Programando para Internet » PHP »

Como enlazar dos tablas con PHP y MySQL

Estas en el tema de Como enlazar dos tablas con PHP y MySQL en el foro de PHP en Foros del Web. Hola a todos: Estoy intentando enlazar dos tablas con PHP y MySQL. Mis tablas son: Alojamientos: - id (autonumerico) - nombre - direccion - telefono ...
  #1 (permalink)  
Antiguo 06/03/2006, 08:41
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
Como enlazar dos tablas con PHP y MySQL

Hola a todos:

Estoy intentando enlazar dos tablas con PHP y MySQL.
Mis tablas son:

Alojamientos:
- id (autonumerico)
- nombre
- direccion
- telefono

Galeria
- id (autonumerico)
- imagen
- miniatura
- idalojamiento

Lo que estoy tratando es sacar las imagenes de la galería cuyo idalojamiento coincide con la id de la tabla alojamientos y juntoi a ellos los datos del alojamiento, es decir, nombre, direccion,...

Lo he intentado conn este codigo pero no funciona:
Código:
SELECT * FROM alojamiento, galeria
WHERE alojamientos.id=galeria.idalojamientos
y despues para llamar a los campos de las tablas usaba por ej: $alojamientos.nombre, $alojamientos.direccion, ...

Para haceros a la idea quiero sacar una ficha con las imagenes del alojamiento y los datos del alojamiento.

¿Como lo puedo poner?
  #2 (permalink)  
Antiguo 06/03/2006, 09:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Los campos de una consulta SQL que intervengan várias tablas no se acceden en PHP por $tabla.campo .. sino sólo por "nombre campo" .. Esto implica que si tu tienes un par de campos de esas tablas que coincide su nombre y quieres accederlos de forma independiente tendrás que usar "alias" en SQL:

SELECT alojamientos.nombre as nombre_alojamiento, galeria.nombre as nombre_galeria FROM alojamientos,galeria WHERE ........

Y así poder hacer referencia a los "ALIAS" creados:
$row['nombre_galeria'] ... $row['nombre_alojamiento']

Por cierto .. revisa en el foro de Base de datos por el uso de "INNERT JOIN" y afines para mejorar tu consulta SQL que intervengan várias tablas.

Un saludo,
  #3 (permalink)  
Antiguo 11/03/2006, 18:30
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
Hola:

Lo he intentado con inner join y la sentencia sql:

Código:
SELECT * FROM alojamientos INNER JOIN galeria ON alojamientos.id = galeria.idalojamiento
y después llamandolo de la forma:

$row["alojamientos.nombre"]

$row["galeria.imagen"]

pero no me funciona.

¿Como tengo que llamar a los campos de la BBDD?

Muchas Gracias
  #4 (permalink)  
Antiguo 11/03/2006, 20:43
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Prueba esto y ya me contaras:

SELECT * FROM alojamientos JOIN galeria ON alojamientos.id = galeria.idalojamiento

Y despues los llamas de la forma:

$row['nombre'];
$row['direccion];
$row['imagen'];

$row['magen'] te deberia mostrar la imagen correspondiente al alojamiento de nombre $row['nombre']

Hasta luego

Última edición por Cubatron; 11/03/2006 a las 20:57
  #5 (permalink)  
Antiguo 11/03/2006, 22:29
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 11 años, 9 meses
Puntos: 0
SELECT alojamiento.id,nombre,direccion,telefono,imagen,mi niatura FROM alojamiento, galeria
WHERE alojamientos.id=galeria.idalojamientos;

Eso funca
  #6 (permalink)  
Antiguo 12/03/2006, 05:27
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
Gracias a todos por vuestra ayuda, pero sigo con el problema.

He probado con lo que me habies dicho y o bien falla o no muestra nada.
Os pongo mi codigo completo para que veais como lo he puesto.

Código PHP:
<?
  
// Conexión con la BBDD
    
require_once('conexion.php');                            
  
//Creamos la sentencia SQL y la ejecutamos
    
$result=mysql_db_query("$db","SELECT * FROM alojamientos INNER JOIN galeria ON alojamientos.id = galeria.idalojamiento");
    while (
$row=mysql_fetch_row($result))
    {
        echo 
"    <strong>Nombre: </strong>$row[nombre]<br>
                <strong>Imagen: </strong><img src='prueba.gif'/>
                <br><br><br><br>"
;
    }     
        
mysql_free_result($result);
    
    
//Cierra la Conexion con la Base de Datos
    
include "cerrar_conexion.php";

?>
Espero que alguien me pueda ayudar.
Muchisimas Gracias
  #7 (permalink)  
Antiguo 12/03/2006, 07:59
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
A ver, en vez de mysql_fecth_row utiliza mysql_fecth_array o mysql_fectch_assoc y deberia funcionar.

Otra cosa, si pones <img src='prueba.gif'> siempre saldra la misma imagen, lo suyo seria que pusieras: <img src='".$row['imagen']."'> para comprobar si muestra la imagen correspondiente.

Si sigues teniendo problemas prueba a poner JOIN solo, sin el INNER

Debo suponer que no tienes problemas conectando con la DB

Hasta luego
  #8 (permalink)  
Antiguo 12/03/2006, 12:19
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
Muchas Gracias a todos, en especial a ti Cubatron, he solucionado todo.

Me vais a llamar pesado pero tengo un ultimo problemilla.
Resulta que por cada alojamiento(por cada id) hay varias imagenes, resulta que con el codigo actual se muestran todos los registros de las imagenes con su respectivo nombre del alojamiento.

Me gustaría saber que se podría hacer para mostrar solo la primera imagen de cada alojamiento, es decir que aparezcan el nombre del alojamiento y debajo la primera imagen que aparezca en la BD, y seguido de esto el siguiente alojamiento con su imagen, asi sucesivamente.

¿Se puede hacer?

Gracias
  #9 (permalink)  
Antiguo 12/03/2006, 17:46
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 11 años, 9 meses
Puntos: 0
primero tenis ke definir cual es la "primera imagen" , lo ke haria yo seria agfregar un campo mas a la tabla galeria donde este determinara la imagen default para cada alojamiento, eso me hace mas facil identificarla porke en el query tendria ke agregar "AND imagen_default=1" ,( 1= default ,0 = no default)
  #10 (permalink)  
Antiguo 13/03/2006, 03:33
 
Fecha de Ingreso: abril-2003
Mensajes: 363
Antigüedad: 14 años, 7 meses
Puntos: 3
Hola bistoco,

Esa forma la habia pensado poner, pero me gustaría saber si se puede hacer de alguna forma sin tener que modificar la tabla.

La imagen que se mostraría si se puede hacer la modificación del codigo sería la primera que coincida con el id del alojamiento, descartando las siguientes.

Gracias
  #11 (permalink)  
Antiguo 17/03/2006, 18:01
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 11 años, 9 meses
Puntos: 0
a ver...segun lei alguna vez, los registros en base de datos no tiene "orden", entonce hablar del primero solo tiene sentido en el resultado de una consulta, pero no el almacenamiento

ahora si kieres una sola imagen sin deteminar un crterio de seleccion basta con

SELECT * from galeria WHERE id_alojamiento=".$id_ke kiero." LIMIT 0,1";

xau
  #12 (permalink)  
Antiguo 23/03/2016, 11:03
 
Fecha de Ingreso: marzo-2016
Mensajes: 12
Antigüedad: 1 año, 8 meses
Puntos: 0
Respuesta: Como enlazar dos tablas con PHP y MySQL

Buen día, yo tengo un problema parecido el cual hasta ahora no he podido solucionar el código que tengo es el siguiente:
Cita:
<?PHP
$terminobusqueda=$_POST["terminobusqueda"];
$local=$_POST["local"];
include ("conexion.php");
conecta();
$consulta = "select * from notas where MP_MAT_ID = ".$terminobusqueda." ORDER BY DESCRIPCION;";
//echo $consulta;
$resultado = mysql_query($consulta);
$num_resultados = mysql_num_rows($resultado);
?>
con termino busqueda, muestra el código con el que se ingresa y luego compara en la tabla notas para mostrarlos a continuación con el código de abajo, lo que quiero hacer es unir los datos con una tabla nueva, la cual tiene los datos del apoderado y mostrarlos en el formulario php, como hago por ejemplo con el nombre nombre:

Cita:
<?PHP echo stripslashes($row["ALUMNO"]);?>

como podría hacerlo? gracias
  #13 (permalink)  
Antiguo 23/03/2016, 11:12
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 2 años
Puntos: 39
Respuesta: Como enlazar dos tablas con PHP y MySQL

krizzh, cómo es que los usuarios les vale el anuncio que dice "SE RECOMIENDA ABRIR UN NUEVO TEMA"? Cómo lo evades? No te sientes culpable de no seguir las normas del foro? No te sientes mal? Puedes vivir con esa culpa?

Duda existencial.
  #14 (permalink)  
Antiguo 23/03/2016, 11:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.221
Antigüedad: 10 años
Puntos: 2634
Respuesta: Como enlazar dos tablas con PHP y MySQL

Además, dudo mucho que sea "el mismo problema", tomando sólo en cuenta los DIEZ AÑOS transcurridos, la evolución de los lenguajes, el desarrollo de nuevas tecnologías y métodos...
Sería como pensar que se puede crear una buena web con el MS FrontPage...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 23/03/2016, 12:05
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Respuesta: Como enlazar dos tablas con PHP y MySQL

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Sería como pensar que se puede crear una buena web con el MS FrontPage...
Ah!! ¿Que no se puede? No sabía... jajajajaja
  #16 (permalink)  
Antiguo 23/03/2016, 12:07
 
Fecha de Ingreso: marzo-2016
Mensajes: 12
Antigüedad: 1 año, 8 meses
Puntos: 0
Respuesta: Como enlazar dos tablas con PHP y MySQL

Cita:
Iniciado por rodocoyote15 Ver Mensaje
krizzh, cómo es que los usuarios les vale el anuncio que dice "SE RECOMIENDA ABRIR UN NUEVO TEMA"? Cómo lo evades? No te sientes culpable de no seguir las normas del foro? No te sientes mal? Puedes vivir con esa culpa?

Duda existencial.
No sé si lo haces por spam, pero yo tomé como referencia a este tema ya que fue el que encontré buscando en google como referencia, es por ello que hice la consulta en este tema, pero si eres el moderador o administrador, eliminas mi post y solucionado.

Por otro lado si sabes la respuesta te agradecería mucho en la ayuda, pero si no la tienes igual te agradecería no tomar importancia al post que hice, gracias

PDTA: dice SE RECOMIENDA, no te esta obligando a abrir un tema, ya que en ese caso el tema estaría cerrado a respuestas. saludos
  #17 (permalink)  
Antiguo 23/03/2016, 12:09
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Respuesta: Como enlazar dos tablas con PHP y MySQL

Hola krizzh,

Te recomiendo que abras un nuevo post, haciendo referencia a este, ya que tienen razón, no está bien reabrir un post tan antiguo.

Espero que te sirva la aclaración.
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 04:45.