Foros del Web » Programando para Internet » PHP »

Como mostrar datos de dos tablas vinculadas

Estas en el tema de Como mostrar datos de dos tablas vinculadas en el foro de PHP en Foros del Web. Hola a todos. Me llamo Javy. Necesito una mano, por favor. Necesito hacer lo siguiente: en una página php necesito mostrar lo siguiente: - un ...
  #1 (permalink)  
Antiguo 22/07/2012, 02:36
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Como mostrar datos de dos tablas vinculadas

Hola a todos.

Me llamo Javy.

Necesito una mano, por favor.

Necesito hacer lo siguiente:

en una página php necesito mostrar lo siguiente:

- un texto (por ejemplo "Serie Bosques") y debajo, una serie de fotografías de "Bosques".

- debajo, otro texto (por ejemplo "Serie Cielos") y debajo, una serie de fotos de "Cielos".

- etc...

He creado dos tablas en la base de datos llamadas "Series" y "Fotos Series", y la clave ID de "Series" está vinculada a la tabla "Fotos Series".

La intención es que cada "Serie" tenga una cantidad de fotos correspondientes; con lo cual, primero creo un nombre de "Serie" y lugo le voy añadiendo sus "Fotos Serie".

Hasta aquí, todo bién.

El problema es que no sé como, cara al visitante le puedo mostrar, en una sóla página lo dicho anteriormente.

Es decir:

Línea 1: Frase "Serie Bosques"
Línea 2: Fotos de "Serie Bosques"

Línea 3: Frase "Serie Cielos"
Línea 4: Fotos de "Serie Cielos"

Línea n: Frase "Serie n"
Línea n: Fotos de "Serie n".

Creo que me explicado lo mejor posible.

Si me pueden echar una mano, se lo agradecería, ya que me estoy volviendo loco.

Gracias y un saludo a todos:

Javy
  #2 (permalink)  
Antiguo 24/07/2012, 12:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como mostrar datos de dos tablas vinculadas

Tienes que usar INNER JOIN:
Código MySQL:
Ver original
  1. SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.lakeycomun=tabla2.lakeycomun

Saludos.
  #3 (permalink)  
Antiguo 24/07/2012, 13:18
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: Como mostrar datos de dos tablas vinculadas

Gracias "GatorV" por tu respuesta.

El problema es que no sé como presentar las "respuestas" por líneas:

Linea1: Serie "cielos" (texto de la tabla1)
Linea2: las fotos correspondientes de la Serie "cielos" (imágenes de la tabla2)
.
.
.
Linea "N" (final): serie "n" (texto de la tabla1)
Linea "NN": sus fotos correspondientes (imágenes de la tabla2)

esto es lo que me está "matando"...

Gracias y perdón por la repetición del tema.

Un saludo:

Javy

P.D.: ¿tengo que hacer algo con el tema de la "penalización"?
  #4 (permalink)  
Antiguo 24/07/2012, 13:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como mostrar datos de dos tablas vinculadas

¿a que te refieres con presentarlos por líneas? ¿al HTML? eso ya es como generas tu contenido, puedes sacar los registros del array (los registros de la imagen) o hacer otra consulta entonces para traer el resultado.

En fin opciones hay muchas, pero todo depende de que tipo de relación tengan tus tablas si es de 1:n o 1:1.

Saludos.
  #5 (permalink)  
Antiguo 24/07/2012, 14:38
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Como mostrar datos de dos tablas vinculadas

no capto bien si sabes imprimir en html consultas ? o es cuestión de como acomodar los resultados??
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #6 (permalink)  
Antiguo 25/07/2012, 00:37
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: Como mostrar datos de dos tablas vinculadas

Hola:

Gracias por vuestro interés.

Creo que no lancé bien la pregunta o que no me supe explicar.

El denominador común en las tablas es:

tabla1 -> tabla1id, tabla1texto
tabla2 -> tabla2id, tabla1id, tabla2texto

