New question

Question:

Date: 18-04-2018 05:01:21 (In Spanish)

Uso de funciones PHP en formularios HTML[Resolved]

Buenos días,

Estoy iniciando el proceso de aprendizaje de PHP y en un ejercicio que estoy trabajando se requiere crear una una función para las 4 operaciones matemáticas (suma, resta, multiplicación, y división) de dos números que se ingresen mediante cajas de texto. La operación matemática se seleccionará por medio de una lista desplegable y con un botón de acción se realizará el cálculo para mostrar el resultado con la instrucción "echo". La función debe estar en un segundo archivo. Les agradezco cualquier explicación que me puedan dar.

El inconveniente es que no sé como puedo capturar el valor ingresado en las dos cajas de texto para que sean los argumentos que entren en la función. A continuación dejo el código que he realizado para ambos archivos:

1) Código del formulario
<!DOCTYPE html>
<!--
Crear un formulario que contenga dos cajas de texto, una lista desplegable
y un botón que permita llamar la función para calcular la operación
matemática seleccionada.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <form method="post" action="biblioteca.php">
            <label>N&uacute;mero 1</label>
            <input type ="text" size="5" name="num1" required>
            <br><br>
            <label>N&uacute;mero 2</label>
            <input type="text" size="5" name="num2" required>
            <br><br>
            Seleccione la operacion matem&aacute;tica
            <select name="opciones">
                <option>S</option>
                <option>R</option>
                <option>M</option>
                <option>D</option>
            </select><br><br>
            <input type="submit" name="calcular" value="Calcular">
        </form>  
 
        <?php
            
        //Incluir el archivo que contiene la función
            require_once './biblioteca.php';
        
           //Recibir los datos del formulario en variables
            $valor1 = filter_input(INPUT_POST,'num1'); 
            $valor2 = filter_input(INPUT_POST,'num2'); 
            $opciones = filter_input(INPUT_POST,'opciones');
            
            //Si el botón se oprime entonces llamar la función
            if (!NULL== filter_input(INPUT_POST,'calcular')){
                echo operaciones($valor1,$valor2,$opciones);
            }
        ?>
    </body>
</html>
 


2) Código de la función

<?php

//Creamos la función para realizar las operaciones básicas 
function operaciones($num_1,$num_2,$operacion){
    
    if ($operacion=="S"){
        echo "la suma de $num_1 y $num_2 es: ";
        return $num_1+$num_2;
        
    }elseif ($operacion=="R"){
        echo "la resta de $num_1 y $num_2 es: ";
        return $num_1-$num_2;
       
    }elseif ($operacion=="M"){
        echo "la multiplicación de $num_1 por $num_2 es: ";
        return $num_1*$num_2;
        
    }elseif($operacion=="D" and $num_2!=0){
        echo "la división de $num_1 entre $num_2 es: ";
        return $num_1/$num_2;
    }
    //Si no se puede realizar la operación seleccionada mostrar
    return "No se puede realizar la operación seleccionada";
}

