Foros del Web » Programando para Internet » PHP »

mecanismo para comprobar si hay resultados se muestren y si no no

Estas en el tema de mecanismo para comprobar si hay resultados se muestren y si no no en el foro de PHP en Foros del Web. hola forer@s aqui dando lata como siempre veran tengo una situación media rara, tengo las siguientes consultas, que como resultado me dan un arbol, algo ...
  #1 (permalink)  
Antiguo 01/11/2012, 12:56
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
mecanismo para comprobar si hay resultados se muestren y si no no

hola forer@s aqui dando lata como siempre

veran tengo una situación media rara, tengo las siguientes consultas, que como resultado me dan un arbol, algo asi:

carpeta1:
---------->archivo
---------->subcarpeta
----------------------->archivo
---------->subcarpeta
carpeta2:
---------->archivo
---------->subcarpeta
----------------------->archivo
---------->subcarpeta
----------------------->archivo

Código PHP:
Ver original
  1. <ul>
  2. <?php
  3. $rs1 = mysql_query("select * from carpetas order by id_carpeta ASC") or die (mysql_error());
  4. while($row1 = mysql_fetch_assoc($rs1, MYSQL_ASSOC)){
  5.          $id_carpeta = $row1['id_carpeta'];
  6.          echo "<li>".$row1['nombre_carpeta']."</li>";
  7.          //hago consulta consulta para buscar los archivos en raiz
  8.          $rs2 = mysql_query("select * from archivos where id_carpeta='$id_carpeta' and id_subcarpeta='0'"); //si es 0 significa que esta en raiz
  9.          while($row2 = mysql_fetch_assoc($rs2, MYSQL_ASSOC)){
  10.                    echo "<li>".$row2['nombre_archivo']."</li>";
  11.          }
  12.          echo "<ul>";
  13.             //hago consulta para listar las subcarpetas
  14.             $rs3 = mysql_query("select * from archivos_raiz where id_carpeta='$id_carpeta'");
  15.             while($row3 = mysql_fetch_assoc($rs3, MYSQL_ASSOC)){
  16.                    $id_sub_carpeta = $row1['id_sub_carpeta'];        
  17.                    echo "<li>".$row3['nombre_subcarpeta']."</li>";
  18.                    //hago consulta para listar archivos dentro de las subcarpetas
  19.                    echo "<ul>";
  20.                       $rs4 = mysql_query("select * from archivos where id_carpeta='$id_carpeta' and id_subcarpeta='$id_sub_carpeta'");
  21.                       while($row4 = mysql_fetch_assoc($rs4, MYSQL_ASSOC)){
  22.                               echo "<li>".$row4['nombre_archivo']."</li>";
  23.                    }
  24.                    echo "</ul>";
  25.             }
  26.          echo "</ul>";        
  27. }

Como podrán ver hago consultas dentro de las consultas y funciona bien, peeeerooooo

si por ejemplo, no hay archivo en alguna carpeta o subcarpeta me sigue muestrando:

carpeta1:
---------->subcarpeta
---------->subcarpeta

carpeta2:
---------->subcarpeta
---------->subcarpeta
----------------------->archivo

y me gustaría que no me mostrara nada si no tiene archivo:

carpeta2:
---------->subcarpeta
----------------------->archivo

Entonces me imagino que para lograr esto necesitaria hacer toda la misma consulta (incluyendo las consultas dentro de las consultas) al principio de todo y poner banderas de si hay o no hay archivos

para que antes de que empiece la consulta "principal" poner if(banderas on){ se muestre la consulta si no que no se muestre, pero esta parte no la tengo muy clara como la podria hacer sin tener que repetir todaaa consulta y que ademas no creo que sea lo mas recomendable para el trafico a la base y la memoria y todo eso

o no se, ustedes que opinan??

gracias

Última edición por catpaw; 01/11/2012 a las 13:02
  #2 (permalink)  
Antiguo 01/11/2012, 13:36
Avatar de scorpion3d  
Fecha de Ingreso: mayo-2011
Mensajes: 92
Antigüedad: 12 años, 11 meses
Puntos: 19
Respuesta: mecanismo para comprobar si hay resultados se muestren y si no no

LLamemos a los niveles
Tabla1
Tabla2
Tabla3

El problema es que no tienes forma de saber si hay o no archivos si no entras a la tabla3 con esa información, por lo que debes hacer una consulta a la tabla3 para ver si tienes registros que dependan de la tabla2.

Para evitar hacer consultas lo que se me ocurre es agregar un campo en tu tabla2 que se actualize con un numero cada vez que agregues registros que dependan de ella, asi si este campo no tiene nada, simplemente no la muestras y listo.

pero es solo un pensamiento en voz alta, jeje

Saludos!
__________________
www.elias.com.sv
  #3 (permalink)  
Antiguo 01/11/2012, 14:35
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: mecanismo para comprobar si hay resultados se muestren y si no no

hola scorpion3d, has entendido muy bien mi situacion

Cita:
asi si este campo no tiene nada, simplemente no la muestras y listo.
y precisamente llegar a este detalle es lo que necesito y es lo que no se como hacer :-/

Gracias espero mas pensamientos en voz alta
  #4 (permalink)  
Antiguo 01/11/2012, 16:27
Avatar de scorpion3d  
Fecha de Ingreso: mayo-2011
Mensajes: 92
Antigüedad: 12 años, 11 meses
Puntos: 19
Respuesta: mecanismo para comprobar si hay resultados se muestren y si no no

La primera opción la imagino así:

Código PHP:
<?php
$rs1 
mysql_query("select * from carpetas order by id_carpeta ASC") or die (mysql_error());
while(
$row1 mysql_fetch_assoc($rs1MYSQL_ASSOC)){
         
$id_carpeta $row1['id_carpeta'];
         echo 
"<li>".$row1['nombre_carpeta']."</li>";
         
//hago consulta consulta para buscar los archivos en raiz
         
$rs2 mysql_query("select * from archivos where id_carpeta='$id_carpeta' and id_subcarpeta='0'"); //si es 0 significa que esta en raiz
         
while($row2 mysql_fetch_assoc($rs2MYSQL_ASSOC)){
                   echo 
"<li>".$row2['nombre_archivo']."</li>";
         }
         echo 
"<ul>";
            
//hago consulta para listar las subcarpetas
            
$rs3 mysql_query("select * from archivos_raiz where id_carpeta='$id_carpeta'");
            while(
$row3 mysql_fetch_assoc($rs3MYSQL_ASSOC)){
                   
$id_sub_carpeta $row1['id_sub_carpeta'];
                   
                   
//buscamos aver si tiene algo XD
                   
$rsBuscar mysql_query("select * from archivos where id_carpeta='$id_carpeta' and id_subcarpeta='$id_sub_carpeta'");
                   
$total_rsBuscar mysql_num_rows($rsBuscar);
                   
//si existe continuamos
                   
if($total_rsBuscar>0){
                           
                   echo 
"<li>".$row3['nombre_subcarpeta']."</li>";
                   
//hago consulta para listar archivos dentro de las subcarpetas
                   
echo "<ul>";
                      
$rs4 mysql_query("select * from archivos where id_carpeta='$id_carpeta' and id_subcarpeta='$id_sub_carpeta'");
                      while(
$row4 mysql_fetch_assoc($rs4MYSQL_ASSOC)){
                              echo 
"<li>".$row4['nombre_archivo']."</li>";
                   }
                   echo 
"</ul>";
                   
                   }
//fin del if
            
}
         echo 
"</ul>";        
}
?>
__________________
www.elias.com.sv

Etiquetas: mysql, resultados
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 12:03.