Con lo cual, cuando introduzco los datos en las tablas, lo hago de la siguiente manera:

tabla1 -> tabla1id (1), tabla1texto (serie cielos)
tabla1id (2), tabla1texto (serie mares)
...
tabla1id (x), tabla1texto (xx)

tabla2 -> tabla2id (1), tabla1id (1), tabla2texto (../images/cielo1.jpg)
tabla2id (2), tabla1id (1), tabla2texto (../images/cielo2.jpg)
tabla2id (3), tabla1id (1), tabla2texto (../images/cielo3.jpg)
tabla2id (4), tabla1id (2), tabla2texto (../images/mar1.jpg)
tabla2id (5), tabla1id (2), tabla2texto (../images/mar2.jpg)
...
tabla2id (y), tabla1id (x), tabla2texto (../images/yy1.jpg)


Lo que intento es que, al entrar en la página "misfotos.php" ya aparezcan todas Series que haya en la base de datos y sus repectivas fotos.

A la vista sería algo así:

Código:
<table>
<tr>
<td>Serie cielo</td>
</tr>
<tr>
<td>cielo1.jpg</td><td>cielo2.jpg</td><td>cielo3.jpg</td>...
</tr>
<tr>
<td>Serie mares</td>
</tr>
<tr>
<td>mar1.jpg</td><td>mar2.jpg</td><td>mar3.jpg</td>...
</tr>
...
<tr>
<td>Serie xx</td>
</tr>
<tr>
<td>yy1.jpg</td><td>yy2.jpg</td><td>yy3.jpg</td>...
</tr>
No os fijeis en la forma de la tabla... sólo es como ejemplo para que entandais lo de "presentarlos por líneas".

Aquí es donde encuentro la barrera: ¿como le digo que me muestre el ID 1 de la tabla1, seguido las fotos correspondientes a ese número de ID de la tabla2 y que cuando acabe de mostrar todas las fotos siga con el siguiente ID de la tabla1?

Como no hay ninguna consulta, no se exactamente como hacerlo, ya que tampoco sé cuantos ID tiene la tabla1.

Quiero decir que si supiera desde el principio que sólo va a ver 5 ID en la tabla1, ya lo tengo solucionado... pero es algo que no lo voy a saber, ya que este número irá incrementando a medida que se vayan creando más Series.

De verdad; perdonadme por semejante chapa...

Un saludo:

Javy
  #7 (permalink)  
Antiguo 25/07/2012, 09:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como mostrar datos de dos tablas vinculadas

Pues como te digo, primero haz la consulta principal para extraer las series, luego en cada vuelta del ciclo extraes las imágenes de cada serie.

