Avatar Image
Usuario habitual
Usuario habitual

¡Buenas noches!

Mi página web se basa mayormente en una tabla. En ella, tengo una serie de vínculos que, al ser pulsados, lanzan una Lightbox donde pretendo cargar los resultados de una consulta a la base de datos. Puesto que quiero mantener el código lo más sencillo posible para mí, que no tengo mucha experiencia en programación web, para hacerlo opté por un método algo rústico que combina css y javascript, y obtuve la siguiente línea de código:

$html = $html. "<td><b><a href = javascript:void(0) onclick =document.getElementById('blanco').style.display='block';document.getElementById('degradado').style.display='block'>".$row["funcion"]."</a></b>
                <div id=blanco class="recuadro_blanco">".$row['comentario']."<p><a href = javascript:void(0) onclick =document.getElementById('blanco').style.display='none';document.getElementById('degradado').style.display='none'>Cerrar</a></div>
                <div id=degradado class="recuadro_degradado"></div>
                </td>";

El caso es que, si bien la parte estética funciona perfectamente, siempre me carga el mismo registro en la Lightbox. Es como si $row['comentario'] sólo devolviera el primer resultado, pero he probado a imprimir $row['comentario'] con echo y devuelve todos los registros deseados, por lo que creo que el problema está en la parte de Javascript. Es como si sólo fuera capaz de reconocer un registro, y no los demás. ¿Hay alguna forma de solucionarlo? Había pensado que tal vez lo que necesita es una lista con los resultados de $row['comentario'] para poder funcionar, pero entonces no se me ocurre cómo hacer que sepa qué registro de los que le pasa $row['comentario'] tiene que mostrar para cada vínculo. ¿Alguien tiene alguna sugerencia? Si no, seguro qeu hay métodos más apropiados para lanzar una Lightbox y que no provoquen este problema ¿Alguna recomendación?

Muchas gracias.

Avatar Image
Usuario habitual
Usuario habitual

He seguido dándole vueltas al asunto y probado a crear una función que hiciera lo mismo y cargara los resultados deseados, lejos de la parte de JavaScript:

$html = $html. "<td><b><a href = javascript:void(0) onclick =document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'>".$row["funcion"]."</a></b><div id=light class="white_content">";
        $html = $html. devolver("select comentario from funcion where funcion.cod_prin =".$row["cod_prin"]);
        $html = $html. "<p><a href = javascript:void(0) onclick =document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'>Cerrar</a></div>
                <div id=fade class="black_overlay"></div>
                </td>";
function devolver($consulta) {
    $sentencia = consultar($consulta);
    while($row = mysql_fetch_array($sentencia)){
    $html = $html.$row["comentario"];}
    return $html;
}

Pero me sigue pasando exactamente lo mismo. He probado a hacer echo tanto de la consulta como de $row a todas las alturas de la función posibles y devuelve los resultados correctos; sólo $html.$row["comentario"] se gripa en el primer resultado. También he probado la función "devolver" sola y me devuelve correctamente todos los registros. ¿Por qué no cuando se la llama para cargar los resultados en la Lightbox? ¿Es que no puede haber elementos distintos con la misma id? ¿Es que la cuenta se reinicia cada vez?

Verdaderamente no entiendo qué pasa. ¿Alguien podría orientarme? Gracias.

Avatar Image
Usuario habitual
Usuario habitual

Hala, ya no hace falta que respondáis. Al final era lo de las id.

$html = $html. "<td><b><a href = javascript:void(0) 
onclick 
=document.getElementById('".$row["cod_prin"]."').style.display='block';document.getElementById('fade').style.display='block'>".$row["funcion"]."</a></b><div
 id=".$row["cod_prin"]." class="white_content">";
$html = $html. devolver("select comentario from funcion where funcion.cod_prin =".$row["cod_prin"]);
$html
 = $html. "<p><a href = javascript:void(0) onclick 
=document.getElementById('".$row["cod_prin"]."').style.display='none';document.getElementById('fade').style.display='none'>Cerrar</a></div>
<div id=fade class="black_overlay"></div>
</td>";
ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 18/May/2006, 22:41
ebasil24018kMay/06
Por: , el 28/Dic/2004, 14:28
Tenter User 28318115kDec/04
Por: , el 02/Dic/2017, 01:33
Japirona juancarlosinesferis jlabraibarra23kJun/19
Por: User 5484252, el 17/Mar/2009, 20:23
User 5484252 GestionXls12kMar/09
Por: , el 14/Abr/2005, 00:13
LocoPaul User 390661 Jallander44kApr/05