New question

Question:

Date: 27-09-2020 12:20:40 (In Spanish)

Como solucionar error: Undefined index[Resolved]

Hola buenas tardes:
Estoy haciendo una solución simple de cálculo de la energía cinética con PHP. Y tengo dos inconvenientes:
1. En el formulario defino en los name de los campos "masa1" y "Velocidad1" pero cuando actualizo la página, en el campo de resultado me sale Undefined index: masa1 y Undefined index: velocidad1, no se como solucionarlo y lo único que se me ocurrió fue ocultarlos con error_reporting(0); De ante mano gracias por la ayuda.
Este es mi código:
<div class="w3_info">
				<h2>Cálculo de energía mecánica</h2>
				<p>Energía cinética</p>
				<form action="" method="post">
					<label>Ingrese masa</label>
					<div class="input-group">
						
						<input type="number" placeholder="Ingresa la masa en kilogramos" required="" name="masa1"> 
					</div>
					<label>Ingrese velocidad</label>
					<div class="input-group">
						
						<input type="number" placeholder="Ingrese la velocidad en metros por segundos" required="" name="velocidad1"> 
					</div>
					<label>Resultado</label>
					<div class="input-group">
					<?php

					error_reporting(0);
					$masa1 = $_POST['masa1'];
					$velocidad1 =$_POST['velocidad1'];
					$resultado1 = 0.5 *($masa1* pow($velocidad1,2));
					?>
						<div><?php echo $resultado1; ?></div>
					</div> 
										
						<button class="btn btn-danger btn-block" type="submit">Operar</button >                
				</form>
				
				
			</div>


2. El segundo inconveniente que tengo es que lo ideal sería hacer el calculo en una hoja php independiente y al darle "operar" el resultado saliera en el campo de la página uno pero no se como enviar ese dato al campo. Intenté hacer los siguiente pero no resulto:
el la pagina php independiente:
$masa1 = $_POST['masa1'];
$velocidad1 =$_POST['velocidad1'];
$resultado1 = 0.5 *($masa1* pow($velocidad1,2));


El la página inicial que recibe ese dato:
<?php include('fisica.php'); ?>
<div class="w3_info">
				<h2>Cálculo de energía mecánica</h2>
				<p>Energía cinética</p>
				<form action="fisica.php" method="post">
					<label>Ingrese masa</label>
					<div class="input-group">
						
						<input type="number" placeholder="Ingresa la masa en kilogramos" required="" name="masa1"> 
					</div>
					<label>Ingrese velocidad</label>
					<div class="input-group">
						
						<input type="number" placeholder="Ingrese la velocidad en metros por segundos" required="" name="velocidad1"> 
					</div>
					<label>Resultado</label>
					<div class="input-group">
<div><?php echo $resultado1; ?></div>

Tags: HTML - PHP - PHP Advanced - Question Votes: 0 - Answers: 2 - Views: 5 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 27-09-2020 16:18:08 Hola Jonathan

    El primer problema es que te falta la condición para verificar si en realidad te están llegando los datos por POST, y por esa razón te esta lanzando esos dos mensajes de error.

    Y tu segundo problema se resuelve con crear un nuevo archivo y colocarle el nombre que usted desee, yo por ejemplo lo llame "backend.php" y allí cree la logica del programa.

    Déjame decirte que aparte de todo, también le agregue un poquito de seguridad a tu programa contra los ataques de hacker he inyecciones de código.

    Déjame explicarte un poco lo que hice. Lo primero fue que cree un archivo nuevo llamado "backend.php" dentro de la raíz del proyecto, y allí agregue el siguiente código.

    <?php
    
    $error = '';
    
    if(isset($_POST['operar'])){
    
    	// Recibimos lo que nos llega por POST
    	$masa1 = $_POST['masa1'];
    	$velocidad1 = $_POST['velocidad1'];
    
    	// Limpiamos los datos
    	$masa1 = htmlspecialchars($masa1);
    	$masa1 = trim($masa1);
    	$masa1 = filter_var($masa1, FILTER_SANITIZE_STRING);
    
    	// Verificamos que nos esten llegando los datos
    	if(empty($masa1) || empty($velocidad1)){
    
    		$error = 'No puedes dejar campos vacios';
    
    	}
    
    	// Si todo esta bien, realizamos la operacion
    	if($error == ''){
    
    		$masa1 = $_POST['masa1'];
    		$velocidad1 =$_POST['velocidad1'];
    		$resultado1 = 0.5 *($masa1* pow($velocidad1,2));
    
    		return $resultado1;
    
    	}else{
    		return $error;
    	}
    
    
    
    }


    Y luego en tu archivo "index.php" modifique algunas cosas y llame el archivo backend.php desde una funcion llamada require_once() de PHP

    <?php require_once('backend.php') ?>
    <div class="w3_info">
        <h2>Cálculo de energía mecánica</h2>
        <p>Energía cinética</p>
        <form action="" method="post">
            <label>Ingrese masa</label>
            <div class="input-group">
                
                <input type="number" placeholder="Ingresa la masa en kilogramos" required="" name="masa1"> 
            </div>
            <label>Ingrese velocidad</label>
            <div class="input-group">
                
                <input type="number" placeholder="Ingrese la velocidad en metros por segundos" required="" name="velocidad1"> 
            </div>
            <label>Resultado</label>
            <div class="input-group">
                <!-- Mensaje de exito o error -->
                <div><?php if(isset($resultado1)) {echo "<span style='color: green'>".$resultado1."</span>";} ?></div>
                <div><?php if(isset($error)) {echo "<span style='color: red'>".$error."</span>";} ?></div>
            </div> 
                                
                <button name="operar" class="btn btn-danger btn-block" type="submit">Operar</button >                
        </form>
        
        
    </div>


    El código esta funcionando a la perfección, un saludo y hasta la proxima.
      Votes: 1 - Link answer
     
  • Date: 27-09-2020 16:49:00 Muchas gracias por tu tiempo y ayuda. Efectivamente me ha funcionado muy bien.   Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In