Foros del Web » Programando para Internet » PHP »

Varios forearch a una misma consulta

Estas en el tema de Varios forearch a una misma consulta en el foro de PHP en Foros del Web. Hola a todos, tengo un problemilla. es que quiro mostrar los ultimos post de cada categoria en el index, pero solamente lo logro haciendo varias ...
  #1 (permalink)  
Antiguo 26/07/2012, 09:32
 
Fecha de Ingreso: diciembre-2010
Mensajes: 160
Antigüedad: 13 años, 4 meses
Puntos: 1
Varios forearch a una misma consulta

Hola a todos, tengo un problemilla. es que quiro mostrar los ultimos post de cada categoria en el index, pero solamente lo logro haciendo varias consultas a la BD, pero consume mucho recursos. Quisiera saber si es posible, hacer distintos forearch a una misma consulta.

En este momento tengo esta consulta a la BD:

Código PHP:
//Consulta Posts Recientes
    
if($id == ''){

    
//Consulta de posts normales
    
$request=db_query("
        SELECT m.ID_MEMBER, m.ID_TOPIC, m.body, m.imgport, c.ID_CAT, subject, c.name, t.ID_BOARD, posterName, puntos, m.hiddenOption, posterTime, denuncias
        FROM {$db_prefix}messages as m, {$db_prefix}boards as c, {$db_prefix}topics as t
        WHERE c.ID_BOARD=m.ID_BOARD AND t.ID_TOPIC=m.ID_TOPIC AND t.isSticky = 0 {$cat_condition}


        ORDER BY m.ID_TOPIC DESC
        LIMIT $RegistrosAEmpezar,$limit_posts"
__FILE____LINE__);
    }else{
    
$request=db_query("
        SELECT m.ID_MEMBER, m.ID_TOPIC, m.body, m.imgport, c.ID_CAT, subject, c.name, t.ID_BOARD, posterName, puntos, m.hiddenOption, posterTime, denuncias
        FROM {$db_prefix}messages as m, {$db_prefix}boards as c, {$db_prefix}topics as t
        WHERE c.ID_BOARD=m.ID_BOARD AND t.ID_TOPIC=m.ID_TOPIC AND t.isSticky = 0 {$cat_condition}


        ORDER BY m.ID_TOPIC DESC
        LIMIT $RegistrosAEmpezar,$limit_posts"
__FILE____LINE__);
    }

       while(
$posts mysql_fetch_array($request))
    {


            
$context['normal_posts'][] = array(
            
'ID_MEMBER' => $posts['ID_MEMBER'],
            
'id' => $posts['ID_TOPIC'],
            
'body' => $posts['body'],
            
'imgport' => $posts['imgport'],
            
'title' => $posts['subject'],
            
'category' => $posts['name'],
            
'id_category' => $posts['ID_BOARD'],
            
'user' => $posts['posterName'],
            
'date' => $posts['posterTime'],
            
'puntos' => $posts['puntos'],
            
'denuncias' => $posts['denuncias'],

        );
    }

     
mysql_free_result($request); 
Donde con un forearch, muestro los ultimos post publicados en el sitio

Código PHP:
foreach ($context['normal_posts2'] as $np)
      {

        
$hcode = array(' ',',','?');
        
$bcode = array('-','-','-');
        
$titleurl2 str_replace($hcode$bcode$np['title']);

        echo
'<div id="fragment-'; if($cont2 <= 4) { echo $cont2;  ++$cont2;} echo'" class="ui-tabs-panel '; if($cont2 <= 2) { echo $cont2;  }else{ echo'ui-tabs-hide'; } echo'" >
            <img width="400"  src="'
,$np['imgport'],'" alt="',$np['title'],'" />
             <div class="info" >
                <a href="http://infokgeek.com/posts/'
$np['id'],'/'; echo $titleurl2; echo'.html" >'; echo substr($np['title'], 040); echo'...</a>
                <p>'
;echo
        
substr(bbcode($np['body']), 0110); echo'... </p>
             </div>
        </div>'
;

      } 
Lo que quiero hacer, como dije antes es hacer varios forearch a una misma consulta para mostrar los ultimos post de cada categoria. es esto posible? cualquier ayuda se agradeceria!! Saludos!
  #2 (permalink)  
Antiguo 26/07/2012, 09:47
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Varios forearch a una misma consulta

mmm no veo muchas consultas , solo veo una

