Triggers entre 2 BD distintas

Mi nombre es Andres Ariza, soy colombiano y tengo un problema con la creación de un trigger
Resulta que mis páginas web las manejo generalmente con MySql, y en este momento por varios motivos diferentes tengo una página en dos idiomas diferentes que utilizan bases de datos diferentes una se llama mercedes_en para la página en ingles, y otra se llama mercedes_sp `para la página en español.
En este momento necesito que cuando un usuario se registre en la página en ingles, pueda acceder a la página en esañol con los mismos datos y viceversa, y es aquí donde tengo el problema, pues he buscado en los manuales de MySql pero no dice como se puede hacer esto..
Respuesta
1
Si son bases de datos distintas no podrás ejecutar el trigger.
En principio, el problema deberías enfocarlo de otra manera. Necesitaría saber la tecnologías que utilizar para la web (PHP, .NET, etc.).
A simple vista, si la página está en varios idiomas, más que dos bases de datos, necesitarías añadir un campo a cada tabla para cada idioma. Pero como te digo, necesitaría más datos para dar una respuesta más válida.
Mira, las páginas las tengo montadas en Joomla, las tengo en 2 BD diferentes por cuestiones de monedas y precios y promociones en algunos productos, por ejemplo para colombia, algunos productos tienen 50% de descuento para envíos nacionales, mientras que por ejemplo las ventas en guatemala no tienen ningún tipo de promoción...
Pero si necesito que cualquier usuario que se registre en uno de los dos idiomas, pueda acceder a la otra página con los mismos datos, por eso pensé en un trigger que se disparara cuando se hiciera un insert en la tabla de los usuarios, pero si se te ocurre otra solución bienvenida sea...
Quedo pendiente de tu respuesta
Se me ocurre que tendrás que hacer un programa externo que sea llamado al registrar (seguro que es fácil hacer eso con Joomla).
Este programa sería el que automáticamente daría de alta al usuario en la otra BB. DD. Además tendría que tener en cuenta cuando cambia la contraseña, el perfil, etc.
Otra opción mejor que se me ocurre es configurar Joomla para que acceda en ambos casos a una tabla de usuarios común. Para ello habría que modificar internamente Joomla. No conozco cómo está hecho, pero si sigue está bien diseñado Joomla, sería relativamente fácil hacerlo.
Por último, hacer un trigger que replique ciertas tablas entre dos bases de datos, si estas están alojadas en el mismo servidor no debería ser algo difícil, pero para eso necesitas tener la versión 5.1 de MySQL, aquí tienes más información: http://dev.mysql.com/doc/refman/5.1/en/triggers.html

1 respuesta más de otro experto

Respuesta
1
Bueno eso se puede montar de varias maneras, en mi trabajo solemos hacer páginas multilingues, la manera como lo hacemos es la siguiente:
1)Efectivamente en la base de datos creas los campos con un sufijo con la lengua:
titulo_es (español)
titulo_en (ingles)
titulo_al (alemán)
etc...
2) TODAS LAS CADENAS de texto visibles para el usuario de todos los archivos de la web las metes en un archivo llamado cadenas.php, para cada idioma una carpeta y dentro su archivo de cadenas. Es decir:
Ej de cadenas.php
<?
$et_espanol="Español";
$et_ingles="Ingles";
$et_aleman="Aleman";
$et_coches="Coches";
?>
Una carpeta por cada idioma
/language/es
/language/en
/language/al
y dentro de cada carpeta un archivo llamado cadenas.php con todas las cadenas:
/language/es/cadenas.php
/language/en/cadenas.php
/language/al/cadenas.php
3) El idioma que este usando el visitante a la web en ese momento lo guardas en sesión, por ej: pongamos en $_SESSION['lengua']='es'
4) Creas otro archivo llamado idiomas.php dentro del cual manejaras el tema del cambio de lengua:
<?php
//idiomas.php
$lenguas_posibles=array('es','en','al');
If($_REQUEST['lengua']!="" && in_array($lenguas_posibles,$_REQUEST['lengua'])){
$_SESSION['lengua']=$_REQUEST['lengua'];
}
if($_SESSION['lengua']=="" || !in_array($lenguas_posibles,$_SESSION['lengua'])){
$_SESSION['lengua']='es';
}
$var_titulo="titulo_".$_SESSION['lengua'];
$var_texto="texto_".$_SESSION['lengua'];
$var_mercedes="mercedes_".$_SESSION['lengua']
etc..
Este archivo idiomas.php lo colocas mediante un include en TODOS los archivos de tu web, arriba de todo, y también el cadenas.php
Ejemplo:
<?php
// este será index.php
session_start();
include("idiomas.php");
include("language/".$_SESSION['lengua']."/cadenas.php");// siempre irá al idioma que tengas en sesión
//Ejemplo de consulta
$resu=mysql_query("select id,$var_titulo from tabla");
?>
Todos los campos que puedan estar en varios idiomas tendrás que meterlos en idiomas.php, como consejo personal te recomiendo que siempre uses los mismos nombres y muy genéricos, te ahorraras de pensar, Por ej: id, titulo; fecha, url, texto, desc, etc.. no te molestes a poner noticia_es, noticias_en, etc.. o coche_en, coche_fr, porque te liaras más que otra cosa ;)
El conmutador de lengua tendrá que ser algo así:
<a href="?lengua=es"><?=$et_español?></a><br/>
<a href="?lengua=en"><?=$et_ingles?></a><br/>
<a href="?lengua=al"?><?=$et_aleman?></a><br/>
Y cuando cambies de página como en toda la web estas haciendo un include a idiomas.php lo hará sin problemas ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas