Foros del Web » Programando para Internet » PHP »

Consulta sobre while ...

Estas en el tema de Consulta sobre while ... en el foro de PHP en Foros del Web. Hola, estoy armando una barra de menues dinamica que levante la informacion de un campo dentro de una tabla en una db. El problema que ...
  #1 (permalink)  
Antiguo 25/09/2008, 11:47
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 16 años, 5 meses
Puntos: 0
Consulta sobre while ...

Hola, estoy armando una barra de menues dinamica que levante la informacion de un campo dentro de una tabla en una db. El problema que encuentro es que me repite los valores iguales hay alguna forma de corregir esto ??
les dejo el codigo.
Código PHP:
<?
include('config.php');
echo 
"<table align=right>\n";
$data=mysql_query("SELECT categoria FROM producto LIMIT 6");
while(
$row=mysql_fetch_array($data))
{ echo 
"<td class=\"navbar_off\" onmouseover=\"this.className = 'navbar_on'\" onmouseout=\"this.className = 'navbar_off'\" onclick=\"window.location = 'categorias.php?cat=$row[0]'\" align=center><li>$row[0]</li></td></tr>"; }
echo 
'</table>';
mysql_close();
?>
Es decir si inserto dos productos --> en cuya categoria pongo "CONSOLAS" en el menu me aparece consolas dos veces, en la actualidad tengo tres productos, dos en categoria consolas la barra me aparece:
  • CONSOLAS
  • PS2
  • CONSOLAS
Cuando lo que yo requiero es que aparezca un solo "consolas" con los dos productos dentro. Dejo unas screens asi se entiende mejor.





Última edición por geminiz; 25/09/2008 a las 11:52
  #2 (permalink)  
Antiguo 25/09/2008, 12:53
Avatar de John_Flyheight  
Fecha de Ingreso: marzo-2008
Ubicación: Managua, Nicaragua
Mensajes: 14
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: Consulta sobre while ...

este valor se repite porque al realizar la seleccion sobre al campo categoria se retornan todos los valores tal como aparecen el la tabla. Es decir si tuvieses mas veces el mismo valor o varias veces distintos valores todos serian retornados.

imagino que quieres que aparescan solamente las categorias donde existen mas productos. te dare una idea para mejorar esto.

la consulta debera ser: select categoria, count(categoria) as numero_productos from producto group by categoria order by numero_productos desc limit <número de categorias que desees>.
  #3 (permalink)  
Antiguo 25/09/2008, 13:09
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 23 años
Puntos: 655
Respuesta: Consulta sobre while ...

Trasladado de BD a PHP. Favor no poner código de programación en BD.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 25/09/2008, 13:16
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años, 6 meses
Puntos: 6
Respuesta: Consulta sobre while ...

Usa el DISTINCT para obtener solo los valores dferentes dentro de tu consulta:

http://sql.1keydata.com/es/sql-distinct.php

Saludos!!!
__________________
"Eres grande por que caminas entre gigantes"
  #5 (permalink)  
Antiguo 25/09/2008, 13:25
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 17 años, 5 meses
Puntos: 49
Respuesta: Consulta sobre while ...

Que tal geminiz, basta con aplicar a tu consulta la instrucción SQL DISTINCT

Código PHP:
<?php
include('config.php'); 
echo 
"<table align=right>\n"
$data mysql_query("SELECT DISTINCT categoria FROM producto LIMIT 6") or die("Error en query:".mysql_error() ); 
while(
$row=mysql_fetch_array($data)) 
{ echo 
"<td class=\"navbar_off\" onmouseover=\"this.className = 'navbar_on'\" onmouseout=\"this.className = 'navbar_off'\" onclick=\"window.location = 'categorias.php?cat=$row[0]'\" align=center><li>$row[0]</li></td></tr>"; } 
echo 
'</table>'
mysql_close(); 
?>

Saludos.
  #6 (permalink)  
Antiguo 25/09/2008, 13:52
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 16 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Consulta sobre while ...

Cita:
Iniciado por Carlojas Ver Mensaje
Que tal geminiz, basta con aplicar a tu consulta la instrucción SQL DISTINCT

Código PHP:
<?php
include('config.php'); 
echo 
"<table align=right>\n"
$data mysql_query("SELECT DISTINCT categoria FROM producto LIMIT 6") or die("Error en query:".mysql_error() ); 
while(
$row=mysql_fetch_array($data)) 
{ echo 
"<td class=\"navbar_off\" onmouseover=\"this.className = 'navbar_on'\" onmouseout=\"this.className = 'navbar_off'\" onclick=\"window.location = 'categorias.php?cat=$row[0]'\" align=center><li>$row[0]</li></td></tr>"; } 
echo 
'</table>'
mysql_close(); 
?>

Saludos.
Impecable ..!!! no conocia el atributo DISTINCT, sabia que estaba cerca pero no que tan cerca ....! yo estaba pensando en algun if o alguna propiedad "no repeat" .. pero funciona al pelo.
Muchas gracias. !
Que se hace ahora ¿ ? se cierra el post o que ?
Saludos.
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 14:08.