PHP - Mostrar formulario al seleccionar una opción en select

 
Vista:
Imágen de perfil de yoclens
Val: 19
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Mostrar formulario al seleccionar una opción en select

Publicado por yoclens (20 intervenciones) el 10/03/2024 21:38:10
Hola buenas, tengo un problema estoy tratando de mostrar un formulario por medio de un select este select se carga por medio de los registros de mi bd el problema es que al consultar por medio de console.log el valor seleccionado es vacío.

anexo códigos:

Select
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class="field">
   <label class="label">Metodo de Pago</label>
   <div class="control">
       <div class="select">
          <select id="metodoPago" name="id_metodo_pago" onchange="mostrarFormulario()">
              <option value="" disabled selected>Seleccione Una Opción:</option>
                <?php
                  $consulta = $DB_con->query("SELECT * FROM metodo_pago ORDER BY id_metodo_pago");
                  while ($linea = $consulta->fetch(PDO::FETCH_ASSOC)) {
                ?>
                <option value="<?php echo $linea['id_metodo_pago'] ;?>"><?php echo $linea['metodo_pago'] ;?></option>
                <?php
                  }
                ?>
           </select>
        </div>
   </div>
</div>

Formulario
1
2
3
4
5
6
7
8
9
<form id="formEfectivo" style="display: none;">
        <label for="montoEfectivo">Monto en Efectivo:</label>
        <input type="text" id="montoEfectivo">
    </form>
 
    <form id="formTransferencia" style="display: none;">
        <label for="montoTransferencia">Monto en Transferencia:</label>
        <input type="text" id="montoTransferencia">
    </form>

Función

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
        function mostrarFormulario() {
            var metodoPago = document.getElementById("metodoPago");
            var opcionSeleccionada = metodoPago.options[metodoPago.selectedIndex].value;
            console.log("Opción seleccionada: " + opcionSeleccionada);
 
            if (opcionSeleccionada === "1") {
                document.getElementById("formEfectivo").style.display = "block";
                document.getElementById("formTransferencia").style.display = "none";
            } else if (opcionSeleccionada === "2") {
                document.getElementById("formEfectivo").style.display = "none";
                document.getElementById("formTransferencia").style.display = "block";
            }
        }
</script>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Oscar

Mostrar formulario al seleccionar una opción en select

Publicado por Oscar (1 intervención) el 11/03/2024 03:08:06
Tu código funciona, hace mucho tiempo no veía este 'spaghetti code' (con queries en el view) pues es recomendable usar un MVC pattern por una cuestión de buenas prácticas.

También es cuestionable esto:

1
2
var metodoPago = document.getElementById("metodoPago");
var opcionSeleccionada = metodoPago.options[metodoPago.selectedIndex].value;

pues basta con esto:
1
var metodoPago = document.getElementById("metodoPago").value;

deberías revisar el key que tu recordset devuelve, estás usando:
'id_metodo_pago'
tal vez es:
''metodo_pago_id'
eso explicaría que el log muestre un empty, pues los recordsets devuelven null que renderiza como empty cuando el key/column name no hace match durante el loop.

Hice un Codepen donde puedes ver el resultado:
https://codepen.io/oscaralderete/pen/wvZGrdB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de yoclens
Val: 19
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Mostrar formulario al seleccionar una opción en select

Publicado por yoclens (20 intervenciones) el 11/03/2024 04:21:45
Hola, gracias por tu aporte.
Te explico mi tabla metodo_pago: id_metodo_pago, metodo_pago. si hago en echo en mi select se me muestran los valores perfectamente en mi select, creo que el error esta en mi función mostrarFormulario, si hago el select normal sin ser llamado los registros con mi bd funciona perfectamente, ahora no entiendo cual es el error en mi función mostrarFormulario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar