Foros del Web » Programando para Internet » PHP »

Se duplican los datos en consulta MySQL

Estas en el tema de Se duplican los datos en consulta MySQL en el foro de PHP en Foros del Web. hola a todos, tengo un problema y no le veo la solucion.... el codigo para que vayan observando Código PHP: $result  =  mysql_query ( "SELECT * FROM seguridad,opciones WHERE co_usuario='$ID'" ...
  #1 (permalink)  
Antiguo 01/03/2007, 14:30
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 3
Se duplican los datos en consulta MySQL

hola a todos, tengo un problema y no le veo la solucion.... el codigo para que vayan observando

Código PHP:

$result 
mysql_query("SELECT * FROM seguridad,opciones WHERE co_usuario='$ID'");
                    if (
mysql_num_rows($result)>0)
                        {
                        while (
$row mysql_fetch_array($result))

                            { 
                                echo 
"<input ";
                                    if (
$row["co_opcion"]==$row["cod_opcion"])
                                    {
                                        echo 
"checked ";
                                    }
                                echo 
"type='checkbox' name='acceso' value='".$row["cod_opcion"]."'> ".$row["des_opcion"]."<br>";
                                }
                        } 
el problema es que al dar los resultados me da los registros duplicados cuando quiero mostrar lo siguiente...

Estado de Cuenta
Cotizacion
Historico de compras
Seguridad (*)

(*)seguridad este no esta activado para este usuario

me imprime esto:

Estado de cuenta
Estado de cuenta
Estado de cuenta
Cotización
Cotización
Cotización
Histórico de compras
Histórico de compras
Histórico de compras

si uso la funcion GROUP BY campo me muestra los resultados pero en los checkbox no me salen cuales son los que estan activados me muestra a todos como desactivados
necesito que me muestre asi

[x] Estado de cuenta
[x] Cotizacion
[x] Historico de compras
[ ] Seguridad

en donde ten go el error?
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #2 (permalink)  
Antiguo 01/03/2007, 14:58
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Exclamación Re: Se duplican los datos en consulta MySQL

Hola cirujano!

Tu error es en el query. Este post debería ir en mysql, pero de todas formas:

Cuando requires registros, donde están involucrados una tabla que llama a otra mediante fk, tu consulta obligatoriamente debe tener la siguiente instrucción junto con las otras que puedas necesitar:

..... where seguridad.cdgo_necesario=opciones.cdgo_necesario....

Lo que está en negrilla es la instrucción que por obligación debes colocar para que no te dupique registros. Fíjate que "cdgo_necesario" se repite, esto es por que es el campo que una tabla es PK y en la otra hace de FK.

Espero me entiendas!

Saludos!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 01/03/2007, 15:12
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 3
Re: Se duplican los datos en consulta MySQL

Carxl mas o menos te entendi pero aqui te dejo la estructura para que veas como es la movida...

tabla clientes_op: contiene cada uno de los usuarios
Código PHP:
CREATE TABLE `clientes_op` (
  `
idint(11NOT NULL auto_increment,
  `
Usernamevarchar(50NOT NULL default '',
  `
passwordvarchar(32NOT NULL default '',
  `
nombrevarchar(60) default NULL,
  `
emailvarchar(60) default NULL,
  `
co_clivarchar(10NOT NULL default '',
  `
rolint(11) default NULL,
  `
cargovarchar(60) default NULL,
  `
activochar(1) default NULL,
  `
accesovarchar(255) default NULL,
  
PRIMARY KEY  (`id`),
  
UNIQUE KEY `Username` (`Username`)
TYPE=MyISAM AUTO_INCREMENT=
tabla opciones: te dice los lugares a donde puede ir el usuario dependiendo de lo que diga la tabla seguridad

Código PHP:
CREATE TABLE `opciones` (
  `
cod_opcionint(11NOT NULL auto_increment,
  `
des_opcionvarchar(50NOT NULL default '',
  `
pg_opcionvarchar(100NOT NULL default '',
  `
targetvarchar(20) default NULL,
  `
ordenint(11NOT NULL default '0',
  
PRIMARY KEY  (`cod_opcion`)
TYPE=MyISAM AUTO_INCREMENT=
tabla seguridad: aqui es donde dice a que lugares de la web el usuario puede entrar...
Código PHP:
CREATE TABLE `seguridad` (
  `
co_opcionvarchar(11NOT NULL default '0',
  `
co_usuariovarchar(11NOT NULL default '0',
  
KEY `co_usuario` (`co_usuario`)
TYPE=MyISAM
ahora aplicando lo que me dijistes me sigue lanzando los checkbox vacios
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #4 (permalink)  
Antiguo 01/03/2007, 15:25
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
De acuerdo Re: Se duplican los datos en consulta MySQL

hola de nuevo cirujano.

En ningun lado de tus tablas veo que llames fk!. Por esta razón si hablamos "conceptualmente", te tocaría realizar otro tipo de consulta que abarque lo que necesitas. Por que sin llaves, la consulta debe ser lo mejor aplicada posible, para que tenga el resultado esperado.

Si estas seguro de que tu DB va así, osea que no tienes dudas de su normalización, coméntame realmente tu consulta, como la necesitas. Si por el contrario ves que no esta aún bien diseñada, pues corrigela y aplica lo que te dije en el post anterior.

Por lo que veo, es normalización.

Saludos y éxitos!!
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 02/03/2007, 07:29
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 3
Re: Se duplican los datos en consulta MySQL

te explico...

clientes_op | seguridad | opciones
id | co_usuario | cod_opcion
co_opcion | des_opcion
pg_opcion

ahora si, mira dependiendo de la ID del cliente se hace la consulta en seguridad y arroja estos datos..

co_usuario | co_opcion
1 | 1
1 | 2
1 | 3
2 | 4
2 | 3
2 | 1

ahora sabiendo que el usuario es 1 sus accesos son 1,2,3, bien, esto debe hacer que los siguientes checkbox sean activados

##1## ##2##
[x] Estado de cuenta
[x] Cotizacion
[x] Historico de compras
[ ] Seguridad

##1## => co_opcion / Seguridad
##2## => des_opcion / Opciones

notaras que el checkbox de seguridad quedaría desactivado... ahora, no entiendo que llamas tu FK?
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #6 (permalink)  
Antiguo 02/03/2007, 08:00
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 3
Re: Se duplican los datos en consulta MySQL

mira tengo esta consulta (creo que es la misma de arriba)

Código PHP:
$ID $_GET['id'];
$result mysql_query("SELECT * FROM seguridad,opciones WHERE co_usuario='$ID'");

if (
mysql_num_rows($result)>0)
{
while (
$row mysql_fetch_array($result))

{  
echo 
"<input ";
if (
$row["co_opcion"]==$row["cod_opcion"])
{
echo 
"checked ";
}
echo 
"type='checkbox' name='acceso' value='".$row["cod_opcion"]."'> ".$row["des_opcion"]."<br>";
}

mira los resultados aqui
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #7 (permalink)  
Antiguo 02/03/2007, 09:26
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: Se duplican los datos en consulta MySQL

No haz probado?:
Código PHP:
$result mysql_query("SELECT * 
FROM seguridad,opciones 
WHERE seguridad.co_opcion=opciones.co_opcion AND co_usuario='$ID'"
); 
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #8 (permalink)  
Antiguo 02/03/2007, 10:05
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 3
Re: Se duplican los datos en consulta MySQL

sip, tambien probe de esa manera... y NADA!!!!!
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #9 (permalink)  
Antiguo 02/03/2007, 10:32
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: Se duplican los datos en consulta MySQL

Ya haz probado la consulta en Mysql, haz tenido problemas al respecto?
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #10 (permalink)  
Antiguo 02/03/2007, 10:39
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 21 años, 5 meses
Puntos: 3
Re: Se duplican los datos en consulta MySQL

mira consegui una forma, no serà la mas viable pero me esta funcionando, se que puede haber una mejor por ahi pero bueno necesito entregar el trabajo jeje :-p

Código PHP:
// cONVIERTO TODO LO QUE CONSIGO DEL USUARIO $ID EN UN ARRAY
        
$result mysql_query("SELECT * FROM seguridad WHERE co_usuario='$ID'");
                
                    if (
mysql_num_rows($result)>0)
                        {
$i=0;
                        while (
$row mysql_fetch_array($result))
                            {
                            
$i $i +1

                           
$gmb[] =   $row["co_opcion"];
                            }
                        }
        
$erc implode($gmb,","); 

// LUEGO CON ESTE SCRIPT HAGO QUE ME VALIDE LOS CHECKBOX

        
$result mysql_query("SELECT * FROM opciones,seguridad WHERE co_usuario='$ID' GROUP BY des_opcion");
                
                    if (
mysql_num_rows($result)>0)
                        {
$i=0;
                        while (
$row mysql_fetch_array($result))
                            {
                            
$i $i +1
                                echo 
"<input ";
                                    if (!(
strpos($erc$row["cod_opcion"]) === False))
                                    {
                                        echo 
"checked ";
                                    }    
                                echo 
"type='checkbox' name='acceso$i' value='".$row[co_opcion]."'> ".$row[des_opcion]."<br />";
                            }
                        } 
YA... ME SIENTO CANSADO CON ESTE CODIGO, ME IRE A COMER ALGO PA DESPEGAR LA MENTE JEJE SALUDOS Y SI CONSIGUEN ALGO MEJOR POR FAVOR POSTEENLO ACA...
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
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 21:32.