Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/02/2009, 10:35
acholaco
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: Problema con select creado con xajax en mozilla

Bueno, vamos a ver retomo el tema ya que no doy con la solución.

A continuación os dejo el código para que veais como se crea todo.

1º Os muestro el código de vista.tpl.php que como dije es una plantilla smarty en la que se crean los select.
COmo podreis ver, aparecen dos select, uno llamados formatos y otro llamado materias. Bien en el evento onChange del select de formatos es desde donde llamo a la función XAJAX para que dependiendo de lo que se le envié me cree un select u otro.
Código HTML:
<!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>
{$xajax->printJavascript('smarty/includes/func_logicas/xajax/')}
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
{include file='header.tpl.php'}
<div id="contenedor">
<div id="menu_izquierda" style="width:20%; float:left;">
{include file='menu_left_submaterias.tpl.php'}
</div>
<div id="contenidos" style="width:80%; float:inherit;">
<table width="100%">
<form name="formulario" action="submaterias.php" method="get">
  <tr>
    <td rowspan="2" align="right" valign="bottom">Filtrar submaterias por formatos y materias:</td>
    <td align="center" valign="middle">Selecciona formato </td>
    <td colspan="2" align="left" valign="middle">Selecciona una materia </td>
    </tr>
  <tr>
    <td align="center" valign="middle" ><select id="formato" name="formato" onchange="xajax_crea_form_materias(this.value);">
      <option value="0">Todos los formatos</option>
		{html_options values=$id_formato output=$nombre_formato}
    </select></td>
	
    <td align="left" valign="middle" id="form_materias"><select id="materia" name="materia">
      <option value="0">Todas las materias</option>
      
	   {html_options values=$id_materia output=$nombre_materia}
     
    </select></td>
    <td align="left" valign="middle"><input type="submit" name="Submit" value="Filtrar"/></td>
  </tr>
	</form>
  <tr>
  </table>

</div>
<!-- fin de la capa contenedora-->
</div>
</body>
</html> 
A continuación os expongo el código en el que está la función que hace aparece la función xajax a a la que se le llama desde el select de formato.
Código PHP:
function crea_form_materias($id_formato) {
    if(
$id_formato==0) {
        
$condicion="";
    } else {
        
$condicion=" WHERE materias.id_formato=$id_formato ";
    }
    
$salida="";
    
$conexion=conectar();
    
$consulta="SELECT * FROM materias LEFT JOIN formatos ON(formatos.id_formato=materias.id_formato) ".$condicion." ORDER BY materias.fecha_alta ASC";
    
$resultado=mysql_query($consulta);
    if(
$id_formato==0) {

            
$salida.="<SELECT ID=\"materia\" NAME=\"materia\">";
            
$salida.="<OPTION VALUE=\"0\">Selecciona una materia</OPTION>";

            while(
$fila=mysql_fetch_array($resultado)) {
                
$salida.="<OPTION VALUE=".$fila['id_materia'].">".$fila['nombre_materia']."</OPTION>";
            }
        }
        
$salida.="</SELECT>";
    } else {
    
    
$salida.="<SELECT ID=\"materia\" NAME=\"materia\">";
    
//$salida.="<OPTION VALUE=\"0\">Selecciona una materia</OPTION>";
        
while($fila=mysql_fetch_array($resultado)) {
            
$salida.="<OPTION VALUE=".$fila['id_materia'].">".$fila['nombre_materia']."</OPTION>";
        }
    
$salida.="</SELECT>";
    }
    
$respuesta=new xajaxResponse();
    
$respuesta->addAssign('form_materias','innerHTML',$salida);
    return 
$respuesta;
}
$xajax->registerFunction("crea_form_materias");
$xajax->processRequests(); 
En fin creo que podais entenderlo, pero sobre todo me gustaría que os centrarais en que el problema no está en que no se crean los select, que eso sí que funciona, sino que le problema esta en que cuando envío el formulario por medio del botón filtrar, no me recupera los valores del select que se ha creado con ajax y no los envía ni por get ni por POST.

Un saludo y espero vuestra aydua lo antes posible ya que me es muy urgente!!!
Gracias de antemano.