Código PHP:
Ver original
  1. SELECT m.ID_MEMBER, m.ID_TOPIC, m.body, m.imgport, c.ID_CAT, subject, c.name, t.ID_BOARD, posterName, puntos, m.hiddenOption, posterTime, denuncias
  2.         FROM {$db_prefix}messages as m, {$db_prefix}boards as c, {$db_prefix}topics as t
  3.         WHERE c.ID_BOARD=m.ID_BOARD AND t.ID_TOPIC=m.ID_TOPIC AND t.isSticky = 0 {$cat_condition}

y no veo que tiene $cat_condition esa consulta así sola se tarda mucho? corriéndola sola en el manejador de base de datos?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #3 (permalink)  
Antiguo 26/07/2012, 10:00
 
Fecha de Ingreso: diciembre-2010
Mensajes: 160
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Varios forearch a una misma consulta

Cita:
Iniciado por mogurbon Ver Mensaje
mmm no veo muchas consultas , solo veo una

Código PHP:
Ver original
  1. SELECT m.ID_MEMBER, m.ID_TOPIC, m.body, m.imgport, c.ID_CAT, subject, c.name, t.ID_BOARD, posterName, puntos, m.hiddenOption, posterTime, denuncias
  2.         FROM {$db_prefix}messages as m, {$db_prefix}boards as c, {$db_prefix}topics as t
  3.         WHERE c.ID_BOARD=m.ID_BOARD AND t.ID_TOPIC=m.ID_TOPIC AND t.isSticky = 0 {$cat_condition}

y no veo que tiene $cat_condition esa consulta así sola se tarda mucho? corriéndola sola en el manejador de base de datos?
antes que nada gracias por contestar, claro ahi hay una sola consulta que es la que muestra los ultimos post.

Lo que yo quiero hacer es mostrar los ultimos 5 post de cada categoria, pero tendria que hacer 20 consultas mas como esa, y quisiera saber, si se puede hacer un forearch, para mostrar los ultimos 5 post de cada categoria desde esa misma consulta. gracias!
  #4 (permalink)  
Antiguo 26/07/2012, 10:26
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Varios forearch a una misma consulta

me late que esto es mas como de tema de sql , un query que saque lo que necesitas , que contiene cat_condition ?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #5 (permalink)  
Antiguo 26/07/2012, 10:34
 
Fecha de Ingreso: diciembre-2010
Mensajes: 160
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Varios forearch a una misma consulta

Cita:
Iniciado por mogurbon Ver Mensaje
me late que esto es mas como de tema de sql , un query que saque lo que necesitas , que contiene cat_condition ?
esta vacio
  #6 (permalink)  
Antiguo 26/07/2012, 12:02
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Varios forearch a una misma consulta

hasta donde veo

esto:
Código PHP:
Ver original
  1. <?
  2.  $request=db_query("
  3.        SELECT m.ID_MEMBER, m.ID_TOPIC, m.body, m.imgport, c.ID_CAT, subject, c.name, t.ID_BOARD, posterName, puntos, m.hiddenOption, posterTime, denuncias
  4.        FROM {$db_prefix}messages as m, {$db_prefix}boards as c, {$db_prefix}topics as t
  5.        WHERE c.ID_BOARD=m.ID_BOARD AND t.ID_TOPIC=m.ID_TOPIC AND t.isSticky = 0 {$cat_condition}
  6.  
  7.  
  8.        ORDER BY m.ID_TOPIC DESC
  9.        LIMIT $RegistrosAEmpezar,$limit_posts", __FILE__, __LINE__);
  10.     }else{
  11.     $request=db_query("
  12.        SELECT m.ID_MEMBER, m.ID_TOPIC, m.body, m.imgport, c.ID_CAT, subject, c.name, t.ID_BOARD, posterName, puntos, m.hiddenOption, posterTime, denuncias
  13.        FROM {$db_prefix}messages as m, {$db_prefix}boards as c, {$db_prefix}topics as t
  14.        WHERE c.ID_BOARD=m.ID_BOARD AND t.ID_TOPIC=m.ID_TOPIC AND t.isSticky = 0 {$cat_condition}
  15.  
  16.  
  17.        ORDER BY m.ID_TOPIC DESC
  18.        LIMIT $RegistrosAEmpezar,$limit_posts", __FILE__, __LINE__);
  19.     }
  20. ?>

haces la misma consulta pero la metes en un if/else , que varia? los prefijos y cat condition , si dices que quieres hacer mas foreachs para sacar por categoria los ultimos 5, entonces necesitas 2 arrays para hacer estos foreachs, uno de las categorias y otro que maneje el conteo de los ultimos 5 el chiste radicara en el query por eso decía que es mas de sql este asunto
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo

Etiquetas: html, mysql, registro
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 08:30.