Foros del Web » Programando para Internet » PHP »

PHP OO Recuperar datos de dos tablas relacionadas entre si

Estas en el tema de Recuperar datos de dos tablas relacionadas entre si en el foro de PHP en Foros del Web. Hola a tod@s. Estoy intentando recuperar datos de dos tablas, relacionadas por el campo 'idProyecto', para que se muestren todos los registros, y a su ...
  #1 (permalink)  
Antiguo 29/01/2014, 16:10
 
Fecha de Ingreso: mayo-2012
Ubicación: Canarias
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Recuperar datos de dos tablas relacionadas entre si

Hola a tod@s.
Estoy intentando recuperar datos de dos tablas, relacionadas por el campo 'idProyecto', para que se muestren todos los registros, y a su vez, las imágenes de cada proyecto. Para recuperar de la primera tabla utilizo un ciclo for. El problema lo tengo a la hora de intentar traer las imágenes de cada proyecto, ya que dentro del ciclo for si hago otro ciclo for me descontrola todo.

<?php
// Las consultas a la base de datos

//Recupero los datos de los proyectos

public function get_proyectos_index()
{
$sql=sprintf(
" SELECT "
." * "
." FROM "
." tblproyectos "
." INNER JOIN tblcategorias ON tblproyectos.idCategoria = tblcategorias.idCategoria "
." WHERE "
." intEstado=1 "
." ORDER BY "
." fchFecha DESC "
." LIMIT 3 ");
$res=mysql_query($sql,Conectar::con());
while ($reg=mysql_fetch_assoc($res))
{
$this->proyectosIndex[]=$reg;
}
return $this->proyectosIndex;
}



//Recupero las imágenes

public function get_imagenes_por_id($id)
{
$sql=sprintf(" SELECT "
." * "
." FROM "
." tblimagenproyectos "
." WHERE "
." idProyecto='$id' ");
$res=mysql_query($sql,Conectar::con());
while ($reg=mysql_fetch_assoc($res))
{
$this->imagenId[]=$reg;
}
return $this->imagenId;
}



//Ahora trato de que esto funcione...

$pro = new Proyecto();
$index = $pro -> get_proyectos_index();


<ul class="proyectos">
<?php
for ($i=0;$i<sizeof($index);$i++)
{
?>
<li>
<?php echo $index[$i]["strNombre"];?>
//Aquí quería recuperar por otro ciclo for las imágenes, lo hago de esta manera pero no funciona

<?php
for ($i = 0; $i < sizeof($imagenes); $i++)
{
$imagenes = $pro->get_imagenes_por_id($index[$i]["idProyecto"]);
?>

<img src="archivos/proyectos/full/<?php echo $imagenes[$i]["strUrl"];?>" alt="<?php echo $imagenes[$i]["strNombreImagen"];?>">

<?php
}
?>
</li>
<?php
}
?>
</ul>





Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 04/02/2014, 13:27
Avatar de djsos  
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 17 años, 2 meses
Puntos: 14
Respuesta: Recuperar datos de dos tablas relacionadas entre si

Buenas.

Has probado a llamar a la imágen de cada proyecto dentro el while? Te creará bastantes conexiones hacia la bbdd pero te servirá.

Otra solución es con las dos llamadas ya realizadas, durante el primer while de los proyectos, añadele la info de la imágen buscandola en el array que te ha generado la bbdd.

Otra solución más sería que hicieras una busqueda combinada dentro de la propia bbdd

Código MySQL:
Ver original
  1. SELECT idproyecto.a, nombre.a, imagen.b FROM proyectos a, imagenes b WHERE idproyecto.a = idproyecto.b

Saludos
__________________
Es de bien nacidos ser agradecidos.
Desarrollo de software a medida | TPV Comercios
  #3 (permalink)  
Antiguo 04/02/2014, 14:05
 
Fecha de Ingreso: mayo-2012
Ubicación: Canarias
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Recuperar datos de dos tablas relacionadas entre si

Cita:
Iniciado por djsos Ver Mensaje
Buenas.

Has probado a llamar a la imágen de cada proyecto dentro el while? Te creará bastantes conexiones hacia la bbdd pero te servirá.

Otra solución es con las dos llamadas ya realizadas, durante el primer while de los proyectos, añadele la info de la imágen buscandola en el array que te ha generado la bbdd.

Otra solución más sería que hicieras una busqueda combinada dentro de la propia bbdd

Código MySQL:
Ver original
  1. SELECT idproyecto.a, nombre.a, imagen.b FROM proyectos a, imagenes b WHERE idproyecto.a = idproyecto.b

Saludos
Hola! Gracias por tu respuesta djsos, hice lo que me dices pero creo que lo estoy haciendo mal.

Código PHP:
public function get_proyectos_index()
{
   
$sql=sprintf(
        
" SELECT "
        
." * "
        
." FROM "
        
." tblproyectos "
        
." INNER JOIN tblcategorias ON tblproyectos.idCategoria = tblcategorias.idCategoria "
        
." WHERE "
        
." intEstado=1 " 
        
." ORDER BY "
        
." fchFecha DESC "
        
." LIMIT 3 ");
   
$res=mysql_query($sql,Conectar::con());
   while (
$reg=mysql_fetch_assoc($res))
   {
       
//¿¿¿Dices de meter aquí la consulta a la tabla de imágenes???
    
    
        
$this->proyectosIndex[]=$reg;
   }
        return 
$this->proyectosIndex;

Muchass!!!
  #4 (permalink)  
Antiguo 04/02/2014, 14:08
 
Fecha de Ingreso: mayo-2012
Ubicación: Canarias
Mensajes: 3
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Recuperar datos de dos tablas relacionadas entre si

No sé si me he explicado bien.

Lo que pretendo es recuperar la consulta mediante un ciclo FOR, y que me muestre los proyectos y las imágenes de cada proyecto (de 3 a 5 imágenes por proyecto).

Las imágenes están guardadas en una tabla diferente.

Etiquetas: fecha, registro, relacionadas, select, sql, tabla, tablas
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 07:18.