Nota: también quisiera saber por qué en Netbeans no se puede usar $_POST[' '] porque aparece este mensaje:
[do not access superglobal $_post array directly.
Tags: HTML - Netbeans - PHP - Question - Start in Programming Votes: 0 - Answers: 5 - Views: 18 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 18-04-2018 15:18:59 Podrias hacerlo con un case.

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Operaciones basicas</title>
    </head>
    <body>
    		
    		<form action="operacion.php" method="POST">
    			<select name="operacion">
    				<option value="+">S</option>
    				<option value="-">R</option>
    				<option value="*">M</option>
    				<option value="/">D</option>
    			</select>
    			<br>
    			<input type="text" name="num1">
    			<br>
    			<input type="text" name="num2">
    			<br>
    			<button type="submit">Calcular</button>
    		</form>
    </body>
    </html>


    <?php 
    $num1=$_POST["num1"];
    $num2=$_POST["num2"];
    
    switch ($_POST["operacion"]) {
    	case '+':
    		echo $num1+$num2;
    		break;
    	case '-':
    		echo $num1-$num2;
    		break;
    	case '*':
    		echo $num1*$num2;
    		break;
    	case '/':
    		echo $num1/$num2;
    		break;
    
    } 
      Votes: 1 - Link answer
     
  • Date: 18-04-2018 15:49:50 Gracias por tu respuesta Capzzula, es totalmente válido. Solamente que me gustaría saber si es posible la forma en que se plantea, es decir, por medio de una función con argumentos. De lo contrario lo haría de una forma como la que mencionaste. Gracias.   Votes: 0 - Link answer
     
  • Date: 18-04-2018 15:55:12 Hola
    Para que sea mas legible tu codigo utiliza los BBCode PHP encerrando al codigo.

    Ahora en tu proyecto en particular el problema que tienes está en el formulario en la línea siguiente
    <form method="post" action="biblioteca.php">
    deberia ser
    <form method="post" action=""> o <form method="post">
    No debe tener el biblioteca.php

    Sucede que cuando se envía el formulario se abre directamente el script biblioteca.php
    si observas en la url del navegador veras algo asi:


    uso de action
    En enviar, envía el formulario-datos en un archivo denominado "biblioteca.php" (para procesar los datos enviado por el formulario)

    Este atributo action define el lugar donde los datos se envían. Su valor debe ser una dirección URL válida. Si no se proporciona este atributo, los datos serán enviados a la dirección URL de la página que contiene el formulario.

    Espero que me hayas podido entender

    Saludos
      Votes: 1 - Link answer
     
  • Date: 18-04-2018 16:23:38
    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>Operaciones basicas</title>
    	<?php 
    		require_once "funcion.php";
    		require_once "operacion.php";
    	 ?>
    </head>
    <body>
    		
    		<form  method="POST">
    			<select name="operacion">
    				<option value="+">S</option>
    				<option value="-">R</option>
    				<option value="*">M</option>
    				<option value="/">D</option>
    			</select>
    			<br>
    			<input type="text" name="num1">
    			<br>
    			<input type="text" name="num2">
    			<br>
    			<?php 
    				$operar=new Funcion();
    				$operar->operarFunction();
    			 ?>
    			<button type="submit">Calcular</button>
    		</form>
    </body>
    </html>


    <?php 
    	
    	
    
    	class Funcion
    	{
    		
    		public function operarFunction()
    		{
    			
    			if (isset($_POST["num1"])) {
    				
    				$num1=$_POST["num1"];
    				$num2=$_POST["num2"];
    
    				$operacion=$_POST["operacion"];	
    
    
    				$respuesta=OpercaionesBasicas::operaciones($num1,$num2,$operacion);
    
    				if ($respuesta) {
    					echo '<strong>'.$respuesta.'</strong>';
    				}else{
    					echo 'error';
    				}
    
    
    			}
    	
    		}
    	}
    
     ?>


    <?php 
    class OpercaionesBasicas
    {
    	public function operaciones($num1,$num2,$operacion){
    
    
    			switch ($operacion) {
    				case '+':
    						
    						return$respuesta=$num1+$num2;
    
    					break;
    				case '-':
    						
    						return$respuesta=$num1-$num2;
    
    					break;
    				case '*':
    						
    						return$respuesta=$num1*$num2;
    
    					break;
    				case '/':
    					 	
    					 	return$respuesta=$num1/$num2;
    
    					break;
    			}
    	}
    }


    Sebastian, ahi tienes algo que te puede servir.

    captura

      Votes: 0 - Link answer
     
  • Date: 18-04-2018 16:29:43 Saludos Walter, realmente realicé la corrección y el código funciona bien. Te agradezco mucho la respuesta. Sin embargo, no comprendí muy bien lo del atributo action.

    Gracias por tu aporte Capzzula, revisaré el código para ir aprendiendo su estructura.
      Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In
 
frjcbbae garagebible.com