Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Repetir varias veces un result con variables de cada ciclo

Estas en el tema de Repetir varias veces un result con variables de cada ciclo en el foro de Mysql en Foros del Web. Hola a todos tengo el siguiente inconveniente el cual quiero dejarlo automatico y no manual como lo teng actualmente tengo este codigo Código PHP: $sql2 ...
  #1 (permalink)  
Antiguo 05/02/2013, 21:54
Avatar de konoyek  
Fecha de Ingreso: julio-2007
Mensajes: 268
Antigüedad: 16 años, 10 meses
Puntos: 0
Repetir varias veces un result con variables de cada ciclo

Hola a todos tengo el siguiente inconveniente el cual quiero dejarlo automatico y no manual como lo teng actualmente

tengo este codigo

Código PHP:
$sql2="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=0 AND cr.secundaria=c.ID ORDER BY cr.principal ASC";
    
$res2=mysql_query($sql2);
    
    while(
$row=mysql_fetch_assoc($res2) ){
       
    
$id=$row['ID'];
    
$nombre=$row['Nombre']; 
para continuar el seguimiento tengo que incluir otro select el cual es

Código PHP:
$sql22="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=$sec AND cr.secundaria=c.ID";
    
$res22=mysql_query($sql22);
    
    while(
$row2=mysql_fetch_assoc($res22) ){
       
    
$id=$row2['ID'];
    
$nombre=$row2['Nombre'];
    
$descri=$row2['descripcion'];
    
$estado=$row2['estado'];
    
$conteo=0;
    
    
$prin=$row2['principal'];
    
$sec=$row2['secundaria']; 
La cuestion es que si quiero seguir deplegando el resultado pero para esto debo de tener otro SELECT pero con los datos de $sec de la primera busqueda


el resultado que tengo es:

categoria 1
- categoria 1.1
-- categoria 1.1.1
- categoria 1.2
categoria 2

La idea es dejarlo en ciclo y no ingresarlo manual
  #2 (permalink)  
Antiguo 05/02/2013, 21:56
Avatar de konoyek  
Fecha de Ingreso: julio-2007
Mensajes: 268
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Repetir varias veces un result con variables de cada ciclo

Cita:
Iniciado por konoyek Ver Mensaje
Hola a todos tengo el siguiente inconveniente el cual quiero dejarlo automatico y no manual como lo teng actualmente

tengo este codigo

Código PHP:
$sql2="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=0 AND cr.secundaria=c.ID ORDER BY cr.principal ASC";
    
$res2=mysql_query($sql2);
    
    while(
$row=mysql_fetch_assoc($res2) ){
       
    
$id=$row['ID'];
    
$nombre=$row['Nombre']; 
para continuar el seguimiento tengo que incluir otro select el cual es

Código PHP:
$sql22="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=$sec AND cr.secundaria=c.ID";
    
$res22=mysql_query($sql22);
    
    while(
$row2=mysql_fetch_assoc($res22) ){
       
    
$id=$row2['ID'];
    
$nombre=$row2['Nombre'];
    
$descri=$row2['descripcion'];
    
$estado=$row2['estado'];
    
$conteo=0;
    
    
$prin=$row2['principal'];
    
$sec=$row2['secundaria']; 
La cuestion es que si quiero seguir deplegando el resultado pero para esto debo de tener otro SELECT pero con los datos de $sec de la primera busqueda


el resultado que tengo es:

categoria 1
- categoria 1.1
-- categoria 1.1.1
- categoria 1.2
categoria 2

La idea es dejarlo en ciclo y no ingresarlo manual


El codigo final para obtener 4 derivaciones es este:


Código PHP:
$sql2="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=0 AND cr.secundaria=c.ID ORDER BY cr.principal ASC";
    $res2=mysql_query($sql2);
    
    while($row=mysql_fetch_assoc($res2) ){
       
    $id=$row['ID'];
    $nombre=$row['Nombre'];
    $descri=$row['descripcion'];
    $estado=$row['estado'];
    $conteo=0;
    
    $prin=$row['principal'];
    $sec=$row['secundaria'];
    
    $i++;
    if (($i%2)==0) {
    $class="even";
    }
    else{
        $class="odd";
    }

    
        echo '<tr class="'.$class.'">
        <td>'.$nombre.'</td>
        <td>'.$descri.'</td>
        <td>'.$conteo.'</td>'; ?>
        <td>
    <form  action="<?php echo $_SERVER['PHP_SELF']; ?>" name="edit" method="post">
    <input name="editar" title="Editar" type="image" src='<? echo $url?>imagenes/edit.png' value="<? echo $num?>" />
    <input type="hidden" name="num" value="<? echo $num;?>" />
    <input type="hidden" name="editar"/>
    </form>
    </td>
    
    </tr> 
 
    <?
    
    $sql22
="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=$sec AND cr.secundaria=c.ID";
    
$res22=mysql_query($sql22);
    
    while(
$row2=mysql_fetch_assoc($res22) ){
       
    
$id=$row2['ID'];
    
$nombre=$row2['Nombre'];
    
$descri=$row2['descripcion'];
    
$estado=$row2['estado'];
    
$conteo=0;
    
    
$prin=$row2['principal'];
    
$sec=$row2['secundaria'];
    
    echo 
'<tr class="'.$class.'">
        <td> - '
.$nombre.'</td>
        <td>'
.$descri.'</td>
        <td>'
.$conteo.'</td>'?>
        <td>
    <form  action="<?php echo $_SERVER['PHP_SELF']; ?>" name="edit" method="post">
    <input name="editar" title="Editar" type="image" src='<? echo $url?>imagenes/edit.png' value="<? echo $num?>" />
    <input type="hidden" name="num" value="<? echo $num;?>" />
    <input type="hidden" name="editar"/>
    </form>
    </td>
    
    </tr> 
    <? 
    
        $sql222
="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=$sec AND cr.secundaria=c.ID";
    
$res222=mysql_query($sql222);
    
    while(
$row22=mysql_fetch_assoc($res222) ){
       
    
$id=$row22['ID'];
    
$nombre=$row22['Nombre'];
    
$descri=$row22['descripcion'];
    
$estado=$row22['estado'];
    
$conteo=0;
    
    
$prin=$row22['principal'];
    
$sec=$row22['secundaria'];
    
    echo 
'<tr class="'.$class.'">
        <td> -- '
.$nombre.'</td>
        <td>'
.$descri.'</td>
        <td>'
.$conteo.'</td>'?>
        <td>
    <form  action="<?php echo $_SERVER['PHP_SELF']; ?>" name="edit" method="post">
    <input name="editar" title="Editar" type="image" src='<? echo $url?>imagenes/edit.png' value="<? echo $num?>" />
    <input type="hidden" name="num" value="<? echo $num;?>" />
    <input type="hidden" name="editar"/>
    </form>
    </td>
    
    </tr> 
    
    <?
    
        $sql2222
="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=$sec AND cr.secundaria=c.ID";
    
$res2222=mysql_query($sql2222);
    
    while(
$row222=mysql_fetch_assoc($res2222) ){
       
    
$id=$row222['ID'];
    
$nombre=$row222['Nombre'];
    
$descri=$row222['descripcion'];
    
$estado=$row222['estado'];
    
$conteo=0;
    
    
$prin=$row222['principal'];
    
$sec=$row222['secundaria'];
    
    echo 
'<tr class="'.$class.'">
        <td> --- '
.$nombre.'</td>
        <td>'
.$descri.'</td>
        <td>'
.$conteo.'</td>'?>
        <td>
    <form  action="<?php echo $_SERVER['PHP_SELF']; ?>" name="edit" method="post">
    <input name="editar" title="Editar" type="image" src='<? echo $url?>imagenes/edit.png' value="<? echo $num?>" />
    <input type="hidden" name="num" value="<? echo $num;?>" />
    <input type="hidden" name="editar"/>
    </form>
    </td>
    
    </tr> 
    <?
    
        $sql22222
="SELECT * FROM categoria c, categoria_relacion cr WHERE cr.principal=$sec AND cr.secundaria=c.ID";
    
$res22222=mysql_query($sql22222);
    
    while(
$row2222=mysql_fetch_assoc($res22222) ){
       
    
$id=$row2222['ID'];
    
$nombre=$row2222['Nombre'];
    
$descri=$row2222['descripcion'];
    
$estado=$row2222['estado'];
    
$conteo=0;
    
    
$prin=$row2222['principal'];
    
$sec=$row2222['secundaria'];
    
    echo 
'<tr class="'.$class.'">
        <td> ---- '
.$nombre.'</td>
        <td>'
.$descri.'</td>
        <td>'
.$conteo.'</td>'?>
        <td>
    <form  action="<?php echo $_SERVER['PHP_SELF']; ?>" name="edit" method="post">
    <input name="editar" title="Editar" type="image" src='<? echo $url?>imagenes/edit.png' value="<? echo $num?>" />
    <input type="hidden" name="num" value="<? echo $num;?>" />
    <input type="hidden" name="editar"/>
    </form>
    </td>
    
    </tr> 
    <?
    
}
    }
    }
    }
    }
    
?>
  #3 (permalink)  
Antiguo 06/02/2013, 01:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Repetir varias veces un result con variables de cada ciclo

konoyek,
para estas cuestiones, tienes dos vías, la de tablas relacionadas, que parece ser la que tú has adoptado, y la de una tabla jerárquica con parent y child (padre, hijo).
1) con la estructura de tres tablas relacionadas que tienes, debes traerte todo mediante LEFT JOIN y manejar los nulos.
SELECT c.cat, s.subcat, ssc.subsubcat FROM categorias c LEFT JOIN subcategorias sc on c.idcat = sc.idsubcat LEFT JOIN subsubcategorias ssc ON sc.idsubcat = ssc.idsubsubcat.
Claro, esta opción te obliga a tener un número máximo niveles que se corresponde con el número de tablas relacionadas
2) para la segunda, la estructura jerárquica, necesitas una única tabla, con un campo parent
El primer hijo, que es el padre de una familia, tiene su identificador y en el campo parent el valor 0, los demás tienen como padre o parent el id de la categoría de que depende. La consulta se hace mediante búsqueda recursiva.
Hay muchos ejemplos, pero aquí tienes uno. Lee despacio hasta el final:
http://stackoverflow.com/questions/1...s-a-user-likes
Una vez vista la estructura, en este foro podremos ayudarte en la parte de la consulta, pero para la ayuda a la hora de mostrar los datos y recorrerlos, tendrás que preguntar en los foros de programación.
Otra cosa son los selectores dinámicos de esos datos, para los cuales tendrás que pedir ayuda en los foros de AYAX y JAVASCRIPT principalmente, aunque también pueden hacerse con programación de parte del servidor exclusivamente, aunque ello te obliga a refrescar.

Etiquetas: php
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 06:34.