Foros del Web » Programando para Internet » Javascript »

Javascript/PHP: $row sólo devuelve primer registro

Estas en el tema de Javascript/PHP: $row sólo devuelve primer registro en el foro de Javascript en Foros del Web. ¡Buenas noches! Antes de nada quería decir que tengo más bien pocos conocimientos tanto de Javascript como de PHP, y que todo lo que he ...
  #1 (permalink)  
Antiguo 12/11/2010, 17:18
 
Fecha de Ingreso: marzo-2004
Mensajes: 35
Antigüedad: 20 años, 1 mes
Puntos: 0
Javascript/PHP: $row sólo devuelve primer registro

¡Buenas noches!

Antes de nada quería decir que tengo más bien pocos conocimientos tanto de Javascript como de PHP, y que todo lo que he leído en éste y en otros foros sobre la combinación de PHP y Javascript me ha confundido aún más, por lo que pido disculpas si este tema resulta estar ya muy trillado, pero es que no consigo hacer funcionar mi página web como desearía.

Dicha web se basa mayormente en una tabla. En ella, tengo una serie de vínculos que, al ser pulsados, lanzan un efecto Lightbox con el que pretendo cargar los resultados de una consulta a la base de datos en un recuadro blanco sobre un fondo semi-transparente. La idea es que cada vínculo cargue un registro, todos ellos diferentes, que he obtenido previamente en la consulta.

Para ello, he copiado de internet un método que, auqneu parece ser algo rústico, me parece muy asequible para mis conocimientos y he obtenido las siguientes líneas de código:

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>";
Quepa decir que tanto el efecto como la consulta funcionan correctamente, de hecho, 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 porque, y he aquí el problema, siempre me carga el mismo registro en el recuadro. Es como si $row['comentario'] sólo devolviera el primer resultado, como si sólo fuera capaz de reconocer un registro, y no los demás.

Puesto que una vez hice un carrusel de fotografías con un método parecido, recuerdo que tuve que hacer un array con las fotos, por lo que se me había ocurrido que tal vez necesite hacer una lista con los resultados de $row['comentario'] pero ¿cómo entonces puedo automatizar qué registro tiene que colocarme cada vinculo en el recuadro? ¿Hay alguna forma de enmendar mi código para que funcione sin complicarlo en exceso?

También he leído que esta forma de crear el efecto Lightbox es muy chapucera y poco práctica, y puede dejar de funcionar si el navegador tiene desactivado JavaScript, por lo que agradecería cualquier recomendación sobre otras maneras de crear el efecto Lightbox más eficaces y que puedan combinarse con mi código PHP, además de funcionar en la mayoría de navegadores y circunstancias.

Muchas gracias.
  #2 (permalink)  
Antiguo 12/11/2010, 18:52
 
Fecha de Ingreso: marzo-2004
Mensajes: 35
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Javascript/PHP: $row sólo devuelve primer registro

He estado probando algunas aplicaciones prefabricadas, sobre todo iBox (http://www.enthropia.com/labs/ibox), y me sigue pasando lo mismo: siempre carga el primer registro. Lo pongo por si fuera de utilidad a la hora de responderme.

Gracias.

Última edición por My_lady; 12/11/2010 a las 18:54 Razón: Vínculo
  #3 (permalink)  
Antiguo 13/11/2010, 09:12
 
Fecha de Ingreso: marzo-2004
Mensajes: 35
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Javascript/PHP: $row sólo devuelve primer registro

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:

Código nuevo:
Código:
$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>";
Código de la función:
Código:
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.
  #4 (permalink)  
Antiguo 13/11/2010, 10:25
 
Fecha de Ingreso: marzo-2004
Mensajes: 35
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Javascript/PHP: $row sólo devuelve primer registro

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

Código:
$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>";

Etiquetas: primer, registro, row
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:41.