Buenos días a todos,
veamos, tengo un sistema para enviar correos a los clientes, envía bien, etc. Según el número de serie de la factura (envío las facturas) lo tengo que enviar en un idioma u otro, he aquí la selección del idioma, creo que esto es bastante claro.
Código PHP:
/*seleccionamos un idioma*/
if ($serie == 'a' OR $serie == 'r')
{$idioma='es'; require_once './idiomas/castellano.php';}
elseif ($serie == 'c' OR $serie == 's' OR $serie == 'b' OR $serie == 'u')
{$idioma='en'; require_once './idiomas/ingles_aleman.php';}
else {$idioma='en'; require_once './idiomas/ingles_aleman.php';}
//si es de otra serie el idioma por defecto es inglés
Entonces según el correo mete los ficheros que incluyen variables como $asunto = 'Tal cosa'. Más adelante al configurar el e-mail pues cargo esas variables.
Pero todo eso está dentro de un for para enviar todos los correos.
El primero lo envía bien, los siguientes los envía con el idioma y parámetros del primero. No cambia de idioma. Entiendo que es un problema de los require pero no se por qué.
Empiezo a pensar usando la lógica y tengo la siguiente duda que tal vez es donde radique el problema. Yo pensé que al hacerlo así, según el idioma, metería el fichero que necesita UNA VEZ y a la siguiente iteración del bucle ya estará incluído y por lo tanto no es necesario volver a incluirlo.
Pero tal vez la condición no influye al contenido, no se explicar esto. Es decir, que el if sólo hace que incluya o no el fichero la primera vez, la segunda ya está incluído y da igual que se seleccione el otro, el texto incluído forma parte del código y no le influye para nada el if realizado sino que se va a hacer si o si. No se si me explico, yo mismo me hago un lío.
Pongo un ejemplo práctico para explicarme:
Código PHP:
/*Fichero include nombre_espanol.php*/
$nombre = "carlos";
Código PHP:
/*Fichero include nombre ingles.php*/
$nombre = "charlie";
Código PHP:
//Solo es un ejemplo puede aver errores de sintaxis
//este sería el script
$idioma = "ingles";
bucle que recorre un array
{
if ($idioma == "ingles") {require_once 'nombre_ingles.php'}
else if($idioma=="espanol") {require_once 'nombre_espanol.php'}
echo $nombre;
}
Esa es la idea, si la pirmera vez el idioma es ingles y la segunda español. Que ocurre con nombre? el texto del require inglés sigue incluído, pero se cumple sólo según el if o al estar incluído se ejecuta si o si?
Espero que se me entienda. Se otras soluciones pero "necesito" saber como funciona porque sí, me estoy mareando de tanto pensar.