Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Configurar phpMyAdmin y llaves foraneas

Estas en el tema de Configurar phpMyAdmin y llaves foraneas en el foro de Sistemas de gestión de contenidos en Foros del Web. Recurro a los usuarios del foro, en busca de ideas de cómo hacer un diseño de edición de tablas eficiente, que funcione de la siguiente ...
  #1 (permalink)  
Antiguo 02/06/2009, 16:45
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Configurar phpMyAdmin y llaves foraneas

Recurro a los usuarios del foro, en busca de ideas de cómo hacer un diseño de edición de tablas eficiente, que funcione de la siguiente forma:

- El diseño puede variar en dependencia de la tabla que voy a editar.
- Si el registro que voy a editar tiene algun campo longtext, entonces que para ese campo salga un textarea.
- Si el registro que voy a editar tiene algun campo de tipo time ó date, mostrar entonces un calendario o un horario, que sirva de selección.
- Si el registro que voy a editar tiene algun campo foraneo, entonces que salga un objeto de formulario select, para escoger el valor del campo foraneo.
- Si el registro que voy a editar tiene algun camo que almacena contraseñas, entonces que salga un objeto de formulario password.

Estos son los mayores requisitos, que necesito que tenga el diseño a implentar. Cualquier idea, sugerencia por favor díganmela.

Mis saludos.
  #2 (permalink)  
Antiguo 02/06/2009, 16:51
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Vamos a ver, si quieres editar algunos datos de tu DB desde tu web, lo más probable es que sepas cual es el tipo de campo a editar, ahora bien, si lo que quieres es administrar tu base de datos, lo mejor es que uses PHPMyAdmin...
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #3 (permalink)  
Antiguo 02/06/2009, 17:02
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Tienes mucha razón amigo, pero el asunto esta en que phpmyadmin, tiene algunas deficiencias en cuanto a mis objetivos, porque por ejemplo uno de los deficientes más claros que hay es cuando en un registro hay un campo foraneo, me pone en ese caso una caja de texto para que ponga el valor, imaginate tener que estar pensande cual es el id de ese campo foraneo, !ah, lo mejor es tener un select para escoger, esa es una de las más pequeñas deficiencias que no me convienen.

Por eso amigo mio, es la ayuda que necesito, pues por otra parte, puedo cojer y hacer un diseño específico con los más mínimos detalles para cada una de las ediciones de las diferentes tablas d emi base datos, pero eso es algo engorroso, pues por pocas tablas que tenga mi base datos, imagina si tengo 10 tablas, serían 10 diseños diferentes o mejor dicho 10 páginas firentes de diseños.

Por favor, ayudame a encontrar una solución que se acerque a lo que quiero.

Gracias.
  #4 (permalink)  
Antiguo 02/06/2009, 17:16
Avatar de jaao_death  
Fecha de Ingreso: abril-2009
Ubicación: Murcia/españa
Mensajes: 229
Antigüedad: 15 años
Puntos: 6
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Intenta revisar como hace PHPMyAdmin para reconocer este tipo de datos viendo su código.

Claro que ahora que lo pienso, Podrías hacer una consulta del tipo "SHOW CREATE TABLE" no estoy seguro de si funciona pues nunca lo he probado, pero puedes intentarlo, luego lo único que tendrías que hacer es procesar el resultado, así tendrás toda la forma de tu base de datos recorriendola con algún bucle y posterior mente procesando las tablas.
NOTA: no se si la estructura de la tabla te muestre las opciones de un campo foraneo.

espero que esto te sirva de algo...
__________________
Mucha seguridad nunca es suficiente.... Por una red segura
El señor ilustre obscurece nuestras mentes
Usas Linux? http://www.dudalibre.com/gnulinuxcounter
  #5 (permalink)  
Antiguo 02/06/2009, 17:49
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Colega, creo que será mejor aunque demore más tiempo haciendolo, irme por la vía de diseñar un diseño diferente para cada tabla, y quizas halla algun código que sea estandar para los diseños.
  #6 (permalink)  
Antiguo 02/06/2009, 18:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

