Foros del Web » Programando para Internet » PHP »

Ayuda en consulta

Estas en el tema de Ayuda en consulta en el foro de PHP en Foros del Web. He hecho la siguiente consulta: $consaux2 = mysql_query(" SELECT a.id_descarga,b.id_categoria,b.descripcion,b.archi vo,c.categoria,c.descripcion FROM ot_us a,ot b,ot_categorias c WHERE a.id_usuario = $id_usuario AND b.id = a.id_descarga AND ...
  #1 (permalink)  
Antiguo 20/11/2007, 12:56
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 20 años, 5 meses
Puntos: 1
Ayuda en consulta

He hecho la siguiente consulta:

$consaux2 = mysql_query("
SELECT a.id_descarga,b.id_categoria,b.descripcion,b.archi vo,c.categoria,c.descripcion
FROM ot_us a,ot b,ot_categorias c
WHERE a.id_usuario = $id_usuario
AND b.id = a.id_descarga
AND c.id = b.id_categoria") or die(mysql_error());
while($rowaux2 = mysql_fetch_row($consaux2)){
$id_descarga = $rowaux2[0];
$id_categoria = $rowaux2[1];
$descarchivo = $rowaux2[2];
$archivo = $rowaux2[3];
$categoria = $rowaux2[4];
$desccategoria = $rowaux2[5];

//mostramos los datos
<div style="padding-left:30px;">
<b>+ <? echo $categoria;?></b>
<br />
<a href="ot/<? echo $archivo;?>" class="descargas02"><? echo $archivo;?></a> - <? echo $descarchivo;?><br /><br />
</div>
</div>
<?
}
}

Ahora mismo muestra los datos , por ejemplo, de la siguiente manera:

+ Aplicaciones
wrar371es.zip - Winrar, uno de los mejores compresores de ficheros.

+ Aplicaciones
wrar372es.zip - Winrar, uno de los mejores compresores de ficheros2.

Pero me gustaria que lo mostrase:

+ Aplicaciones
wrar371es.zip - Winrar, uno de los mejores compresores de ficheros.
wrar372es.zip - Winrar, uno de los mejores compresores de ficheros2.

Es decir, no mostrando repetida la categoria. ¿Como se podria hacer?

Me hariais un gran favor :(
  #2 (permalink)  
Antiguo 20/11/2007, 13:07
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda en consulta

creo que eso que quieres no lo puedes hacer por sql deberias hacerlo por php imprimiendo la categoria solo si es diferente a la anterior ejemplo
Código PHP:
if($xcat==$categoria) {?><b>+ <? echo $categoria;?></b><?}?>
$xcat=$categoria;
yo pondia esto en lugar de <b>+ <? echo $categoria;?></b>
  #3 (permalink)  
Antiguo 20/11/2007, 13:09
Avatar de marcopoloaz06  
Fecha de Ingreso: julio-2007
Ubicación: México
Mensajes: 457
Antigüedad: 16 años, 9 meses
Puntos: 11
Re: Ayuda en consulta

Podrias imprimir la Categoria entes de el for y quitarla de el for y asi ya no se muestra
esa es una Opción
saludoz
__________________
Aerolíneas Alicia :D
  #4 (permalink)  
Antiguo 20/11/2007, 13:09
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda en consulta

perdon me he equivocado en vez de == es !=
Código PHP:
if($xcat!=$categoria) {?><b>+ <? echo $categoria;?></b><?}?>
$xcat=$categoria;
  #5 (permalink)  
Antiguo 20/11/2007, 13:11
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda en consulta

Cita:
Iniciado por marcopoloaz06 Ver Mensaje
Podrias imprimir la Categoria entes de el for y quitarla de el for y asi ya no se muestra
esa es una Opción
saludoz
entonces si hay más de una categoria no las distinguirá.
  #6 (permalink)  
Antiguo 20/11/2007, 13:13
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda en consulta

la opción relamente buena es tener un maestro de categorias y un detalle de ficheros en este caso. pera ya tendrias dos tablas que gestionar. aunque considero que es lo más eficiente cuando empieces a tener muchos registros.
  #7 (permalink)  
Antiguo 20/11/2007, 13:23
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: Ayuda en consulta

Y como obtengo el anterior?

Lo he hecho de la siguiente manera y me da fallo:

Código PHP:
$i=0;
            $consaux2 = mysql_query("
            SELECT a.id_descarga,b.id_categoria,b.descripcion,b.archivo,c.categoria,c.descripcion 
            FROM ot_us a,ot b,ot_categorias c 
            WHERE a.id_usuario = $id_usuario
            AND b.id = a.id_descarga
            AND c.id = b.id_categoria") or die(mysql_error());
            while($rowaux2 = mysql_fetch_row($consaux2)){
                $id_descarga = $rowaux2[0];
                $id_categoria = $rowaux2[1];
                $id_categoria_ant[$i] = $rowaux2[1];
                $descarchivo = $rowaux2[2];
                $archivo = $rowaux2[3];
                $categoria = $rowaux2[4];
                $desccategoria = $rowaux2[5];
                
        ?>
        <div style="padding-left:30px;">
        <? if($i==0) {?><b>+ <? echo "$categoria<br>";?></b><? }?>
        <? else {
            
$cat_anterior $id_categoria_ant[$i];
            if(
$cat_anterior != $id_categoria) { ?>
          <b>+ <? echo "$categoria<br>";?></b><? }?>
        <a href="ot/<? echo $archivo;?>" class="descargas02"><? echo $archivo;?></a> - <? echo $descarchivo;?><br /><br />
        </div>
        </div>
        <?
        $i
++;
        }
  #8 (permalink)  
Antiguo 20/11/2007, 13:26
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Re: Ayuda en consulta

Aunque... aún teniendo una tabla maestra de categorías y una de detalles, para mostrar los datos la consulta a ejecutar sería con un join para mostrar el nombre de la categoría en un solo objeto y luego el corte de control en el bucle.
De todas maneras, debería optar por implementar el corte de control por nombre de categoría, y obviamente, ordenar por nombre de categoría al traer los datos.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #9 (permalink)  
Antiguo 20/11/2007, 13:31
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda en consulta

lo del corte de control no se a que se refiere, pero fijate que el anterior para el primero da igual lo importante es partir del segundo para el segundo
Código PHP:
$xcat=$categoria
ya tiene valor. puedes asignar $xcat=""; antes del bucle para mejorar el codigo.

Última edición por Tilens; 20/11/2007 a las 13:32 Razón: aclaración
  #10 (permalink)  
Antiguo 20/11/2007, 13:36
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda en consulta

asi lo haria yo:
Código PHP:
            $consaux2 = mysql_query("
            SELECT a.id_descarga,b.id_categoria,b.descripcion,b.archivo,c.categoria,c.descripcion 
            FROM ot_us a,ot b,ot_categorias c 
            WHERE a.id_usuario = $id_usuario
            AND b.id = a.id_descarga
            AND c.id = b.id_categoria") or die(mysql_error());
            while($rowaux2 = mysql_fetch_row($consaux2)){
                $id_descarga = $rowaux2[0];
                $id_categoria = $rowaux2[1];
                $id_categoria_ant[$i] = $rowaux2[1];
                $descarchivo = $rowaux2[2];
                $archivo = $rowaux2[3];
                $categoria = $rowaux2[4];
                $desccategoria = $rowaux2[5];
                
        ?>
        <div style="padding-left:30px;">
        <? if($xcat!=$categoria) {$xcat=$categoria?><b>+ <? echo "$categoria<br>";?></b><? }?>
        <a href="ot/<? echo $archivo;?>" class="descargas02"><? echo $archivo;?></a> - <? echo $descarchivo;?><br /><br />
        </div>
        </div>
  #11 (permalink)  
Antiguo 20/11/2007, 13:38
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Re: Ayuda en consulta

aruizroldan, veamos...
Lamentablemente trabajo mas con asp pero, intentemos.
Una vez que terminas de consultar, asingas $i a 0 empezás a recorrer el resultado con el bucle (No es necesario cargar cada valor en una variable diferente para imprimir).
Antes que nada, verificas que $i=0
De ser así imprime la primer categoría y entonces asigna a $categ_ant el valor de $rowaux2['categoria']
en el else de $i=0 haces la verificación de $categoría = $categ_ant
En caso que sean diferentes, la imprimís y volvés a asignar la categoría corriente a la anterior.
Luego, la impresión de los siguientes datos queda como está.

Espero haber sido clara
Suerte!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #12 (permalink)  
Antiguo 20/11/2007, 13:42
Avatar de Tilens  
Fecha de Ingreso: febrero-2007
Ubicación: España
Mensajes: 41
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Ayuda en consulta

no te lies tanto, fijate en la linea del if y lo verás claro. controlando el indice lo tienes dificil para detectar facilmente la categoria guiate solo por la categoria.
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 01:38.