Comunidad de diseño web y desarrollo en internet online

PHP 8 - Error en formulario

Citar            
MensajeEscrito el 06 May 2021 07:29 am
Hola, tengo el siguiente inconveniente con un formulario en PHP, es un ejercicio en el cuál un usuario dígita su nombre y la cantidad de boletos que desea adquirir, cada boleto tiene un costo el cual está en función de la fecha en que el boleto es comprado, cada día de la semana el costo del boleto cambia, en este ejercicio existen 2 categorías para la compra de boletos, las cuales son, "boletos para adultos" y "boletos para niños". El total del pago se determina realizando la operación siguiente: la cantidad de boletos que el usuario desea adquirir por (X) el costo del boleto.

El problema en este ejercicio es que lo estoy corriendo en php versión 8 usando XAMPP Server, al momento de enviar datos vacios, el formulario completo desaparece, este mismo ejercicio lo he probado en versión 7 de php usando MAMP Server y funciona.

Estaré muy agradecido si pudierán orientarme o proporcionarme documentación para poder subsanar este error, comparto el código que estoy usando el cuál he comentado en ciertas partes para que la lectura y comprensión del script sea lo más clara posible.

De antemano muchas gracias por dedicar su tiempo a leer esta duda.

Código PHP :

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title><?= '::Ejercicio 9A::'; ?></title>
</head>

