Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2012, 11:38
la_nutria
 
Fecha de Ingreso: agosto-2010
Mensajes: 25
Antigüedad: 13 años, 9 meses
Puntos: 0
Resultado consulta MySQL misma página y div id dinámico

Hola a todos.
En una página, dentro de una tabla, aparecen los registros resultantes de una consulta MySQL que muestra rutas de buses. Al cliquear en un link en cada registro(fila) se abre un <tr> debajo del mismo con un <div> en el cual se muestra el resultado de otra consulta mysql (que muestra más detalladamente la ruta), sin recargar la página.
Pero el <div> que se abre tiene un id compuesto por un nombre fijo y una variable php (contenido$fila) siendo fila el número de fila del registro. Esto complica en el archivo funciones.js al indicar el <div> donde se mostrará el resultado.
Este es el erchivo resultado.php:

Código:
$fila=1;
...
...
<td>
<input id='nom' type='hidden' value="<?php echo '$valor';?>" />
<?php echo "<a href=\"javascript:void(0)\" onClick=\"SwitchBox('Cont$fila','btn$fila');buscar(document.getElementById('nom').value);\">Ver</a>\n"; ?>
</td>
<?php	
echo "<tr colspan='10'>
<td class='ruta_completa' height='54' colspan='10'>
<div class='BoxCont' id='cont$fila' style='display: none;'>
</div>
</td>
</tr>\n";
echo "</tr>\n";
$fila++;
El valor $valor que se pasa oculto es un id de la ruta que hace cada linea.
Estas son las funciones en el archivo funciones.js:

Código:
function SwitchBox(bx,btn) {
	// bx: id del contenedor
	// btn: botón a cambiar imagen y texto
	var  estado = document.getElementById(bx).style.display 
	if (estado=='none') {
		document.getElementById(bx).style.display 	= 'block';
		document.getElementById(btn).src 			= 'images/less.gif';
		document.getElementById(btn).title		= 'Click para Contraer';
	} else {
		document.getElementById(bx).style.display 	= 'none';
		document.getElementById(btn).src 			= 'img/more.gif';
		document.getElementById(btn).title		= 'Click para Expandir';
	} // endif
} // end function



var req;
 function buscar(valor) {
 if(window.XMLHttpRequest) {
 req = new XMLHttpRequest();
 }
 else if(window.ActiveXObject) {
 req = new ActiveXObject("Microsoft.XMLHTTP");
 }
 var url = "ruta_completa.php?valor="+valor;
 req.open("Get", url, true);
 req.onreadystatechange = function() {
 if(req.readyState == 1) {
 document.getElementById('cont$fila').innerHTML = 'espere ...';
 }
 if(req.readyState == 4 && req.status == 200) {
 var respuesta = req.responseText;
 document.getElementById('cont$fila').innerHTML = respuesta;
 }
 }
 req.send(null);
 }
La función SwitchBox hace que se abra el div cont$fila en resultado.php, cada vez que doy click en el link de cada registro, debajo del mismo como otro <tr>, y funciona bien.
La función buscar carga el resultado de la consulta mysql, hecha en un archivo procesa_valor.php, dentro del div cont$fila pero solamente si cambio el nombre del div a texto simple, sin variable $fila, p.e. <div id="cont">. En este caso solo muestra el primer registro repetido en todas las filas.
Necesito que javascript acepte la variable "cont$fila" y luego recibirla en resultado.php. O también pensé en hacer una sola función con la función buscar y la función SwitchBox sin tener que nombrar el div cont$fila.
Probé con las dos funciones solas y no hay caso.
Muchas gracias desde ya por su ayuda