Foros del Web » Programando para Internet » PHP »

problemas con INCLUDE dentro de un WHILE

Estas en el tema de problemas con INCLUDE dentro de un WHILE en el foro de PHP en Foros del Web. Estimados, tengo un problema al incluir un archivo dentro de un while de una query. ejemplo. $query="select idioma from usuario where id='$id'"; $reply=mysql_query($query, $conn) or ...
  #1 (permalink)  
Antiguo 14/04/2010, 13:41
 
Fecha de Ingreso: agosto-2009
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
problemas con INCLUDE dentro de un WHILE

Estimados, tengo un problema al incluir un archivo dentro de un while de una query.
ejemplo.
$query="select idioma from usuario where id='$id'";
$reply=mysql_query($query, $conn) or die('Query failed: ' . mysql_error());
if (mysql_num_rows($reply) > 0) {
while ($row=mysql_fetch_assoc($reply)) {
$idioma=$row[idioma];
include 'includes/lang_'.$idioma.'.php';
$tabla .= '<td>' . lang("Hola") . '</td>';
}
}

como el nombre del archivo depende del idioma del usuario, cada vez que se ejecuta el while tengo que hacer un include nuevamente del archivo que corresponda al idioma encontrado. Eso me arroja error, me imagino que por que no se puede ocupar el includ varias veces, por lo tanto la pregunta es si existe otra forma de hacerlo.

Gracias de ante mano.

Última edición por pit3323; 14/04/2010 a las 13:55
  #2 (permalink)  
Antiguo 14/04/2010, 13:43
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: problemas con INCLUDE dentro de un WHILE

Cámbialo por include_once

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 14/04/2010, 14:23
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: problemas con INCLUDE dentro de un WHILE

Código PHP:
Ver original
  1. $row = mysql_fetch_array ($reply);
  2. $idioma = $row['idioma'];
  3. include_once ('includes/lang_'.$idioma.'.php');
  #4 (permalink)  
Antiguo 15/04/2010, 10:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 10
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: problemas con INCLUDE dentro de un WHILE

Estimados, muchas gracias por sus respuestas.
Ejecuté lo que me dijeron, pero sigo obteniendo un Fatal Error Cannot redeclare, es decir a la segunda vuelta del while la página se cae y no me deja redeclarar la variable con un nuevo nombre.el código quedó así:

$query="select idioma from usuario where id='$id'";
$reply=mysql_query($query, $conn) or die('Query failed: ' . mysql_error());
if (mysql_num_rows($reply) > 0) {
while ($row=mysql_fetch_assoc($reply)) {
$idioma=$row[idioma];
include_once ( 'includes/lang_'.$idioma.'.php'); $tabla .= '<td>' . lang("Hola") . '</td>';
}
}
  #5 (permalink)  
Antiguo 15/04/2010, 10:48
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: problemas con INCLUDE dentro de un WHILE

A ver, hay cosas q no entiendo.
Pasas un $id, que es un número único en tu tabla ¿o no?
Parece que no, luego si que te hace falta el while, al principio pensé que era un único registro.
¿Te has percatado que te faltan comillas en $row['idioma']?
Es lo único que veo la posibilidad de que está pasando, porque si siempre es Null, siempre intentará incluir el mismo file.
Hagamos algo, intenta imprimir los files q te obtienes, sin incluirlos a ver q te suelta
  #6 (permalink)  
Antiguo 15/04/2010, 10:49
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: problemas con INCLUDE dentro de un WHILE

OOOOOO, espera, espera, aunque ya he posteado arriba.
¿Será q tienes en todos los files funciones con los mismos nombres?
  #7 (permalink)  
Antiguo 15/04/2010, 10:55
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: problemas con INCLUDE dentro de un WHILE

El problema es que en tus archivos de idioma tienes funciones, si `incluyes` una vez cada archivo de idioma no hay problema, la cuestión es de que como incluyes más de una vez php re-compila el mismo archivo que hizo previamente y detecta que una función de este archivo ya está registrada.

Lo que deberías hacer son dos ciclos (while), uno para hacer una lista de archivos que necesites incluir y después una lista para procesar tu información.

Ojo, te dará el mismo problema si en tus archivos de idioma usas nombres de funciones idénticas, es decir, si en tus archivos tienes una función que se llame `procesar()` debes asigarle nombres diferentes en cada archivo de idioma: en espanol.php que se llame procesar_espanol(), en english.php que se llame procesar_english(), etc.

Etiquetas: include
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 08:54.