Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/05/2011, 17:18
dibuga
 
Fecha de Ingreso: octubre-2008
Mensajes: 87
Antigüedad: 15 años, 6 meses
Puntos: 0
Pregunta No funciona mi código PHP en EXPLORER

Buenas:
Os cuento. Estamos intentando crear una web para listar al pulsar sobre las asignaturas impartidas en un doctorado, el listado de alumnos matriculados. Existe una pág con las asignaturas por cada año (aunque esto sea raro por el momento tiene q ser así por una causa externa), de tal forma que la pag del año actual se llama "asignaturas.php" y las de años anteriores "asignaturas2010.php", "asignaturas2009.php", etc...Para listar los alumnos de una asignatura, se pincha sobre un enlace junto a la asignatura que abre una nueva ventana encima de la actual cuyo contenido es la pag "AlumnosAsig.php" y es común para todas las pág de "asignaturasX.php" y común a cada enlace de las asignaturas mostradas.
Para saber de que asignatura deseo listar los alumnos, le paso un identificador de asignatura, y para saber el año, solo necesito leer el nombre de la pág que llama a "alumnosAsig.php" (si es el año actual, será "asignaturas.php" y si es un año anterior incluira al final el año "asignaturas2010.php").

Esta es la llamada:
Código:
<a href="javascript:MM_openBrWindow('alumnosAsig.php?id=1','ListadoAlumnos','scrollbars=yes,width=600,height=400')" ><img src="imagenes/alumnos.png" alt="Alumnos" width="24" height="24" border="0" align="absbottom" title="Alumnos" /></a>
Lo que ocurre es lo siguiente:
En FIREFOX MOZILLA funciona correctamente TODO, pero en EXPLORER, abre la ventana, y sólo muestra el nombre de la asignatura. No muestra el listado, ni el año, ni nada más..... ni tampoco da error.

el código de "AlumnosAsig.php" es el siguiente:
Código:
<?php
header('Content-Type:text/html; charset=UTF-8');

require ('conexionInc.php'); // incluir configuracion.
$id_asig=($_GET['id']);/identificador de la asignatura

///////OBTENER EL AÑO DEL QUE DESEO LISTAR ALUMNOS////////////////////////////////
//Como la pg del año actual se llama "asignaturas.php" y las de años anteriores
//se llaman "asignaturasEL_AÑO.php" puedo obtener de el nombre de la página el año //del que deseo listar los alumnos.

//en $Pagredir[0] SOLO ruta COMPLETA 
$Pagredir=explode("?",$_SERVER['HTTP_REFERER']);
echo($Pagredir[0];---> Esto no provoca ninguna salida en pantalla con EXPLORER
//obtener  solo el nombre de la página (es del tipo asignaturasX.php"
$Pagredir=strstr($Pagredir[0],"asignaturas"); 

if ($Pagredir=="asignaturas.php"){ //es el año actual
 $anyo=date("Y");
  
}else{
   $anyo=substr($Pagredir,11,4);//me quedo solo con el año
 
}
echo($anyo);---> Esto no provoca ninguna salida en pantalla con EXPLORER
/////////////////////////////////////////////////////////////////////////////////////////////////

$usuario=$_SESSION['usuario_login'];
$pag=$_SERVER['PHP_SELF']; 


$db_conexion= mysql_connect("$sql_host", "$sql_usuario", "$sql_pass") or die(header ("Location:P_cerrarsesion.php")) or die(mysql_error());
mysql_select_db("$sql_db") or die(mysql_error());
mysql_query ("SET NAMES 'utf8'");

$consulta = mysql_query("SELECT asignaturas.id_asig, alumnos.apellidos,alumnos.nombre,alumnos.id_univ FROM $sql_tabla6,$sql_tabla8,$sql_tabla9 WHERE ( (alum_asig.id_asig=".$id_asig.") AND(alum_asig.id_alum=alumnos.id_alum) AND (alum_asig.id_asig=asignaturas.id_asig) AND (alumnos.anyo='".$anyo."') ) ORDER BY alumnos.apellidos, alumnos.nombre") or die(mysql_error());


$nomAsig =mysql_fetch_array( mysql_query("SELECT nombre FROM $sql_tabla8 WHERE id_asig=".$id_asig)  );


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
 <title>Alumnos matriculados</title>

 <script src="funciones.js" type="text/javascript" language="JavaScript"> </script>
 <link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body >
<br>
<?php

 echo ('<table width="560" border="1"  cellpadding="0" cellspacing="0" style="margin-left:20px;" >');
		
 echo ('<tr style="font-size:18px;color:#ffffff;background-color:#000066;">');
 echo ('<td colspan="2">&nbsp;<b>'.$nomAsig[0].'</b>('.$anyo.')</td></tr>');
 
 $lista_colores=array('#F0F0F0','#f5dfc8');
 $num_colores=2;
 $indice=0;
 
 while($row=mysql_fetch_array($consulta))
{
  $univ=mysql_fetch_array(mysql_query("SELECT universidad FROM $sql_tabla7 WHERE id_univ=".$row[3].";"));
  $color=$lista_colores[$indice % $num_colores];
  $indice++;
  echo ('<tr bgcolor='.$color.'><td width="8px" align="right">&nbsp;'.$indice.'.</td><td>&nbsp;'.$row[apellidos].', '.$row[nombre].' ('.$univ[0].')</td>');
  } 
?>

</body>
</html>
No entiendo que ocurre ya que con el navegador Mozilla Firefox funciona sin problemas. He intentado ir quitando código para aislar el problema. Ni quitando todo y dejando solo el bloque de "OBTENER EL AÑO", es capaz de escribir por pantalla esa variable después de pasar por el if-else.

Las tablas usadas en la BD son las siguentes:
$sql_tabla6: tabla de alumnos con clave id_alum
$sql_tabla8: tabla de asignaturas con clave id_asig
$sql_tabla9: Tabla AsigAlum con la clave formada por id_alum+id_asig que guarda las asignaturas en las q se matricula un alumno.

NOTA: La BD es correcta. Un alumnos solo se matricula un único año, y por tanto no puede cursar una asignatura más de una vez.

¿puede alguien ayudarme? ¿p q no funciona en EXPLORER?

MUCHAS GRACIAS¡¡¡¡¡