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