PHPMyAdmin tiene la opcion para mostrarte en un select las llaves foraneas, si configuras correctamente las relaciones, o si usas tablas InnoDB.

Por otro lado lo mejor es usar una consulta como la que te indica jaao_death para obtener que tipos de campo son, los indices y llaves y en base a esa información dibujar el formulario.

Saludos.
  #7 (permalink)  
Antiguo 02/06/2009, 19:00
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Podrías explicarme un poco mejor esto. Tengo bien las relaciones y mis tablas son de ese tipo, y cuando voy a insertar algun registro a una de las tablas no me muestra ningun select.
  #8 (permalink)  
Antiguo 02/06/2009, 19:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Solamente aplica si usas tablas del tipo InnoDB, y tus indices (Foreign Keys) estan definidos, de esa forma PHPMyAdmin reconoce que es una clave foranea y te muestra el combo para seleccionar.

Saludos.
  #9 (permalink)  
Antiguo 02/06/2009, 20:01
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Colega, mis tablas son del tipo InnoDB, y los indices estan definidos pero no me muestra el combo para seleccionar. Te pongo un ejemplo de 2 de mis tablas, por favor revizalas y dime si estan bien creadas, con sus indices primarios y foraneos:

Tabla funcion
Código:
CREATE TABLE `funcion` (                        
           `id_funcion` int(2) NOT NULL auto_increment,  
           `funcion` char(50) default NULL,              
           PRIMARY KEY  (`id_funcion`)                   
         ) ENGINE=InnoDB DEFAULT CHARSET=latin1
Tabla usuarios
Código:
CREATE TABLE `usuarios` (                                                                      
            `id` int(2) NOT NULL auto_increment,                                                         
            `nombre` char(50) default NULL,                                                              
            `hora` datetime default NULL,                                                                
            `fecha` date default NULL,                                                                   
            `pass` char(100) default NULL,                                                               
            `id_funcion` int(2) default NULL,                                                            
            PRIMARY KEY  (`id`),                                                                         
            KEY `FK_id_funcion` (`id_funcion`),                                                          
            CONSTRAINT `usuarios_ibfk_1` FOREIGN KEY (`id_funcion`) REFERENCES `funcion` (`id_funcion`)  
          ) ENGINE=InnoDB DEFAULT CHARSET=latin1
Por favor, dime que hay mal en esto.
  #10 (permalink)  
Antiguo 02/06/2009, 20:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Ya que tienes los foreign keys, ve a la ficha de structure, luego en Relation View vas a ver los indices, selecciona el indice y el foreign key.

Luego tienes que crear las tablas que phpMyAdmin necesita estan en el directorio de sql de phpMyAdmin, y editar en el config.inc.php las tablas que son y donde guarda los datos.

Activando y usando esas opciones, phpMyAdmin te va a mostrar un select en el campo que hayas definido en Relation View.

Para más información te invito a que vayas al foro de Aplicaciones Prefabricadas para que te brinden mayor soporte respecto a este programa.

Saludos.
  #11 (permalink)  
Antiguo 03/06/2009, 14:04
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Colega he probado todo lo que se pudiese ocurrir e incluso pregunté en el foro que me sugeristes pero nada, sigo sin ver los campos select para los valores foraneos, que me sugieres.
  #12 (permalink)  
Antiguo 03/06/2009, 15:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Pues desconozco la version de phpMyAdmin que uses, pero si vas a Relation View, te va a mostrar los campos de tu tabla.

Seleciona la tabla que es el FK (Foreign Key) y selecciona la tabla relacionada, luego ve a esta tabla relacionada y ve a Relation View, hasta abajo vas a ver un campo que dice "Choose Field to display", selecciona el campo que quieres mostrar y guarda los cambios, con eso te va a mostrar el select en lugar de un input.

Saludos.
  #13 (permalink)  
Antiguo 03/06/2009, 15:37
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Colega uso la versión: SQLyoq - Free MySQL GUI v5.15, y además uso también la versión: PHPmyadmin 2.8.2.4, según esto que más me puedes decir para ayudarme.
  #14 (permalink)  
