Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] popup ids en javascript con php

Estas en el tema de popup ids en javascript con php en el foro de PHP en Foros del Web. Buenos Dias Tengo un inconveniente y no le he dado con el chiste creo que es una tontería que estoy pasando por alto pero ya ...
  #1 (permalink)  
Antiguo 14/04/2015, 08:01
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
popup ids en javascript con php

Buenos Dias
Tengo un inconveniente y no le he dado con el chiste creo que es una tontería que estoy pasando por alto pero ya revise e intente de diferentes formas y no he podido. agradezco la ayuda que me pueden brindar.

Yo consulto una tabla de capacitaciones y me genera todas las capacitaciones necesito que al dar clic en el nombre de la capacitación muestre la información de esa capacitación en un popup, pero cuando realizo esto en javascript solo me funciona para primera capacitación ya para el resto de las capacitaciones no me abre el popup

Lo que estoy haciendo aqui es por cada resultado me muestre un popup, lo que yo habia puesto es el id+id de mi tabla para identificar el popup

Código PHP:
<?php
 $sqlCapa 
'select * from capacitaciones';
            
$ejesqlCapa mysqli_query($con$sqlCapa) or die('Error en la consulta de la capacitacion ' mysqli_error($con));
            
            while (
$rows mysqli_fetch_array($ejesqlCapa)) {
                
?>
            <input type="hidden" value="<?php echo $rows['idCapacitacion'?>" id="idtxt"/>
                <div id="header2" style="background-image: url(<?php echo $rows['imagen']; ?>) ;">
                    <a href="#" id="open<?php echo $rows['idCapacitacion'?>" class="nombreCap"><br>
                        <?php echo utf8_decode($rows['nomCapacitacion']); ?>
                    </a>
                </div>
                <div id="popup<?php echo $rows['idCapacitacion'?>" style="display: none;">
                    <div class="content-popup">
                        <div class="close<?php echo $rows['idCapacitacion'?>"><a href="#" id="close"><img src="images/close.png"/></a></div>
                        <div>
                            <?php
                            
echo '<span id="descCapa">Descripcion: <br>' utf8_decode($rows['descripcion']) . '</span><br><br>';
                            echo 
'<span id="descCapa">Responsable: <br>' $rows['responsableCapa'] . '</span><br><br>';
                            echo 
'<span id="descCapa">Fecha - Hora: <br>' $rows['fechaCapacitacion'] . ' - ' $rows['horaCapacitacion'] . '</span><br>';
                            
?>
                        </div>
                    </div>
                </div>
                <?php
            
}
y en la parte del javascript resivo el valor del campo de texto y lo concateno con el id dell popup

Código Javascript:
Ver original
  1. $(document).ready(function () {
  2.     var id = $('#idtxt').val();
  3.     if (id != '') {
  4.         $('#open' + id).click(function () {
  5.             $('#popup' + id).fadeIn('slow');
  6.             $('body').css('opacity', '0.9');
  7. //            return false;
  8.             alert('valor de ' + id + 'if');
  9.         });
  10.  
  11.         $('#popup' + id).mouseleave(function () {
  12.             $('#popup' + id).fadeOut('slow');
  13.             $('body').css('opacity', '1');
  14.             return false;
  15.         });
  16.  
  17.         $('#close' + id).click(function () {
  18.             $('#popup' + id).fadeOut('slow');
  19.             $('body').css('opacity', '1');
  20.             return false;
  21.         });
  22.     } else {
  23.         alert('no tiene ' + idv + 'else');
  24.     }
  25. });

gracias por la ayuda que me puedan brindar
  #2 (permalink)  
Antiguo 14/04/2015, 08:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: popup ids en javascript con php

El problema más evidente es que repites los mismos ID's por cada registro dentro del while, y hecho así jamás funcionará de otro modo.

Debes entender que los ID's deben ser únicos, y al parecer repites muchas veces los mismos, ese es tu principal error.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/04/2015, 09:18
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: popup ids en javascript con php

Gracias por tu respuesta pero lo que pasa es que cada bloque tiene el mismo id de la base de datos pero id del elemento es diferente ejemplo

