Comunidad de diseño web y desarrollo en internet online

Insert into: para pagina multi-idioma

Citar            
MensajeEscrito el 01 Jun 2006 02:44 pm
Tengo una duda, como sería el diseño de una base de datos multiidioma, o cómo sería la consulta de inserción:

Se tienen que crear:
1.- campos para cada idioma en el mismo registro, o
2.- registros para cada idioma con el mismo ID.

Porque después, ¿como se realizaría una consulta en el caso de que se utilice el método 1 que creo yo que es el correcto?

A ver, por ejemplo yo creo esta tabla para los idiomas:

Código :

CREATE TABLE `idioma` (
  `id_idioma` int(11) unsigned NOT NULL,
  `abreviacion_idioma` varchar(2) NOT NULL,
  `nombre_idioma` varchar(20) NOT NULL,
  PRIMARY KEY  (`id_idioma`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Idiomas';

-- 
-- Volcant dades de la taula `idioma`
-- 

INSERT INTO `idioma` VALUES (1, 'ca', 'Català');
INSERT INTO `idioma` VALUES (2, 'es', 'Español');
INSERT INTO `idioma` VALUES (3, 'en', 'English');
INSERT INTO `idioma` VALUES (4, 'fr', 'Français');


Entonces, tener otra donde se usan esos idiomas:

Código :

CREATE TABLE `articulos` (
  `id_articulo` int(11) NOT NULL auto_increment,
  `id_idioma` int(10) unsigned NOT NULL,
  `articulo` varchar(50) NOT NULL,
   PRIMARY KEY  (`id_articulo`)
)


Entonces id_idioma sería 1, 2, 3 o 4 según el caso.

Pero ahora bien, para introducir un artículo en varios idiomas, se tendría que crear un

Código :

INSERT INTO `articulos` VALUES( 1, 2, 'Esto es el artículo')


pero claro, también para los otros idiomas, es decir de nuevo

Código :

INSERT INTO `articulos` VALUES( 1, 1, 'Això és l'article')
etc.

Lo que no sé es cómo se puede darle al submit y enviar esa información para que cree tantos registros como idiomas se hayan implementado con el mismo envio. No logro entender cómo hacerlo. Tendría que ser un formulario con, por ejemplo 4 Textarea cada uno para un idioma, y luego cómo ordenas eso.. :?

Alguna idea... o quizás es mejor el otro método de crear un registro con tantos campos como idiomas, y despues crear los querys según el idioma deseado... :?

:?

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 01 Jun 2006 03:43 pm
mmm yo crearia una tercera tabla que almacene los id de idioma y articulo, ademas del contenido y el titulo del articulo. Algo asi:

tabla idioma
- id
- nombre

tabla articulo
- id
- idAutor
- fecha

tabla relArticuloIdioma
- idArticulo
- idIdioma
- titulo
- contenido

Ejemplo de datos en las tablas
tabla idioma (id, nombre)
registro(1, español)
registro(2, ingles)
registro(3, frances)

tabla articulo (id, idAutor, fecha)
registro(1,1,'10/10/2005')
registro(2,4,'10/12/2005')
registro(3,2,'27/03/2006')

tabla relArticuloIdioma (idArticulo, idIdioma, titulo, contenido)

registro 1:
idArticulo: 1 -> fecha: 10/10/2205, autor: 1
idIdioma: 1 -> nombre: español
titulo: "Algo titulo en español"
contenido: "Algun contenido en ingles"
registro 2:
idArticulo: 2 -> fecha: 10/12/2205, autor: 4
idIdioma: 3 -> nombre: frances
titulo: "Algo titulo en frances"
contenido: "Algun contenido en frances"


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 01 Jun 2006 04:15 pm
si pero:

¿cómo se puede darle al submit y enviar esa información para que cree tantos registros como idiomas se hayan implementado con el mismo envio?

Se me ha ocurrido mirar el código de oscommerce para ver cómo lo hacian, pero :shock: eso no lo entiendo ni recien levantado duchado y afeitado después de dormir treinta dias seguidos. Aunque sí que he visto que usan arrays por todos lados y bucles for... :roll:

Así que ya supongo que se tendrá que crear algo así como un bucle for que recoga la variable incrementando registros con una $i que sirva para recorrer el array e introducir los datos en la Tabla, :o
:? estoy jodido... :wtf:

Pero lo tengo que conseguir, ya que ahora que ya sé cómo crear el contenido en varios idiomas, tengo que poder enviarlo en formularios y recogerlo nariceeeeeees :twisted:

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell



Ultima edición por Sisco el 01 Jun 2006 04:29 pm, editado 1 vez

Catalunya

firefox
Citar            
MensajeEscrito el 01 Jun 2006 04:25 pm
emmm bueno serian 2 insert para un articulo nuevo, y 1 insert si el articulo ya existe al menos en un idioma.

Insertar Articulo
Titulo : Titulo de Articulo
Contenido: Contenido de mi articulo
Autor: Maikel
fecha : 01/06/2006
idioma: español

para insertar este articulo debe insertar algo asi:

INSERT INTO Articulo (id, idAutor, fecha) VALUES('','$autor','$fecha');
recupero el ultimo id que inserte
INSERT INTO relArticuloIdioma (idArticulo,idIdioma,titulo,contenido) VALUES ($ultimoId,1,$titulo,$contenido)

si queremos insertar el mismo articulo pero en otro idioma solo necesitamos esto:
INSERT INTO relArticuloIdioma (idArticulo,idIdioma,titulo,contenido) VALUES ($ultimoId,$otroIdioma,$tituloNuevoIdioma,$contenidoNuevoIdioma)

nota que aqui $ultimoId seria el mismo que el anterior, por eso no lo cambie ;)

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.