Foros del Web » Programando para Internet » PHP »

Superconsulta problematica

Estas en el tema de Superconsulta problematica en el foro de PHP en Foros del Web. Hola. escribi antes unos mensajes que nadie contesto y me estoy volviendo loco con esta consulta. no se mucho de esto, estoy haciendo mis pinitos ...
  #1 (permalink)  
Antiguo 10/10/2004, 08:37
 
Fecha de Ingreso: febrero-2004
Ubicación: Asturias
Mensajes: 171
Antigüedad: 13 años, 10 meses
Puntos: 0
Superconsulta problematica

Hola. escribi antes unos mensajes que nadie contesto y me estoy volviendo loco con esta consulta. no se mucho de esto, estoy haciendo mis pinitos y necesito una ayudita. A modo de resumen os cuento lo que quiero.

en una tabla tengo varios campos que son categorias jerarquicas, es decir, que en uno hay varios de la categoria inferior y así. Lo que quiero es que me salgan todos listados a modo de esquema.

La consulta que tengo es

Código PHP:
<?
require_once('../Connections/Astur.php');
if (isset(
$_GET['fil'])) {
  
$colname_Recordset0 = (get_magic_quotes_gpc()) ? $_GET['fil'] : addslashes($_GET['fil']);
}
mysql_select_db($database_Astur$Astur);
$level0 sprintf("SELECT Filum, SubFilum FROM astur WHERE Filum = '%s'"$colname_Recordset0);
$Recordlevel0 mysql_query($level0$Astur) or die(mysql_error());
echo 
$_GET['fil']; echo "<br>";
while(
$row mysql_fetch_array($Recordlevel0)){
     echo 
"Subf  ".$row['SubFilum'];
     echo 
"<br>";
     
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $row['SubFilum'] : addslashes($row['SubFilum']);
     
$level1 sprintf("SELECT SubFilum, Clase FROM astur WHERE SubFilum = '%s'"$colname_Recordset1);
     
$Recordlevel1 mysql_query($level1$Astur) or die(mysql_error());
     while(
$row mysql_fetch_array($Recordlevel1)){
         echo 
"Clase  ".$row['Clase'];
         echo 
"<br>";     
         
$colname_Recordset2 = (get_magic_quotes_gpc()) ? $row['Clase'] : addslashes($row['Clase']);
         
$level2 sprintf("SELECT Clase, SubClase FROM astur WHERE Clase = '%s'"$colname_Recordset2);
         
$Recordlevel2 mysql_query($level2$Astur) or die(mysql_error());
         while(
$row mysql_fetch_array($Recordlevel2)){
             echo 
"Subclase  ".$row['SubClase'];
             echo 
"<br>";     
             
$colname_Recordset3 = (get_magic_quotes_gpc()) ? $row['SubClase'] : addslashes($row['SubClase']);
             
$level3 sprintf("SELECT SubClase, SuperOrden FROM astur WHERE SubClase = '%s'"$colname_Recordset3);
             
$Recordlevel3 mysql_query($level3$Astur) or die(mysql_error());
             while(
$row mysql_fetch_array($Recordlevel3)){
                 echo 
"Superorden  ".$row['SuperOrden'];
                 echo 
"<br>";    
                 
$colname_Recordset4 = (get_magic_quotes_gpc()) ? $row['SuperOrden'] : addslashes($row['SuperOrden']);
                 
$level4 sprintf("SELECT SuperOrden, Orden FROM astur WHERE SuperOrden = '%s'"$colname_Recordset4);
                 
$Recordlevel4 mysql_query($level4$Astur) or die(mysql_error());
                 while(
$row mysql_fetch_array($Recordlevel4)){
                     echo 
"Orden  ".$row['Orden'];
                     echo 
"<br>";    
                     
$colname_Recordset5 = (get_magic_quotes_gpc()) ? $row['Orden'] : addslashes($row['Orden']);
                     
$level5 sprintf("SELECT Orden, SubOrden FROM astur WHERE Orden = '%s'"$colname_Recordset5);
                     
$Recordlevel5 mysql_query($level5$Astur) or die(mysql_error());
                     while(
$row mysql_fetch_array($Recordlevel5)){
                         echo 
"Suborden  ".$row['SubOrden'];
                         echo 
"<br>";    
                         
$colname_Recordset6 = (get_magic_quotes_gpc()) ? $row['SubOrden'] : addslashes($row['SubOrden']);
                          
$level6 sprintf("SELECT SubOrden, InfraOrden FROM astur WHERE SubOrden = '%s'"$colname_Recordset6);
                         
$Recordlevel6 mysql_query($level6$Astur) or die(mysql_error());
                         while(
$row mysql_fetch_array($Recordlevel6)){
                             echo 
"Infraorden  ".$row['InfraOrden'];
                             echo 
"<br>";    
                         }
                         
mysql_free_result($Recordlevel6);     
                     }
                     
mysql_free_result($Recordlevel5);             
                 }
                 
mysql_free_result($Recordlevel4);             
             }
             
mysql_free_result($Recordlevel3);
            }        
         
mysql_free_result($Recordlevel2);
    }
    
mysql_free_result($Recordlevel1);
}
mysql_free_result($Recordlevel0);
?>
pero lo que sale es un listado de todos los registros y en el registro que pilla en blanco no sigue examinando.

que hago?
  #2 (permalink)  
Antiguo 12/10/2004, 06:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Sólo te comento una cosa .. Todo ese montón de consultas anidadas que estás haciendo partiendo de consultas SQL simples (a una tabla) podrías y deberías hacerlo con una consulta SQL tal vez más compleja usando JOIN y afines o bien usando otro modelo de datos para almacenar tu estructura jerárquica.

A todo esto .. si pones sólo el código y no muestras la estructura de tu tabla(s) (campos y relacion que tengan si corresponde) poco se puede ver acerca de tu problema. Ese tipo de problema debes resolverlo primero a nivel de SQL lo más posible y luego usar PHP para ejecutar/obtener esa consulta SQL que vas a diseñar.

Debes tener claro que si bien "programas" en PHP, también estás usando "SQL" (Lenguaje estructurado de cosultas) que debes igualmente cononcer además de "diseño de base de datos" para estruturar tus DB.

Un saludo,
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 13:22.