Código PHP:

//Ejemplo 
<a href="#" id="open1" class="nombreCap"></a>
<div id="popup1"></div>
<div class="close1"></div>

<a href="#" id="open<?php echo $rows['idCapacitacion'?>" class="nombreCap"></a> // div principal cuando le de clic me debe buscar popup que muestra informacion
<div id="popup<?php echo $rows['idCapacitacion'?>" ></div> // este el popup en este muestra la informacion del  div anterior
<div class="close<?php echo $rows['idCapacitacion'?>"></div> // y este cierra el div que contiene la informacion.

asi por cada uno de los registros que devuelve la base de datos, pero solo me funciona para el primer resultado
  #4 (permalink)  
Antiguo 14/04/2015, 09:24
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: popup ids en javascript con php

¿Y el #idtxt y los #descCapa qué?

Entiende que tu script usa #idtxt pero como lo tienes repetido, bueno, creo que ya entiendes.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 14/04/2015, 09:30
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: popup ids en javascript con php

Lo que pasa es que el campo de texto idtxt vendría siendo un arreglo por que me va a contener 1,2,3 y así sucesivamente va a tener muchos valores como le puedo pasar este a javascript para ahí si empezar a recorrer cada posición pero desde javascript
  #6 (permalink)  
Antiguo 14/04/2015, 09:33
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: popup ids en javascript con php

#idtxt contiene los id's de la consulta pero esto vendria siendo un arreglo necesitaria procesar ese arreglo en el javascript

#idtxt en el value va tener 1,2,3,4 .....
  #7 (permalink)  
Antiguo 14/04/2015, 09:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: popup ids en javascript con php

Cita:
Iniciado por JeMaGa Ver Mensaje
#idtxt contiene los id's de la consulta pero esto vendria siendo un arreglo necesitaria procesar ese arreglo en el javascript

#idtxt en el value va tener 1,2,3,4 .....
Por eso te lo digo, estás repitiendo dicho ID tantas veces como registros tengas en el while.

¿Qué cosa es la que no entiendes?

Es obvio que mientras repitas dicho ID tu código de Javascript no funcionará, porque al repetir un ID no puedes esperar a obtener todos los elementos con el mismo ID.

Pensé que eso ya lo tenías claro.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 14/04/2015, 09:47
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: popup ids en javascript con php

Por eso estoy manejando id's diferentes por regisro devuelto

iria asi primer registro devuelto

#idtxt ---> Valor del campo es 1
<a href="#" id="open1" class="nombreCap"></a> --> el id del <a href> es open1
<div id="popup1"></div> --> el id del primer <div> es popup1
<div class="close1"></div> --> el id del segundo <div> es close1

---------- iria asi segundo registro devuelto

#idtxt ---> Valor del campo es 2
<a href="#" id="open2" class="nombreCap"></a> --> el id del <a href> es open2
<div id="popup2"></div> --> el id del primer <div> es popup2
<div class="close2"></div> --> el id del segundo <div> es close2

y asi sucesivamente
  #9 (permalink)  
Antiguo 14/04/2015, 09:49
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: popup ids en javascript con php

mi idea es pasar todos los valores que contenga #idtxt a javascript para así poderlo procesar
  #10 (permalink)  
Antiguo 14/04/2015, 09:56
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: popup ids en javascript con php

o lo puedo plantear de otra forma, por que lo que yo necesito es que

al dar clic en el primer <a href> que tiene como id-->open1, abra la informacion del <div> con id-->popup1

al dar clic en el segundo <a href> que tiene como id-->open2, abra la informacion del <div> con id-->popup2

al dar clic en el tercer <a href> que tiene como id-->open3, abra la informacion del <div> con id-->popup3

todo esto lo genera un while de php, pero entonces nose me ocurre de que otra foorma puedo hacer esto
  #11 (permalink)  
Antiguo 14/04/2015, 10:39
Avatar de JeMaGa  
Fecha de Ingreso: julio-2011
Ubicación: Bogota
Mensajes: 430
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: popup ids en javascript con php

