Foros del Web » Creando para Internet » HTML »

[SOLUCIONADO] Diferentes Submit en un mismo formulario

Estas en el tema de Diferentes Submit en un mismo formulario en el foro de HTML en Foros del Web. Hola amigos. En primer lugar deciros que soy un novato de 51 años que me ha dado por aprender PHP. He de confesaros que voy ...
  #1 (permalink)  
Antiguo 21/03/2020, 12:33
 
Fecha de Ingreso: mayo-2004
Mensajes: 6
Antigüedad: 15 años, 10 meses
Puntos: 0
Diferentes Submit en un mismo formulario

Hola amigos.
En primer lugar deciros que soy un novato de 51 años que me ha dado por aprender PHP. He de confesaros que voy a dar la brasa que no veas, por lo que espero tengáis paciencia conmigo.

Estoy haciendo ejercicios de PHP y me he quedado atrancado en uno, en el que me he salido un poco del guion del ejercicio y no tengo la solucion a lo que pretendo.
Incluso he visto uan pregunta parecida a la mia, pero dicha solucion no me ha servido.
Os comento:
Quiero hacer un formulario en el que segun el boton de submit que se pulse, haga una accion u otra.
El formulario sería este:
Código:
<form action="04_calcula.php" method="GET">
            <label for="valor1"> Introduce un valor:</label><input type="text" name="valor1" id="valor1" size="10"><br>
            <label for="valor2"> Introduce un valor:</label><input type="text" name="valor2" id="valor2" size="10"><br>
            <input type="submit" value="sumar" name="sumar">
            <input type="submit" value="restar" name="restar">
            <input type="submit" value="multiplicar" name="multiplicar">
            <input type="submit" value="dividir" name="dividir">
        </form>
y el fragmento de código que recoge el formulario es este:
Código:
<?php
    if ($GET['submit'] = "sumar") {
        echo "Has presionado el boton sumar";
    } else if ($GET['submit'] = "restar") {
        echo "Has presionado el boton restar";
    } else if ($GET['submit'] = "multiplicar") {
        echo "has presionado el boton multiplicar";
    } else {
        echo "has presionado el boton dividir";
    }
El caso es que siempre me arroja el resultado de "has presionado el boton de sumar"

Lo pruebo de diferentes modos, pero cuando no me da un error, me da otro.

Por ejemplo, tambien he probado esto:
Código:
if ($_POST['sumar']) {
        echo "Has presionado el boton sumar";
    } else if ($_POST['restar']) {
        echo "Has presionado el boton restar";
    } else if ($_POST['multiplicar']) {
        echo "Has presionado el boton multiplicar";
    } else
        echo "Has presionado el boton dividir";
¿alguien sabría explicarme porqué no me funciona?

Gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 21/03/2020, 20:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.032
Antigüedad: 11 años, 7 meses
Puntos: 2206
Respuesta: Diferentes Submit en un mismo formulario

El problema es más PHP que HTML, el formulario es correcto, cada botón tiene el nombre que corresponde a la operación y en PHP vas a recibir solo el botón en el que se haya hecho clic, con el nombre que asignaste en "name".

Antes de entrar en materia y para evitar errores, en PHP debes verificar que el campo existe antes de realizar cualquier otra operación, usando la función isset()

Código PHP:
Ver original
  1. if(isset($_GET['sumar'])) {
  2.     echo 'El clic fue en el botón sumar';
  3. }

En este caso, no es necesario verificar el valor, porque el nombre solo existe cuando haces clic en el botón, pero sí debes tener en cuenta que las comparaciones se hacen con dos signos:

Código:
==  Igualdad
!= Desigualdad
Entonces:

Código PHP:
Ver original
  1. // Cuando usas un solo signo
  2. if($_GET['sumar'] = 'sumar') {
  3.     // Se analizará si se asignó el valor a la variable,
  4.     // Por lo general siempre será verdadero y no se analiza el resto de condiciones
  5. }
  6.  
  7. // Cuando usas dos signos
  8. if($_GET['sumar'] == 'sumar') {
  9.     // Se analizará si la variable contiene el valor comparado
  10. }

Espero no provocar más confusiones que soluciones, pero pregunta si te quedó alguna duda.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 21/03/2020, 23:52
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.602
Antigüedad: 18 años
Puntos: 1283
Respuesta: Diferentes Submit en un mismo formulario

Hola:

Te paso un viejo tutorial sobre formularios: El abc de los formularios; creo que se habla del tema... pero creo que es un planteamiento erróneo... en vez de usar distintos nombres podrías poner por ejemplo name="operador" y consultar ese valor:

if (isset($_GET["operador"]) $operar = $_GET["operador"];
switch ($operar) {
case "suma":
...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 26/03/2020, 11:30
 
Fecha de Ingreso: mayo-2004
Mensajes: 6
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Diferentes Submit en un mismo formulario

Muchas gracias amigos.
Se ve que no active el aviso por email de las respuestas, y me extrañaba que un foro con la calidad de gente de aquí no me respondiera nadie. Al entrar hoy he visto vuestras respuestas.

Triby: muchas gracias por tus explicaciones, pues me han servido para darme cuenta de varios puntos que no acababa de entender bien. De verdad que tu explicación ha sido genial, pero al ejecutarla continuaba dándome error.

Caricatos: Tienes razon. Debo indicar el mismo name del formulario a todos, y ejecutar la sentencia swith, aunque yo lo he hecho asi:

switch ($_GET['operador']) {
case 'sumar':
echo "Has presionado el boton sumar <br>";
break;
...

Muchas gracias maestros. Hoy he aprendido mucho con vosotros.



La zona horaria es GMT -6. Ahora son las 11:08.