Código PHP:
Ver original
  1. $query = "SELECT * FROM foo";
  2. echo '<table>';
  3. while ($row = /* */ {
  4.       $query = "SELECT * FROM bar WHERE bar.id=" . $row['id'];
  5.       echo '<tr><td>' . $row['name'] . '</td></tr><tr>';
  6.       while ($fotorow = /* */) {
  7.               // Extraes las fotos
  8.               echo '<td>'.$fotorow['foto'] . '</td>';
  9.       }
  10.       echo '</tr>';
  11. }

Saludos.

Saludos.
  #8 (permalink)  
Antiguo 30/07/2012, 02:21
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: Como mostrar datos de dos tablas vinculadas

Hola "GatorV":

¿Me podrías explicar, por favor, que debo de poner exactamente en las líneas:

while ($row = /* */ {

y

while ($fotorow = /* */) {

del código que me has dado?

Es que le he dado mil vueltas y consigo dar con ello.

Gracias por tu atención y un saludo:

Javy
  #9 (permalink)  
Antiguo 30/07/2012, 10:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como mostrar datos de dos tablas vinculadas

Pues ahí deben de ir tus funciones de fetching, es la forma estándar de ciclar un arreglo que viene de una base de datos.
  #10 (permalink)  
Antiguo 30/07/2012, 12:11
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: Como mostrar datos de dos tablas vinculadas

Lo siento "GatorV" pero ahí me has pillado... ya que nunca he usado este tipo de código ni de bucle...

Si no es mucho pedirte, ¿m epodrías poner un ejemplo mientras sigo investigando...?

Gracias y un saludo:

Javy
  #11 (permalink)  
Antiguo 30/07/2012, 13:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Como mostrar datos de dos tablas vinculadas

Pues es lo más básico:
Código PHP:
Ver original
  1. while ($row = mysql_fetch_assoc($result) {
  2.       var_dump($row);
  3. }

Si no lo haz hecho de esa manera, ¿entonces como?
  #12 (permalink)  
Antiguo 31/07/2012, 05:17
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: Como mostrar datos de dos tablas vinculadas

Gracias de nuevo "GatorV"... no te había entendido con el tecnicismo de "fetching".

Mil perdones por mi torpeza.

He modificado tu código y, aparte de conseguir lo que quería, además, con otro código que ya tenía, puedo mostrar un número X de imágenes por línea.

Dejo el código por si a algien le puede venir bién... o por si veis algún error.

Código PHP:
Ver original
  1. <!--COMIENZO DIV MAIN_CONTENT-->
  2.         <div id="main_content">
  3.        
  4.             <!--COMIENZO DIV MAIN_IZDA-->
  5.             <div id="main_izda">&nbsp;</div><!--FINAL DIV MAIN_IZDA-->
  6.            
  7.             <!--COMIENZO DIV MAIN_CENTRO-->
  8.             <div id="main_centro" class="main_centro_texto">
  9.            
  10.                 <?php
  11.                     //CONECTANDO CON LA BASE DE DATOS
  12.                     require_once("incluye/config_invitado.php");
  13.                     require_once("incluye/funciones.php");
  14.                     //CONECTANDO A MYSQL
  15.                     $cnx = conectar();
  16.                     //CONSULTA
  17.                     $sql = "SELECT fotomontajestextotexto, fotomontajestextoid FROM fotomontajestexto ORDER BY fotomontajestextoid DESC";
  18.                     $res = mysql_query($sql) or die (mysql_error());
  19.    
  20.                     if(mysql_num_rows($res) >0){
  21.                     //impresión de los datos.
  22.                     while (list($fotomontajestextotexto,$fotomontajestextoid) = mysql_fetch_array($res)) {
  23.                     echo "$fotomontajestextotexto\n";      
  24.                     }
  25.                     }else{
  26.                     echo "<img src='imagenes/pagina/flecha.gif' hspace='5' align='absmiddle' />Página en Mantenimiento: disculpen las molestias.\n";
  27.                     }
  28.                     mysql_free_result($cnx);
  29.                     mysql_close($cnx);
  30.                 ?>
  31.                 <br /><br />
  32.                 <span class="rotulacion">Series de Fotomontajes</span><br /><br />                             
  33.                     <?php
  34.                         //CONECTANDO CON LA BASE DE DATOS
  35.                         require_once("incluye/config_invitado.php");
  36.                         require_once("incluye/funciones.php");
  37.                         //CONECTANDO A MYSQL
  38.                         $cnx = conectar();
  39.                         $sql = "SELECT * FROM fotomontajesseries ORDER BY fotomontajesseriesid ASC";
  40.                         $res= mysql_query($sql) or die (mysql_error());
  41.                         $result = mysql_query($sql);
  42.                        
  43.                         while ($resultado = mysql_fetch_assoc($res)) {
  44.                        
  45.                         $sql2 = "SELECT * FROM fotomontajesimg WHERE fotomontajesimg.fotomontajesseriesid=" .$resultado['fotomontajesseriesid']. " ORDER BY fotomontajesimgid ASC";
  46.                         $res2= mysql_query($sql2) or die (mysql_error());
  47.                         $result2 = mysql_query($sql2);
  48.                         $resultadofoto = mysql_fetch_assoc($res2);
  49.                        
  50.                         echo "<div id='contenedor_fotos'>\n";//COMIENZO DIV CONTENEDOR_FOTOS
  51.                         echo "<div id='textoseries'>".$resultado['fotomontajesseriestexto']."</div><br />\n";
  52.                        
  53.                         while ($resultadofoto = mysql_fetch_assoc($result2)) {
  54.                                
  55.                         if ($resultadofoto){//SI HAY RESULTADOS
  56.                     ?>
  57.                     <!--COMIENZO DIV CONTENIDO_FOTOS-->
  58.                     <div id="contenido_fotos">
  59.                         <?php                        
  60.                             $Maximo=6;//FOTOS POR FILA - COLUMNAS
  61.                             $Contador = 0;//REINICIA EL SISTEMA
  62.                             do {
  63.                             $texto = "".$resultadofoto['fotomontajesimgtitulo']."";//SE CARGA EL TEXTO, INCLUYENDO LAS ETIQUETAS HTML
  64.                             $texto2 = strip_tags($texto);//LIMPIA LAS ETIQUETAS HTML DEL TEXTO
  65.                             echo "<div id='celda_fotos'><a href='".$resultadofoto['fotomontajesimgfoto']."' rel='lightbox[roadtrip]' title='$texto'><img src='".$resultadofoto['fotomontajesimgfoto']."' width='120' height='100' rel='lightbox[roadtrip]' alt='$texto2' title='$texto2'/></a>&nbsp;&nbsp;\n";//MOSTRARA LA IMAGEN Y UN TOOLTIP CON EL TEXTO
  66.                             // LIGHTBOX: PARA MOSTRAR IMÁGENES GRANDES
  67.                             echo "</div>\n";//FIN CELDA_FOTOS
  68.                             //ABRE FILA E IMPRIME LOS DATOS
  69.                             $Contador++;//SUMA UNO AL CONTADOR YA QUE IMPRIMIO UNA FILA
  70.                             if ($Contador == $Maximo) {
  71.                             //COMPARA SI LLEGO A LA CANTIDAD DE FILAS
  72.                             echo "</div><br /><div id='contenido_fotos'>\n";//Y CIERRA COLUMNA PARA EMPEZAR DE NUEVO
  73.                             $Contador = 0;
  74.                             }
  75.                             } while ($resultadofoto = mysql_fetch_assoc($result2));
  76.                          ?>
  77.                     </div><!-- CIERRA DIV CONTENIDO_FOTOS -->
  78.                 </div><!-- CIERRA DIV CONTENEDOR_FOTOS -->
  79.                         <?php
  80.                                 } else {
  81.                                 echo "<div id='contenedor_fotos'>\n";
  82.                                 echo "<div id='contenido_fotos'><div id='celda_fotos' class='main_centro_texto'><img src='imagenes/pagina/flecha.gif' hspace='5' align='absmiddle' />Página en Mantenimiento: disculpen las molestias.</div></div>\n";
  83.                                 echo "</div>\n";
  84.                                 echo $result[0];
  85.                                 }
  86.                             }
  87.                             }
  88.                             mysql_close($cnx);
  89.                         ?>
  90.                                
  91.             </div><!--FINAL DIV MAIN_CENTRO-->
  92.            
  93.             <!--COMIENZO DIV MAIN_DCHA-->
  94.             <div id="main_dcha">&nbsp;</div><!--FINAL DIV MAIN_DCHA-->
  95.  
  96.             <div class="clear"></div>
  97.        
  98.         </div><!--FINAL DIV MAIN_CONTENT-->

Gracias de nuevo y un saludo:

Javy

Etiquetas: tabla, tablas, vinculadas
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 03:34.