Foros del Web » Programando para Internet » PHP »

Mostrar registros alternados de 2 tablas distintas

Estas en el tema de Mostrar registros alternados de 2 tablas distintas en el foro de PHP en Foros del Web. Salú a la barra Les cuento, necesito mostrar registros alternados sacados de 2 tablas. Osea, tengo tabla1 y tabla2 y quiero sacar n número de ...
  #1 (permalink)  
Antiguo 13/05/2006, 04:02
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Mostrar registros alternados de 2 tablas distintas

Salú a la barra

Les cuento, necesito mostrar registros alternados sacados de 2 tablas.

Osea, tengo tabla1 y tabla2 y quiero sacar n número de registros que cumplan x condiciones de cada una de las tablas y mostrarlas así

registro1 de tabla1
registro1 de tabla2
registro2 de tabla1
registro2 de tabla2

¿Hay alguna forma estandar de hacerlo o hay que recurrir a manipulaciones salchicheras?

Gracias y un saludo
  #2 (permalink)  
Antiguo 13/05/2006, 07:52
 
Fecha de Ingreso: abril-2006
Mensajes: 268
Antigüedad: 11 años, 7 meses
Puntos: 2
Yo no conozco ninguna forma "estandar" de hacerlo.
Considerando que cada tabla tiene el mismo número de registros, se podría hacer algo así:

Código PHP:
<?
//Voy a suponer que utilizas mysql, a modo de ejemplo. 

$resultado1 mysql_query($consulta1);
$resultado2 mysql_query($consulta2);

while (
$registro1 mysql_fetch_row($resultado1)) {
$registro2 mysql_fetch_row($resultado2);
//Mostrar datos del registro1
//Mostrar datos del registro2
}

?>
Si la forma de mostrar los datos de ambas tablas es igual, entonces podría utilizarse una funcion para mostrar los datos y llamarla dos veces con $registro1 y $registro2 como parámetros, con el fin de no duplicar el código para mostrar los datos. También se podría utilizar un for de dos iteraciones, etc.

Saludos.
  #3 (permalink)  
Antiguo 13/05/2006, 08:15
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Ah, simplemente perfecto no sabía que se podía hacer así, qué bien

Muchísimas gracias por tu ayuda Notwen me ha resuelto el asunto


Un saludo
  #4 (permalink)  
Antiguo 19/05/2006, 06:25
 
Fecha de Ingreso: agosto-2003
Mensajes: 258
Antigüedad: 14 años, 4 meses
Puntos: 3
¿Hay el mismo número de registros en las dos tablas? Supongo que no lo sabes. ¿Por qué no arrays y así controlas lo que muestras y como lo muestras?
__________________
1234web.net
El hosting para tu web
ElSuper.com Desarrollo, diseño, ingeniería, administración
  #5 (permalink)  
Antiguo 19/05/2006, 07:09
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Hola josemv

Efectivamente, no se sabe si habrá el mismo número de registros devueltos. Probablemente sí porque sólo se pedirán 3 por tabla (limit 3) pero es posible que alguna tenga menos.

Antes de plantear la pregunta en los foros pensé en un array, pero preferí preguntar si había alguna forma más directa y lo que me sugirió Notwen me vino de perlas

Para el asunto de que tengan distinto número de registros devueltos lo solucioné preguntando antes del while cuál era más grande y pasar el bucle por ese.

Código PHP:
        $numsql = mysql_num_rows($sql);
        $numsq2 = mysql_num_rows($sql2);
        if($numsql + $numsq2){
        ?>
          <ul class="contmarquesina1">
            <?php
            
while($res mysql_fetch_assoc($numsql >= $numsq2 $sql $sql2)){
            
$res2 mysql_fetch_assoc($numsql >= $numsq2 $sql2 $sql);

...
etc.
y me funciona muy bien

Gracias por tu sugerencia josemv, un saludo
  #6 (permalink)  
Antiguo 19/05/2006, 07:48
 
Fecha de Ingreso: agosto-2003
Mensajes: 258
Antigüedad: 14 años, 4 meses
Puntos: 3
A mandar :)
__________________
1234web.net
El hosting para tu web
ElSuper.com Desarrollo, diseño, ingeniería, administració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 16:39.