Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

phpmyadmin hace lo que quiere?

Estas en el tema de phpmyadmin hace lo que quiere? en el foro de Mysql en Foros del Web. Bueno lo que me pasa es lo siguiente; al querer Insertar registros nuevos a traves de phpmyadmin me sale las opciones siguientes: El tema es: ...
  #1 (permalink)  
Antiguo 21/03/2011, 03:56
Avatar de Mysticaliptica  
Fecha de Ingreso: abril-2007
Ubicación: Guipuzcoa
Mensajes: 35
Antigüedad: 17 años
Puntos: 0
phpmyadmin hace lo que quiere?

Bueno lo que me pasa es lo siguiente; al querer Insertar registros nuevos a traves de phpmyadmin me sale las opciones siguientes:



El tema es: porque narices no me sale la lista (drop down menu) en el campo "cod_bdg" siendo éste una referencia a otra tabla, cuando en "cod_art" si sale el la lista?

Y esto no solo me pasa en esta tabla... me pasa en varias de ellas, os dejo el codigo sql que phpmyadmin genera al hacer "show create table rel_blq_bdg":

Código:
CREATE TABLE `rel_blq_bdg` (
 `cod_blq` int(10) NOT NULL,
 `cod_bdg` int(10) NOT NULL,
 KEY `Bloques` (`cod_blq`),
 KEY `Bodega` (`cod_bdg`),
 CONSTRAINT `Bloque` FOREIGN KEY (`cod_blq`) REFERENCES `bloques` (`cod_blq`) ON DELETE CASCADE ON UPDATE CASCADE,
 CONSTRAINT `rel_blq_bdg_ibfk_1` FOREIGN KEY (`cod_bdg`) REFERENCES `bodegas` (`cod_bdg`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Le veis algo raro?
Es posible que la unica estúpida razón por la que no sale la lista sea porque el nombre de la CONSTRAINT en "cod_blq" sea "Bloque" y no "rel_blq_bdg_ibfk_1" como en "cod_bdg"?

Mas datos:
- Todas las tablas son InnoDB
- Los tipos de los campos, tanto como los de esta tabla como los de las relacionadas son iguales (en este caso: int(10))
- No tengo problema en agregar registros siempre y cuando existan en las tablas relacionadas, ya sea en bruto con codigo SQL o desde phpmyadmin

El unico problema es ese, que yo kiero saber porque no sale la dichosa lista, aunque pueda trabajar tranquilamente con esta tonteria, me fastidia no saber el porque ni como arreglarlo.

Gracias de antemano
  #2 (permalink)  
Antiguo 21/03/2011, 11:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: phpmyadmin hace lo que quiere?

Cita:
El tema es: porque narices no me sale la lista (drop down menu) en el campo "cod_bdg" siendo éste una referencia a otra tabla, cuando en "cod_art" si sale el la lista?
Que un campo referencie a otra tabla no significa que el motor de bases de datos automáticamente te provea acceso interactivo a esos datos. Significa que tu no puedes poner un valor que no exista en esa tabla, pero esa validación opera cuando el dato se ingresa.
phpMyAdmin, por su lado, no ha preparado la interfaz de carga de datos para leer esas referenciaciones, sino que cuando haces la inserción es MySQL quien comprueba que el dato cumpla la restricción.

El tipo de función que tu quieres es un problema de las interfaces gráficas. Si los desarrolladores no incluyeron esa capacidad en la misma, simplemente no la tiene.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/03/2011, 00:36
Avatar de Mysticaliptica  
Fecha de Ingreso: abril-2007
Ubicación: Guipuzcoa
Mensajes: 35
Antigüedad: 17 años
Puntos: 0
Respuesta: phpmyadmin hace lo que quiere?

Cita:
Que un campo referencie a otra tabla no significa que el motor de bases de datos automáticamente te provea acceso interactivo a esos datos. Significa que tu no puedes poner un valor que no exista en esa tabla, pero esa validación opera cuando el dato se ingresa.
phpMyAdmin, por su lado, no ha preparado la interfaz de carga de datos para leer esas referenciaciones, sino que cuando haces la inserción es MySQL quien comprueba que el dato cumpla la restricción.

El tipo de función que tu quieres es un problema de las interfaces gráficas. Si los desarrolladores no incluyeron esa capacidad en la misma, simplemente no la tiene.
A ver, disculpa mi ignorancia sobre el tema, quieres decir que la lista no sale por ser un problema de las interfaces gráficas? Que quiere decir eso exactamente? Un bug? Alguna operación que no interpreta bien?
Y a pesar de eso... no se puede hacer nada?
Reitero que es una tonteria... lo sé... porque como bien dijiste es MySQL quien comprueba los datos, pero es que, si bien no quiero parecer pesado, no veo la razón por la que la interfaz de phpmyadmin no procese la SQL (o lo que sea) de la misma manera en "cod_art" que en "cod_bdg", ambos campos son idénticos en la forma que se crearon... por tanto deberia salir la lista en el apartado "Valor" en ambos, vamos eso digo yo, pero ya veo que no es así.
  #4 (permalink)  
Antiguo 22/03/2011, 06:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: phpmyadmin hace lo que quiere?

Cita:
A ver, disculpa mi ignorancia sobre el tema, quieres decir que la lista no sale por ser un problema de las interfaces gráficas? Que quiere decir eso exactamente? Un bug? Alguna operación que no interpreta bien?
No. No es un bug. Es simplemente que en ese combo no van valores de tablas referidas sino que sólo se usan en columnas de tipo ENUM y SET, porque los únicos valores que pueden aparecer son los que están definidos en la tabla misma, y no en sus tablas relacionadas.
Entendamos esto: Esa interfase gráfica (como la mayoría de ellas) no es una aplicación diseñada como Access, ni otras semejantes. Cuando defines una tabla relacionada con otra, no lee la tabla relacionada en ese formulario para ponerte la lista de valores, sino que sólo procesa los valores que tu mismo ingresas para crear un INSERT que luego envía a ejecutar.
Una de las razones por las que no se hace eso es porque resultaría absolutamente impracticable hacerte un combo de valores tomados de la tabla relacionada porque esa otra tabla bien podría tener millones de registros, y no sólo algunos (el que tu le pongas unos pocos a los desarrolladores del phpMyAdmin no les importa, no programan para un usuario sino para todos). Ten en cuenta que este tipo de aplicativos tiene que ser usado para bases de datos creadas de cualquier forma y con cualquier cantidad de datos.
Para graficarte un ejemplo: En una de las bases que trabajo tengo varias tablas que referencian a la misma. Esa referenciada contiene un promedio de 500 registros. ¿Buscarías tu un valor entre 500? Muy probablemente no porque seguro que se podría pasar. Pero en otra relación tengo una tabla que referencia a otra que contiene 1.274.663 registros en este momento... ¿Te imaginas buscar en un combo un valor ente más de un millón? Y eso si es que un combo puede contener tantos....

Precisamente por eso es que no se hace: el phpMyAdmin debe ser genérico, funcionar de forma práctica con cualquier base, y tu estás buscando que funcione como formulario de una aplicación que en realidad deberías crear tú mismo y para tu base, pese a que te parezca irracional.

Eso es lo que hacemos todos. Los valores que ingresamos vía phpMyAdmin sólo los usamos de prueba, no como datos definitivos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 23/03/2011, 00:46
Avatar de Mysticaliptica  
Fecha de Ingreso: abril-2007
Ubicación: Guipuzcoa
Mensajes: 35
Antigüedad: 17 años
Puntos: 0
Respuesta: phpmyadmin hace lo que quiere?

Ahora lo entiendo perfectamente , gracias por responder, y un saludo

Etiquetas: phpmyadmin
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 19:06.