Antiguo 03/06/2009, 15:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Pues intenta lo que te digo, yo uso la versión 3.1.3.1, pero ese soporte de relaciones lo tiene desde hace mucho.

Saludos.
  #15 (permalink)  
Antiguo 03/06/2009, 15:59
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Colega en mi versión no encuentro la opción que me dices: Relation View, lo que tengo es una opción que dice: Relationships / Foreign Keys ..., que mediante esta opción es que hago las relaciones que he hecho hasta el momento, me pone para que escoja la tabla a la que haré referencia, me pone automáticamente un nombre para el Foreign Key, y más abajo en 2 columnas una que dice Source Column, me muestra los campos de la tabla en la que estoy haciendo la relación y la otra columna se llama Target Column, que me muestra los campos de la tabla referenciada.

En ambas columnas escojo el Key d ela tabla referenciada, y activo las opciones On Delete y On Update con la opción Cascade, al terminar de hacer esto doy clic en Create y todo sale bien.

Dime esto que te explico aquí es lo que debo hacer por tu vía, o es a lo que debo llegar, si es así, te cuento que no me muestra el select en lugar de un input.

Por favor, ayudame con esto, o dime si es mejor postear esto en el foro de MySQL.
  #16 (permalink)  
Antiguo 03/06/2009, 16:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Pues mejor actualiza tu versión de phpMyAdmin, ya que tu necesitas trabajar en Relation View, y al parecer la version que usas (bastante atrasada) no la contiene.

Saludos.
  #17 (permalink)  
Antiguo 03/06/2009, 20:48
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Colega acabé de descargar la versión 3.2 de phpmyadmin, lo que voy hacer es preguntar en el foro de aplicaciones pre-fabricadas, para que me ayuden a actualizar mi versión.

Gracias, por la ayuda.
  #18 (permalink)  
Antiguo 04/06/2009, 07:46
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Colega una pequeña preguntica, esa versión tuya 3.1, ¿Admite php v5.1?
  #19 (permalink)  
Antiguo 04/06/2009, 09:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Claro, aunque te recomiendo igual actualizar la versión 5.1 de PHP ya esta obsoleta y tiene errores que han sido corregidos.

Saludos.
  #20 (permalink)  
Antiguo 04/06/2009, 09:21
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Ok, colega, voy a tratar de hacerme de una versión superior de PHP y luego cuento como me va y si tengo algun problema en sus instalaciones, de momento voy a ir tirando con la version 2.11 de phpmyadmin.
  #21 (permalink)  
Antiguo 04/06/2009, 09:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

La version 2.11 es muy antigua, por lo mismo de la version de PHP te recomiendo uses una version mas actual por los parches de seguridad y vulnerabilidades.

Saludos.
  #22 (permalink)  
Antiguo 04/06/2009, 11:12
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Si colega ya me di cuenta de eso, pero tambien baje la version 3.2 y la 3.1, solo me falta actualizar php de 5.1 a la 5.2
  #23 (permalink)  
Antiguo 05/06/2009, 10:55
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

Colega en realidad no imorta que version sea, pues basta con configurar el config.ini.php de phpmyadmin.
  #24 (permalink)  
Antiguo 05/06/2009, 12:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ¿Cómo hacer hacer un diseño eficiente para editar?

En efecto por eso te decia que tienes que importar los archivos SQL de PHPMyAdmin, ya que estos los usa para guardar las relaciones.

Saludos.

PD Este tema no es en si de PHP así que lo voy a mover al foro adecuado.
  #25 (permalink)  
Antiguo 05/06/2009, 12:49
Avatar de boy-computer  
Fecha de Ingreso: diciembre-2006
Ubicación: Cuba, Pinar del Río
Mensajes: 337
Antigüedad: 17 años, 4 meses
Puntos: 1
Respuesta: Configurar phpMyAdmin y llaves foraneas

Ok preguntaré entonces en ese foro

Última edición por boy-computer; 05/06/2009 a las 13:00 Razón: confirmar
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 17:01.