Foros del Web » Programando para Internet » PHP »

me repite los mismos valores de un array

Estas en el tema de me repite los mismos valores de un array en el foro de PHP en Foros del Web. buenas a todos. tengo un problema. tengo un formulario para subir archivos y asignar niveles. los niveles estan conformados por letras A,B,C,D,E y los muestro ...
  #1 (permalink)  
Antiguo 27/05/2010, 09:43
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Pregunta me repite los mismos valores de un array

buenas a todos. tengo un problema. tengo un formulario para subir archivos y asignar niveles. los niveles estan conformados por letras A,B,C,D,E y los muestro con checkbox. yo asigno los niveles A,B,C,D,E. subo el archivo con los niveles y muestro el reporte con los niveles asignados. despues subo otro archivo y asigno otros niveles como A y B. muestro en el reporte el archivo con el nivel que he asignado y me muestra valores repetitivos, es decir, me muestra los 8 niveles incluyendo los niveles que he agregado.

me muestra asi ?.

Código QUOTE:
Ver original
  1. A,B,C,D,E,F,G,H
  2. A,B,C,D,E,F,G,H,A,B

mi pregunta es como hago para no mostrar valores repetitivos en un array ?.

este es mi codigo.

Código PHP:
Ver original
  1. #consulto los archivos.
  2. $sql_archivos  = "SELECT * FROM archivos";
  3. $rpta_archivos = mysql_query($sql_archivos) or die(mysql_error()); 
  4.  
  5. while($row_archivos = mysql_fetch_array($rpta_archivos)){
  6.  
  7. #consulto los niveles de los archivos relacionandolo con los niveles.
  8. $sql_niveles  = "SELECT n.*, l.* FROM nivel_usuarios n, niveles l
  9. WHERE n.idnivel = l.idnivel AND n.idarchivo = '".$row_archivos['idarchivo']."'";
  10. $rpta_niveles = mysql_query($sql_niveles) or die(mysql_error());
  11.  
  12. while($fila_niveles = mysql_fetch_array($rpta_niveles)){
  13. $nivel[] = $fila_niveles['niveles']; // creamos un array a partir del campo idnivel
  14. }
  15.                
  16. $nivel_archivo = implode(",",$nivel); // La variable $nivel_archivo contiene ahora los campos separados por comas
  17. echo $niveles = explode(",",$nivel);
  18.  
  19. }
  #2 (permalink)  
Antiguo 27/05/2010, 09:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: me repite los mismos valores de un array

puedes usar array_unique()
http://php.net/array_unique
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/05/2010, 10:04
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: me repite los mismos valores de un array

gracias por responder pateketrueke. he utilizado la funcion array_unique() y me sale error.

Código QUOTE:
Ver original
  1. Warning: array_unique() [function.array-unique]: The argument should be an array in D:\AppServ\www\intading\admin\archivos\index.php  on line 125

he modificado mi codigo implementando el array_unique().