<body>

   <?php
   
      error_reporting(0);
      
      /*
         CREACION DE VARIABLES PARA PROCESAR LOS DATOS SOLICITADOS POR MEDIO DEL FORMULARIO
         -----------------------------------------------------------------------------------------------------------------*/
      
      $comprador=$_REQUEST['txtCliente'];
      $cantidad_adulto=$_REQUEST['txtAdultos'];
      $cantidad_boleto_infante=$_REQUEST['txtInfantes'];
      
      $fecha=getdate(time());
      $hoy=$fecha['weekday'];
      $dia='';
      
      $costo_boleto_adulto=0;
      $costo_boleto_infante=0;
      $total_pago_adulto=0;
      $total_pago_infante=0;
      
      
      /*
         VALIDAMOS CAMPOS DEL FORMULARIO
         -----------------------------------------------------------------------------------------------------------------*/
      if(isset($_REQUEST['btnProcesarDatos'])){
         #Campo Cliente ($comprador)
         if(empty($comprador)){
            $msm_error_comprador='Ingresa un nombre';
         }else{
            if(is_numeric($comprador)){
               $msm_error_comprador='Ingresa solo letras';
            }else{
               if(strlen($comprador)>35){
                  $msm_error_comprador='Ingresa un nombre mas corto';
               }
            }
         }
         
         #Campo Boleto adulto ($cantidad_adulto)
         if(empty($cantidad_adulto)){
            $msm_error_adulto='Ingresa una cantidad';
         }else{
            if(!is_numeric($cantidad_adulto)){
               $msm_error_adulto='Ingresa solo numeros';
            }else{
               if(strlen($cantidad_adulto)>2 && is_numeric($cantidad_adulto)){
                  $msm_error_adulto='Ingresa una cantidad mas corta';
               }
            }
         }
         
         #Campo Boleto Infante ($cantidad_boleto_infante)
         if(empty($cantidad_boleto_infante)){
            $msm_error_infante='Ingresa una cantidad';
         }else{
            if(!is_numeric($cantidad_boleto_infante)){
               $msm_error_infante='Ingresa solo numeros';
            }else{
               if(strlen($cantidad_boleto_infante)>2 && is_numeric($cantidad_boleto_infante)){
                  $msm_error_infante='Ingresa una cantidad mas corta';
               }
            }
         }
      }
      
      /*
         DETERMINAR EL COSTO DEL BOLETO DE ACUERDO EL DIA
         -----------------------------------------------------------------------------------------------------------------*/
         switch($hoy){
            case('Monday'):
               $dia='Lunes';
               $costo_boleto_adulto=10;
               $costo_boleto_infante=5;
            break;
            
            case('Tuesday'):
               $dia='Martes';
               $costo_boleto_adulto=8;
               $costo_boleto_infante=4;
            break;
            
            case('Wednesday'):
               $dia='Miercoles';
               $costo_boleto_adulto=16;
               $costo_boleto_infante=8;
            break;
            
            case('Thursday'):
               $dia='Jueves';
               $costo_boleto_adulto=16;
               $costo_boleto_infante=8;
            break;
            
            case('Friday'):
               $dia='Viernes';
               $costo_boleto_adulto=16;
               $costo_boleto_infante=8;
            break;
            
            case('Saturday'):
               $dia='Sabado';
               $costo_boleto_adulto=50;
               $costo_boleto_infante=45;
            break;
            
            case('Sunday'):
               $dia='Domingo';
               $costo_boleto_adulto=50;
               $costo_boleto_infante=45;
            break;
         }
         
         #Determinar la cantidad total que se pagara
         $total_pago_adulto=($cantidad_adulto * $costo_boleto_adulto);
         $total_pago_infante=($cantidad_boleto_infante*$costo_boleto_infante);
   
   ?>

   <section>
      <form action="" method="post" name="frmEnviarDatos">
         <table>
            <tr>
               <td><label>Comprador</label></td>
               <td><input type="text" name="txtCliente" value="<?=$_REQUEST['txtCliente'];?>" /></td>
               <td><?php echo $msm_error_comprador; ?></td>
            </tr>
            
            <tr>
               <td><label>Fecha Actual</label></td>
               <td><input type="text" name="txtFecha" value="<?= date('d/m/Y'); ?>" /></td>
            </tr>
            
            <tr>
               <td><label>Entrada Adultos</label></td>
               <td><input type="text" name="txtAdultos" value="<?=$_REQUEST['txtAdultos'];?>" /></td>
               <td><?php echo $msm_error_adulto; ?></td>
            </tr>
            
            <tr>
               <td><label>Entrada Infantes</label></td>
               <td><input type="text" name="txtInfantes" value="<?=$_REQUEST['txtInfantes'];?>" /></td>
               <td><?php echo $msm_error_infante; ?></td>
            </tr>
            
            <tr>
               <td></td>
               <td><input type="submit" name="btnProcesarDatos" value="Enviar Datos" /></td>
            </tr>
         </table>
      </form>
   </section>
   
   <?php
   
      /*
         MOSTRAR LAS OPERACIONES SI LOS CAMPOS DEL FORMULARIO CUMPLEN LA SIGUIENTE CONDICION
         -----------------------------------------------------------------------------------------------------------------*/
   
      if   (   isset($_REQUEST['btnProcesarDatos']) && !empty($comprador) 
            && !is_numeric($comprador) && strlen($comprador)<=35 
            && !empty($cantidad_adulto) && is_numeric($cantidad_adulto) 
            && strlen($cantidad_adulto)<=2 && !empty($cantidad_boleto_infante) 
            && is_numeric($cantidad_boleto_infante) && strlen($cantidad_boleto_infante)<=2   
         ){
   
   ?>
   <section>
      <table>
            <tr>
               <td><label>Comprador</label></td>
               <td>
                  <?php 
                     
                     if(isset($_POST['btnProcesarDatos'])){
                        (   !empty($comprador) && !is_numeric($comprador) 
                           && strlen($comprador)<=35 && !empty($cantidad_adulto) 
                           && is_numeric($cantidad_adulto) && strlen($cantidad_adulto)<=2 
                           && !empty($cantidad_boleto_infante) && is_numeric($cantidad_boleto_infante) 
                           && strlen($cantidad_boleto_infante)<=2) 
                           ? print($comprador)
                           : print('No hay datos que mostrar'
                        );
                     }
                  
                  ?>
               </td>
            </tr>
            
            <tr>
               <td><label>Costo por Adulto</label></td>
               <td>
                  <?php 
                  
                     if(isset($_POST['btnProcesarDatos'])){
                        (   !empty($comprador) && !is_numeric($comprador) 
                           && strlen($comprador)<=35 && !empty($cantidad_adulto) 
                           && is_numeric($cantidad_adulto) && strlen($cantidad_adulto)<=2 
                           && !empty($cantidad_boleto_infante) && is_numeric($cantidad_boleto_infante) 
                           && strlen($cantidad_boleto_infante)<=2) 
                           ? printf("%.2f",$costo_boleto_adulto)
                           : print('No hay datos que mostrar'
                        );
                     }
                  
                  ?>
               </td>
            </tr>
            
            <tr>
               <td><label>Costo por Infante</label></td>
               <td>
                  <?php 
                  
                     if(isset($_POST['btnProcesarDatos'])){
                        (   !empty($comprador) && !is_numeric($comprador) 
                           && strlen($comprador)<=35 && !empty($cantidad_adulto) 
                           && is_numeric($cantidad_adulto) && strlen($cantidad_adulto)<=2 
                           && !empty($cantidad_boleto_infante) && is_numeric($cantidad_boleto_infante) 
                           && strlen($cantidad_boleto_infante)<=2) 
                           ? printf("%.2f",$costo_boleto_infante)
                           : print('No hay datos que mostrar'
                        );
                     }
                  
                  ?>
               </td>
            </tr>
            
            <tr>
               <td><label>Dia de promocion</label></td>
               <td>
                  <?php 
                  
                     if(isset($_POST['btnProcesarDatos'])){
                        (   !empty($comprador) && !is_numeric($comprador) 
                           && strlen($comprador)<=35 && !empty($cantidad_adulto) 
                           && is_numeric($cantidad_adulto) && strlen($cantidad_adulto)<=2 
                           && !empty($cantidad_boleto_infante) && is_numeric($cantidad_boleto_infante) 
                           && strlen($cantidad_boleto_infante)<=2) 
                           ? print($dia)
                           : print('No hay datos que mostrar'
                        );
                     }
                  
                  ?>
               </td>
            </tr>
            
            <tr>
               <td><label>Total a pagar</label></td>
               <td>
                  <?php 
                  
                     if(isset($_POST['btnProcesarDatos'])){
                        (   !empty($comprador) && !is_numeric($comprador) 
                           && strlen($comprador)<=35 && !empty($cantidad_adulto) 
                           && is_numeric($cantidad_adulto) && strlen($cantidad_adulto)<=2 
                           && !empty($cantidad_boleto_infante) && is_numeric($cantidad_boleto_infante) 
                           && strlen($cantidad_boleto_infante)<=2) 
                           ? printf("%.2f",($total_pago_adulto+$total_pago_infante))
                           : print('No hay datos que mostrar'
                        );
                     }
                  
                  ?>
               </td>
            </tr>
         </table>
   </section>
   <?php
      
      }
   
   ?>
</body>
</html>

Por Corona E

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 May 2021 07:44 am
Comparto el script por si desean descargar el contenido.

https://mega.nz/folder/mpY1nAIK#PGhlsvJoKqeaNogUobHHfg

Por Corona E

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 May 2021 12:42 pm
Debe haber un error por atrás... ¿viste los logs?

Por mchojrin

36 de clabLevel



Genero:Masculino  

Ayudo desarrolladores PHP a acelerar su llegada a Sr.

chrome

   Página 1 de 1

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.