entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

como hacer que mi javaScript funcione con todos los checkbox

tengo un archivo .php en el que tengo la conexión con mi base de datos (mysql) y los script de java para que cuando pulse la checkbox me diga la fecha y la hora de cuando han pulsado el botón pero solamente me ha funcionado con el primero y no se por que es.

os dejo el código aquí:

<?php

    $conexion=mysqli_connect('localhost','root','Ravenna2022!','database1');
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>datos</title>
    <style>
        table {
            border-collapse: collapse;
            margin: 5px
        }

        td {
            border: 1px solid black;
            padding-left: 40px;
            padding-right: 40px;
            text-align: center;
        }

        .buton {
            margin: 5px;
            text-decoration: none;
            color: black;
            border: 1px solid black;
            border-radius: 2px;
            padding: 2px
        }
    </style>
</head>
<body>
    <a href="server.php" class="buton">DB server</a>
    <a href="local.php" class="buton">DB local</a>
    <br />
    <table>
        <tr>
            <td>ID</td>
            <td>Nombre</td>
            <td>Apellido</td>
            <td>teléfono</td>
            <td>email</td>
            <td>hecho</td>
            <td>fecha</td>
        </tr>
        <?php
            $sql1="SELECT * from prueba";
            $result1=mysqli_query($conexion,$sql1);
            while($mostrar1=mysqli_fetch_array($result1)){

         ?>
        <tr>
            <td><?php echo $mostrar1['ID']?></td>
            <td><?php echo $mostrar1['nombre']?></td>
            <td><?php echo $mostrar1['apellido']?></td>
            <td><?php echo $mostrar1['telefono']?></td>
            <td><?php echo $mostrar1['email']?></td>
            <td></td>
            <td><INPUT type="checkbox" id="miElementoCheckbox"></td>
            <td id="msg"></td>
        </tr>
        <script>
               var miCheckbox = document.getElementById("miElementoCheckbox");
               var msg = document.getElementById("msg");

            miCheckbox.addEventListener('click', function() {
              if(miCheckbox.checked) {
                var d = new Date();
                msg.innerText = [+d.getDate(),'/' +d.getMonth(),'/'+d.getFullYear(),'   '+d.getHours(),':'+d.getMinutes()];
              } else {
                msg.innerText = '';
              }
            });
          </script>
        <?php
        }
        ?>
        <tr>
            <td colspan="2">ID</td>
            <td colspan="3">nombre producto</td>
            <td colspan="2">precio</td>
        </tr>
        <?php
        $sql2="SELECT * from prueba1";
        $result2=mysqli_query($conexion,$sql2);
        while($mostrar2=mysqli_fetch_array($result2)){
         ?>
        <tr>
            <td colspan="2"><?php echo $mostrar2['ID']?></td>
            <td colspan="3"><?php echo $mostrar2['nombre_producto']?></td>
            <td colspan="2"><?php echo $mostrar2['precio']?></td>
        </tr>
        <?php
        }
        ?>
    </table>
</body>
</html>

gracias por ayudar no se nada de JavaScript ni de PHP

1 Respuesta

0voto

Leonardo-Tadei Puntos227300

Funciona con el primer checkbos solamente porque al estar generándolos en un bucle, todos tienen por ID "miElementoCheckbox", y los ID en un script no deben estar repetidos... y si lo están, el navegador usa solo el primero que aparece e ignora los demás.

Pasa lo mismo con "msg".

Cada checkbox y "msg" generado debe tener un ID único, lo que significa que vas a tener que poner el código que maneja la fecha en una función y hacer que cada llamado identifique al llamador, para saber en cuál "msg" mostrar la fecha.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta