PHP - Consultas de 2 tablas

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

Consultas de 2 tablas

Publicado por Johanna (13 intervenciones) el 20/04/2018 16:37:31
Hola buenos días!
Me estoy volviendo loca con esto!
Tengo 1 tabla que muestra localidades, se llama "destinos" que tiene un valor que me interesa que es "destino" (el nombre de la localidad.
Por otro lado tengo otra tabla que se llama "alojamientos" que muestra varios alojamientos y sus descripciones y uno de sus valor es "iddestinos", que es el mísmo nombre de id que usé en la tabla "destinos".

Llamo así para traer los valores de la tabla alojamientos:

1
2
3
4
5
$consulta="SELECT * FROM alojamientos WHERE 1=1";
$resultado=mysqli_query($con,$consulta);
$cantidad=mysqli_num_rows($resultado);
while($fila=mysqli_fetch_array($resultado)){
<?php echo($fila["nombrealojamiento"]);?>

Hasta ahí vamos bárbaro!
Pero obviamente, cuando quiero mostrar la localidad, si pongo esto me sale el número de iddestino
1
<?php echo($fila["iddestino"]);?>

Cómo hago para que me muestre el nombre de destino "destino" que está en la tabla "destinos"?

Puse así, pero me trae todos los nombres:

1
2
3
4
5
6
7
$consulta1="SELECT destino FROM destinos LEFT JOIN (alojamientos)
                 ON (alojamientos.iddestinos = destinos.iddestinos)";
$resultado1=mysqli_query($con,$consulta1);
while($fila2=mysqli_fetch_array($resultado1)){
 
?>
<?php echo($fila2["destino"]);?>

Que estoy haciendo mal?
Graciassssssss
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por tomas (7 intervenciones) el 20/04/2018 17:08:52
la consulta que tenes que hacer seria la siguiente:

1
2
3
Select  a.nombre, d.nombre
from alojamientos a
join destinos d on a.id_destino = d.id_destino

Saludos!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por xve (6935 intervenciones) el 21/04/2018 08:35:29
La estructura que te muestra Tomas es correcta!!!

Que error te da?
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: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por Johanna (13 intervenciones) el 21/04/2018 17:44:02
Puse así:

1
2
3
4
5
6
7
8
$consulta1="Select iddestino.destinos,iddestinos.alojamientos
from alojamientos a
join destinos d on iddestino.iddestino = iddestino.alojamientos";
$resultado1=mysqli_query($con,$consulta1);
while($fila2=mysqli_fetch_array($resultado1)){
 
?>
<?php echo($fila2["destino"]);?>


Y me tira este error

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\xampp\puntocardinalbk\abm\alojamientos.php on line 83
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por xve (6935 intervenciones) el 21/04/2018 21:44:49
Esa consulta esta mal Johanna!!!

Si te fijas en lo que te puso Tomas lo tienes sencillo... viendo tu código creo que seria algo así:
1
2
3
$consulta1="Select d.destinos,a.alojamientos
from alojamientos a
join destinos d on a.iddestino = d.alojamientos";

Pruebalo y coméntanos!!!
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: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por Johanna (13 intervenciones) el 21/04/2018 22:08:57

Pongo esto:
1
2
3
4
5
6
7
8
$consulta1="Select d.destinos,a.alojamientos
from alojamientos a
join destinos d on a.iddestino = d.alojamientos";
$resultado1=mysqli_query($con,$consulta1);
while($fila2=mysqli_fetch_array($resultado1)){
 
?>
<?php echo($fila2["destino"]);?>

Y me devuelve esto:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\xampp\puntocardinalbk\abm\alojamientos.php on line 83

Ya probé de todas formas, no sé que más hacer
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por xve (6935 intervenciones) el 22/04/2018 08:52:13
Hola Johanna, solo pueden ser dos cosas...

1.- la cosulta no devuelve ningun resultado
2.- hay un error en la consulta

Nos puedes mostrar la estructura de las dos tablas?
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: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por Johanna (13 intervenciones) el 22/04/2018 14:53:06
Si, obvio, ahí la comparto.
Mil Gracias!!
Base de datos
alojamiento
destino
Consulta
consulta
Muestreo. Ahí volví al punto de partida y me muestra el número de iddestinos, pero quiero que aparezca el nombre de la otra tabla "destino", ahí estoy fallando.
ejemplo
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 xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por xve (6935 intervenciones) el 22/04/2018 20:43:34
Viendo las tablas, la consulta esta mal... tiene que ser así:
1
2
3
$consulta1="Select d.destinos,a.nombrealojamiento
from alojamientos a
join destinos d on a.iddestinos = d.iddestinos";

Creo que el gran problema que tienes es que no entiendes como se vinculan las tablas... si lo entendieras, ubieras visto que los nombres eran erroneos
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: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por Johanna (13 intervenciones) el 22/04/2018 21:03:47
No, ni hablar. No entiendo cómo hacer para traer datos de una tabla a otra.
Ahora, estoy poniendo cómo vos me decís y tampoco me funciona
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 italo
Val: 920
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consultas de 2 tablas

Publicado por italo (150 intervenciones) el 24/04/2018 06:24:31
Hola, tu problema es en tu base de datos, para "traer" datos de una tabla a otra simplemente debes de "relacionar" / "vincularlas", es decir, deberas de crear un vinculo logico entre una y otra, hay varias maneras para hacer esto, 1:N, N:N, no nos brinda toda la informacion de tu database, los nombres no bastan, al parecer como te comento @xve el problema es que no tienes las tablas relacionadas (a simple vista), puedes practicar con el siguiente codigo, recuerda que el resultado de tus tablas es el producto del trabajo anterior que es fundamento y se llama diagramas de flujos que es lo que seria convertir lo amministrativo en aplicativo, o sea, lo que te requiere el cliente a un lenguaje de base de datos... pero bueno como modo de practica te puede servir esto:

algunas concideraciones... normalmente se nombra a las tablas en singular, no es necesario que se repita siempre el nombre de la tabla en los atributos o nombre de campos... respeta el tipo de dato... etc etc etc

abre tu database y crea por grafica o console estas tablas (no te preocupes que estan con otro nombre (lwdp = lawebdelprogramador)) (basta que copies y pegues):

-- creo primero la tabla destino, auto_increment y primary key, o sea llave primaria

-- luego creo la tabla alojamiento que tendra como referencia la llave primaria de la tabla destino (a eso de le llama relacion entre tablas), tambien sera auto_incremet y tendra su propria llave primaria

1
2
3
4
5
6
7
8
9
10
11
12
13
14
create table destino_lwdp (
 
id INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
nombre varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
create table alojamientos_lwdp (
 
id INT(5) NOT NULL PRIMARY KEY AUTO_INCREMENT,
id_destino INT(5) NOT NULL,
nombre varchar(100) NOT NULL,
descripcion varchar(250) NULL,
FOREIGN KEY (id_destino) REFERENCES destino_lwdp(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

luego que has creado las dos tablas, haces el insert de datos en modo de ejemplo:

** -- en este caso, los campos "id" se autoincrementan solos en automatico ya que no estan declarados en el codigo del insert.

1
2
3
4
5
6
7
INSERT INTO `destino_lwdp` (`nombre`) VALUES
('Perù'),
('Italia');
 
INSERT INTO `alojamientos_lwdp` (`id_destino`,`nombre`,`descripcion`) VALUES
(1, 'Hotel Perù', 'El mejor hotel de Perù, El Inca'),
(2, 'Hotel Italia', 'El mejor hotel del Italia, La Bella');

y luego en modo de ejemplo la select donde se elencan el nombre del destino y sus respectivos alojamientos

1
2
3
4
5
select d.nombre nombre_destino, a.id_destino a_id_destino, a.nombre nombre_alojamiento, a.descripcion descripcion_alojamiento
from destino_lwdp d, alojamientos_lwdp a
where d.id = a.id_destino
and a.id_destino = 1
;

en esa select se elencan el nombre del destino y sus respectivos alojamientos

q_1

ovbiamente prueba todo en tu ambiente de test.

inicia con eso, luego pasamos a php. si tienes errores escribelos con respectivo codigo.

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