Listo lo solucione creo que el problema ni siquiera era de php lo esta haciendo mal en el javascript me estaba complicando mucho la vida

en el php lo que hice fue pasar un onclick a una funcion que recibía como parámetro el idCapacitacion

y el el javascript si lo procesaba

Código PHP:
<a href="#" id="open<?php echo $rows['idCapacitacion'?>" onclick="abrir(<?php echo $rows['idCapacitacion'?>)"></a>
y en el javascript

Código Javascript:
Ver original
  1. function abrir(tipo) {
  2.     $('#popup' + tipo).fadeIn('slow');
  3.     $('body').css('opacity', '0.9');
  4.     return false;
  5. }
  6.  
  7. function cerrar(tipo) {
  8.     $('#close' + tipo).click(function () {
  9.         $('#popup' + tipo).fadeOut('slow');
  10.         $('body').css('opacity', '1');
  11.         return false;
  12.     });
  13. }
  #12 (permalink)  
Antiguo 14/04/2015, 11:12
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: popup ids en javascript con php

Podrias usar algo asi:
Código PHP:
Ver original
  1. <?php
  2.     $resultado = mysqli_query($con, "select * from capacitaciones")
  3.         or die("Error en la consulta de la capacitacion " . mysqli_error($con));
  4.  
  5.     while($registro = mysqli_fetch_array($resultado))
  6.     {
  7.         echo "<div class=\"header2\" style=\"background-image: url({$registro['imagen']});\">
  8.                <a href=\"#\" class=\"nombreCap open_popup\" data-info=\"".str_replace('"', '\\"', json_encode($registro))."\">
  9.                    <br>".utf8_decode($registro['nomCapacitacion'])."
  10.                </a>
  11.              </div>";
  12.     }
  13. ?>
  14.     <div id="popup_info" style="display: none;">
  15.         <div class="content-popup">
  16.             <div class="close">
  17.                 <a href="#">
  18.                     <img src="images/close.png"/>
  19.                 </a>
  20.             </div>
  21.             <div>
  22.                 <div class="descCapa">
  23.                     Id:
  24.                     <div id="info_popup_idCapacitacion"></div>
  25.                 </div>
  26.                 <div class="descCapa">
  27.                     Descripcion:
  28.                     <div id="info_popup_descripcion"></div>
  29.                 </div>
  30.                 <div class="descCapa">
  31.                     Responsable:
  32.                     <div id="info_popup_responsableCapa"></div>
  33.                 </div>
  34.                 <div class="descCapa">
  35.                     Fecha - Hora:
  36.                     <div>
  37.                         <span id="info_popup_fechaCapacitacion"> - <span id="info_popup_horaCapacitacion">
  38.                     </div>
  39.                 </div>
  40.             </div>
  41.         </div>
  42.     </div>
  43.     <script>
  44.         $(document).ready(function () {
  45.             $(".open_popup").click(function () {
  46.                 $("#popup_info").fadeIn('slow');
  47.                 $("body").css('opacity', '0.9');
  48.                 var data_info = JSON.parse($(this).data("info"));
  49.                 for(var prop in data_info)
  50.                     $("#popup_info #info_popup_"+prop).html(data_info[prop]);
  51.             });
  52.    
  53.             var close_popup = function () {
  54.                 $("#popup_info").fadeOut('slow');
  55.                 $("body").css('opacity', '1');
  56.                 return false;
  57.             };
  58.             $(".close").click(close_popup);
  59.             $("#popup_info").mouseleave(close_popup);
  60.         });
  61.     </script>

si quieres mostrar mas datos en el popup solo tienes que agregar los id correspondientes y javascript los completara automaticamente.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #13 (permalink)  
Antiguo 14/04/2015, 11:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: popup ids en javascript con php

Cita:
Listo lo solucione creo que el problema ni siquiera era de php lo esta haciendo mal en el javascript me estaba complicando mucho la vida
Totalmente de acuerdo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: fecha, ids, javascript, mysql, popup, select, sql, tabla
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 06:39.