Foros del Web » Programando para Internet » PHP »

While - restringir repeticion de resultados

Estas en el tema de While - restringir repeticion de resultados en el foro de PHP en Foros del Web. Hola amigos! tengo una pequeña dudita.... Hago una consulta a la BD y luego hago un while para crear un menu desplegable con los resultados ...
  #1 (permalink)  
Antiguo 07/07/2006, 14:41
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 12 años, 1 mes
Puntos: 1
While - restringir repeticion de resultados

Hola amigos!
tengo una pequeña dudita....
Hago una consulta a la BD y luego hago un while para crear un menu desplegable con los resultados de ese while. Pero cuando me muestra todos los resultados no quiero que me muestre mas de una vez cada resultado (que no se repita).

Esta es mi consulta

Código PHP:
<?
$consulta_camp
mysql_query("SELECT * FROM campanias ORDER BY campania ASC");
    echo 
'<select name="camp" class="texto">';
while (
$campmysql_fetch_array($consulta_camp)){
$camexplode ("_"$camp[campania]);
    echo 
'<option value="'.$cam[0].'">'.$cam[0].'</option>';
    }
    echo 
'</select>';
?>
Aqui consulto la columna "campania" de la tabla campanias. En esta aolumna hay datos como por ej:

04_507
04_509
04_508
11_507
15_508
15_509

Con la consulta que yo hago el resultado es un menu desplegable con las siguientes opciones:

04
04
04
11
15
15

Pero lo que yo quiero es que salga un solo "04", un solo "11" y un solo "15".
No se si me explique correctamente.

Desde ya les agradesco mucho su ayuda!!!
Saludos!
  #2 (permalink)  
Antiguo 07/07/2006, 15:02
 
Fecha de Ingreso: julio-2006
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
mas information sobre la estuctura de MySQL , supongo que el problema se puede solucionar a nivel myslq query
  #3 (permalink)  
Antiguo 07/07/2006, 15:11
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
usa la funcion Distinct de sql al hacer la consulta, esta te trae cada elemento diferente q consiga... evita los elementos repetidos q es lo q tu quieres

sql distinct
__________________
.-._.-. [email protected]_.-.
  #4 (permalink)  
Antiguo 07/07/2006, 15:13
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 567
Antigüedad: 13 años, 2 meses
Puntos: 0
parecido

implementa un distinct y un like, distinct para que te saque un solo y no repetido en donde comience por dicho elemento que puede ser el 14 que mencionas.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #5 (permalink)  
Antiguo 07/07/2006, 15:18
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 567
Antigüedad: 13 años, 2 meses
Puntos: 0
nada mas con un distinct

si nada mas un distinct por que tu haces un explode!!!!!!
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #6 (permalink)  
Antiguo 07/07/2006, 15:19
 
Fecha de Ingreso: julio-2006
Mensajes: 45
Antigüedad: 11 años, 5 meses
Puntos: 0
el problema es que DISTINCT se puede aplicar sobre una "columna", pero en esta columna los datos son

04_507
04_509
04_508
11_507
15_508
15_509

aqui todos son diferentes no ?
  #7 (permalink)  
Antiguo 07/07/2006, 18:01
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 567
Antigüedad: 13 años, 2 meses
Puntos: 0
arreglalo con un like

veo que tu pues manejas algo asi como unas ordenes y pues la primera es 14 y la segunda es 14_1 y asi sucesivamente, pues te recomiendo que hagas un substring o mejor dicho que tomes los dos primeros caracteres de tu orden y pues que le hagas un distinct y combinalo con un like, este like va a contener el substring que haz hecho anteriormente
string=substringleft(cod_ordenes,2) //esto es ineventado,busca las funciones para ello
select distinct(cod_ordenes) from ordenes where cod_ordenes like "string"

esa es la idea.

bye.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #8 (permalink)  
Antiguo 09/07/2006, 19:49
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 12 años, 1 mes
Puntos: 1
gente, gracias por responder! y perdon por la demora, recien hoy me pude conectar.

Stickmaster2004: Como hago para hacer esas consultas en php? No entiendo mucho como funcionaria... para hacer ese string, tengo que hacer una consulta antes de la consulta del while?, y como haria para que se mostraran todos los datos que esten almacenados? perdon por mi ignorancia! pero llevo peleando con esto hace varios dias y no puedo arreglarlo

Saludos!
  #9 (permalink)  
Antiguo 09/07/2006, 20:14
 
Fecha de Ingreso: noviembre-2005
Ubicación: Córdoba - Argentina
Mensajes: 155
Antigüedad: 12 años, 1 mes
Puntos: 1
Bueno, lo pude solucionar pero a base de PHP jeje, no conosco much sobre mysql :(.
Lo que hice fue lo siguiente:

Código PHP:
<?
$consulta_camp
mysql_query("SELECT * FROM campanias ORDER BY campania ASC");
    echo 
'<select name="camp" class="texto">';
while (
$campmysql_fetch_array($consulta_camp)){
$camexplode ("_"$camp[campania]);
    if (
$campan != $cam[0]){
    echo 
'<option value="'.$cam[0].'">'.$cam[0].'</option>';
    }
    
$campan$cam[0];
    }
    echo 
'</select>';
?>
Cree un condicional preguntando si la variable $campan era igual que la salida actual para que si fuese igual no me imprima el resultado. Y esta variable $campan la declaro cuando termina el bucle con valor de la salida actual.

Muchas gracias por sus respuestas gente!
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 16:35.