Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/10/2012, 05:04
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
Problema lógico bucle for e includes

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.