Código PHP:
Ver original
  1. #consulto los archivos.
  2. $sql_archivos  = "SELECT * FROM archivos";
  3. $rpta_archivos = mysql_query($sql_archivos) or die(mysql_error());  
  4.  
  5. while($row_archivos = mysql_fetch_array($rpta_archivos)){
  6.  
  7. #consulto los niveles de los archivos relacionandolo con los niveles.
  8. $sql_niveles  = "SELECT n.*, l.* FROM nivel_usuarios n, niveles l
  9. WHERE n.idnivel = l.idnivel AND n.idarchivo = '".$row_archivos['idarchivo']."'";
  10. $rpta_niveles = mysql_query($sql_niveles) or die(mysql_error());
  11.  
  12. while($fila_niveles = mysql_fetch_array($rpta_niveles)){
  13. $nivel[] = $fila_niveles['niveles']; // creamos un array a partir del campo idnivel
  14. }
  15.                
  16. echo $nivel_archivo = implode(",",$nivel); // La variable $nivel_archivo contiene ahora los campos separados por comas
  17. $niveles = explode(",",$nivel);
  18.  
  19. $no_repetir = array_unique($niveles);
  20.  
  21. echo "<br/>";
  22.  
  23. echo $no_repetir;

saludos.
  #4 (permalink)  
Antiguo 27/05/2010, 10:13
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: me repite los mismos valores de un array

Podria darte una idea:

Declaras una array() fuera de todo loop;
$unArray = array();


Y Antes de mostrar los resultados en pantalla, los almacenas en ese array:


$unArray[] = $fila_niveles['niveles'];

Luego le aplicas array_unique()

//ahora $no_repetir contendra tus valores no repetiros
$no_repetir = array_unique($unArray[]);

//ahora si, lo recorres
foreach($no_repetir as $k => $v){
echo $k ." => ". $v;
}


Espero que te sirva.

Saludos...!
  #5 (permalink)  
Antiguo 27/05/2010, 10:24
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: me repite los mismos valores de un array

gracias por responder wiwi74. voy a implementarlo en mi codigo y te cuento.

saludos.
  #6 (permalink)  
Antiguo 27/05/2010, 10:27
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: me repite los mismos valores de un array

Que tal si usas en tu sentencia SQL, GROUP BY
  #7 (permalink)  
Antiguo 27/05/2010, 10:45
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: me repite los mismos valores de un array

hice lo que indicaste wiwi74. pero solo me muestra un valor. lo que habia ingresado 2 registros.

Código quote:
Ver original
  1. A,B,C,D,E,F,G,H
  2. A,B,C,D,E,F,G,H,A,B

me debe mostrar de la siguiente manera.

Código quote:
Ver original
  1. A,B,C,D,E,F,G,H
  2. A,B

este es mi codigo que he modificado.

Código PHP:
Ver original
  1. #consulto los archivos.
  2. $sql_archivos  = "SELECT * FROM archivos";
  3. $rpta_archivos = mysql_query($sql_archivos) or die(mysql_error());  
  4.  
  5. while($row_archivos = mysql_fetch_array($rpta_archivos)){
  6.  
  7. #consulto los niveles de los archivos relacionandolo con los niveles.
  8. $sql_niveles  = "SELECT n.*, l.* FROM nivel_usuarios n, niveles l
  9. WHERE n.idnivel = l.idnivel AND n.idarchivo = '".$row_archivos['idarchivo']."'";
  10. $rpta_niveles = mysql_query($sql_niveles) or die(mysql_error());
  11.  
  12. while($fila_niveles = mysql_fetch_array($rpta_niveles)){
  13. #Declaras una array() fuera de todo loop;
  14. $unArray = array();
  15. #Y Antes de mostrar los resultados en pantalla, los almacenas en ese array:
  16. $unArray[] = $fila_niveles['niveles']; // creamos un array a partir del campo niveles.             
  17. }
  18.  
  19. #Luego le aplicas array_unique()
  20.                
  21. //ahora $no_repetir contendra tus valores no repetiros
  22. $no_repetir = array_unique($unArray);
  23.                
  24. //ahora si, lo recorres
  25. foreach($no_repetir as $k => $v){
  26.     echo $k ." => ". $v;
  27. }

Última edición por esaenz22; 27/05/2010 a las 10:59
  #8 (permalink)  
Antiguo 27/05/2010, 11:14
 
Fecha de Ingreso: septiembre-2009
Ubicación: Managua
Mensajes: 128
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: me repite los mismos valores de un array

Hola esaenz22 estuve viendo el código que te han proporcionado y creo que tenes un pequeño error....

Código PHP:
while($fila_niveles mysql_fetch_array($rpta_niveles)){

// Declaras una array() fuera de todo loop; 
// ********** esto lo estas haciendo dentro del ciclo, 
// tenes que ponerlo fuera ******************

$unArray = array();

//Y Antes de mostrar los resultados en pantalla, los almacenas en ese array:

$unArray[] = $fila_niveles['niveles']; // creamos un // array a partir del campo niveles.             


asi quedaria

Código PHP:
$unArray = array();

while(
$fila_niveles mysql_fetch_array($rpta_niveles)){
$unArray[] = $fila_niveles['niveles'];

Era una observacion y espero te ayude amigo
Salu2


Última edición por equality_211085; 27/05/2010 a las 11:19 Razón: ortografia
  #9 (permalink)  
Antiguo 27/05/2010, 11:17
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: me repite los mismos valores de un array

gracias por la ayuda equality_211085. hice lo que indicaste y me mostro los elementos que no se repiten.

ahora tengo una duda. como hago para separalos en comas. utilize implode y me salio error.

Código PHP:
Ver original
  1. //ahora si, lo recorres
  2. foreach($no_repetir as $k => $v){
  3.     echo implode(",",$v);
  4. }

saludos.

Última edición por esaenz22; 27/05/2010 a las 11:37 Razón: correccion.
  #10 (permalink)  
Antiguo 27/05/2010, 11:26
 
Fecha de Ingreso: septiembre-2009
Ubicación: Managua
Mensajes: 128
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: me repite los mismos valores de un array

cual error te manda, colocalo para ayudarte..........

  #11 (permalink)  
Antiguo 27/05/2010, 11:43
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: me repite los mismos valores de un array

Código PHP:
Ver original
  1. //ahora si, lo recorres
  2. foreach($no_repetir as $k => $v){
  3.     echo implode(",",$v);
  4. }

este es el error que me muestra.

Código QUOTE:
Ver original
  1. Warning: implode() [function.implode]: Bad arguments. in D:\AppServ\www\intading\admin\archivos\index.php  on line 108

saludos.
  #12 (permalink)  
Antiguo 27/05/2010, 12:20
 
Fecha de Ingreso: septiembre-2009
Ubicación: Managua
Mensajes: 128
Antigüedad: 14 años, 7 meses
Puntos: 5
Respuesta: me repite los mismos valores de un array

Hola amigo, vea ahorita voy a almorzar xD... si quiere como en 2 horas le puedo ayudar, vea mi perfil y agregueme a su msn para ayudarle mas de cerca

:P
saludos
  #13 (permalink)  
Antiguo 27/05/2010, 17:45
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: me repite los mismos valores de un array

Código PHP:
$unArray = array();

while(
$fila_niveles mysql_fetch_array($rpta_niveles)){
$unArray[] = $fila_niveles['niveles'];

Era una observacion y espero te ayude amigo
Salu2



Por eso le dije:
Declaras una array() FUERA DE TODO LOOP;
$unArray = array();

Se supone que debia sobreentenderlo.

Solo reivindico lo dicho.


Última edición por wiwi74; 27/05/2010 a las 17:53
  #14 (permalink)  
Antiguo 27/05/2010, 18:06
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: me repite los mismos valores de un array

Y encima pregunta que error te tira...!

Prueba este codigo suelto, veras como agregas las comas.


$no_repetir = array("elemento1","elemento2","elemento3","element o4");

foreach($no_repetir as $k => $v){
if(end($no_repetir) != $v){
$uniendo .= $v.", ";
}else{
$uniendo .= $v;
}
}

echo $uniendo;
  #15 (permalink)  
Antiguo 30/05/2010, 17:03
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años
Puntos: 7
Respuesta: me repite los mismos valores de un array

gracias por la aclaracion wiwi74. ya lo habia arreglado. solo que no entendi bien tu idea.

Código quote:
Ver original
  1. Y encima pregunta que error te tira...!

dices como si preguntara algo secundario o que no era de suma importancia. mejor dime k soy un inutil.

saludos.

Última edición por esaenz22; 16/06/2010 a las 21:37

Etiquetas: Ninguno
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 15:38.