Actividad de aprendizaje 4 - Evidencia: Taller “Uso de formularios para transferencia”


Se crea el archivo index.php, que es la página a la que accede el usuario.

<!DOCTYPE html>
<html>

<head>
    <title>Actividad Semana 4</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <style>
            .tg  {border-collapse:collapse;border-spacing:0;border-color:#999;}
            .tg td{font-family:Arial, sans-serif;font-size:14px;padding:5px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#999;color:#444;background-color:#F7FDFA;}
            .tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:bold;padding:5px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#999;color:#fff;background-color:#26ADE4;}
        </style>
</head>
<?php

        /*
        Gabriel Rodríguez
        DESARROLLO WEB CON PHP(1229212)
        Evidencia: Taller “Uso de formularios para transferencia”
        */
//Se requieren las funciones para imprimir el escenario y para enviar las acciones del usuario
require("escenario.php");
require("accion.php");
//Se ejecuta el if cuando el usuario envie la informacion del formulario
if(isset($_REQUEST["Enviar"])){
                //Se captura la información enviada del formulario
                $fila = $_POST['fila'];
                $puesto= $_POST['puesto'];
                $accion= $_POST['accion'];
                $StringEscenario=$_POST['ListEscenario'];
                //El String generado en el input oculto se convierte en un Array
                $count=0;
                for($i=0;$i<5;$i++){
                    for($j=0;$j<5;$j++){
                        $count=5*$i+$j;
                        //Cada captura cada elemento del Array extrayendo dicho elemento del String
                        $ListEscenario[$i][$j]=substr($StringEscenario,$count,1);
                    }
                    $count=0;
                }
        //Se devuelve el Array con la información modificada por el usuario
        $ListEscenario=Accion($fila,$puesto,$accion,$ListEscenario);
        //Se ejecuta la funcion para mostrar el Escenario, dado el Array modificado
        Escenario($ListEscenario);
}
//Se ejecuta el else if cuando el usario borra la informacion del formulario y cuando se carga la página
else if(isset($_REQUEST["Reset"]) || !isset($_REQUEST["Enviar"])){
    $ListEscenario=array(array("L","L","L","L","L"),array("L","L","L","L","L"),array("L","L","L","L","L"),array("L","L","L","L","L"),array("L","L","L","L","L"));
    Escenario($ListEscenario);
}
?>
    
<body>
    <table style="margin:auto;">
        <form method="post">
            <!-- Se separa el array $ListEscenario en un String y de oculta-->
            <input type="text" name="ListEscenario" value="<?php foreach ($ListEscenario as $fila) {foreach ($fila as $puesto){echo $puesto;}}?>" style="display:none" />
            <!-- Se crean los inputs que van a capturar la información introducida por el usario y las acciones-->
            <tr>
                <td>Fila: </td>
                <td>
                    <!-- Se muesta la lista con las opciones posibles para la fila-->
                    <select name="fila">
                        <option size="4">1</option>
                        <option>2</option>
                        <option>3</option>
                        <option>4</option>
                        <option>5</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>Puesto: </td>
                <td>
                    <!-- Se muesta la lista con las opciones posibles para la puesto-->
                    <select name="puesto">
                        <option size="4">1</option>
                        <option size="4">2</option>
                        <option size="4">3</option>
                        <option size="4">4</option>
                        <option size="4">5</option>
                    </select>
                </td>
            </tr>
            <!-- Se muestra el radio button con las acciones posibles-->
            <tr>
                <td>Reservar: </td>
                <td>
                    <input type="radio" name="accion" value="R" />
                </td>
            </tr>
            <tr>
                <td>Comprar: </td>
                <td>
                    <input type="radio" name="accion" value="V" />
                </td>
            </tr>
            <tr>
                <td>Liberar: </td>
                <td>
                    <input type="radio" name="accion" value="L" checked="checked" />
                </td>
            </tr>
            <tr>
                <!-- Se muestran los botones con las acciones de enviar la información o borrar toda la informacion ingresada-->
                <td>
                    <input type="submit" value="Enviar" name="Enviar" />
                </td>
                <td>
                    <input type="submit" value="Borrar" name="Reset" />
                </td>
            </tr>
        </form>
    </table>
</body>

Se crea la función responsable de crear las tabla con la información del Escenario, es decir, con las filas y los puestos disponibles, reservados o comprados, este caso la biblioteca que contiene la función se llama "escenario.php"

<?php
function Escenario($ListEscenario){
    //Se crea la tabla y sus encabezados
echo "<table class='tg' border='1' style='margin:auto;'>";
            echo "<tr>";
            echo "<th colspan='6'>Escenario</th>";
            echo "<tr>";
                /*-- Se crean los encabezados de las tabla*/
                echo "<th></th>
                <th>1</th>
                <th>2</th>
                <th>3</th>
                <th>4</th> 
                <th>5</th>
            </tr>";
    //Se recorre el Array mediante con un foreach y se imprime cada fila y columna de la tabla
$i=1;
foreach ($ListEscenario as $fila) {
    echo "<tr>";
       echo "<th>";
       echo $i;
       echo "</th>";
    foreach ($fila as $silla) {
        echo "<td>";
        echo $silla;
        echo "</td>";
    }
    echo "</tr>";
    $i++;
    }
echo "</table>";
}
?>

Se crea la función responsable de procesar las acciones del usuario, al liberar, reservar o comprar un puesto ubicado en determinada fila, la biblioteca que contiene la acción se llamará "accion.php"

<?php
function Accion($fila,$puesto,$accion,$ListEscenario){
        //Se evalua la opción del usuario dependiendo de lo contenido en el Array
        //Si el puesto elegido por el usuario esta libre se modifica el Array con la acción elegida
        if($ListEscenario[$fila-1][$puesto-1]=="L"){
            $ListEscenario[$fila-1][$puesto-1]=$accion;
        }
        //Si el puesto elegido por el usuario esta vendido se muestra una alerta con notificando en cada caso lo sucedido
        else if($ListEscenario[$fila-1][$puesto-1]=="V"){
            echo "<script>alert('El puesto ya esta vendido";
            if($accion=="L"){echo " no se puede liberar";}
            else if($accion=="R"){echo " no se puede reservar";}
            else if($accion=="V"){echo " no se puede volver a vender";}
            echo "')";
            echo "</script>'";
        }
        //Si el puesto elegido por el usuario esta reservado y la accion es reservar se muestra una alerta indicando que ya esta reservado
        else if($ListEscenario[$fila-1][$puesto-1]=="R" && $accion=="R"){
            echo "<script>
            alert('El puesto ya esta Reservado');
            </script>'";
        }
        //Si el puesto esta reservado y la accion es diferente a reservar se modifica el array con la accion elegida por el usuario
        else if($ListEscenario[$fila-1][$puesto-1]=="R" && $accion!="R"){
            $ListEscenario[$fila-1][$puesto-1]=$accion;
        }
        //Se retorna el Array modificado
        return $ListEscenario;
}
?>

11 comentarios:

  1. ¿En qué línea le da error?, ¿Qué versión de PHP usa?, ¿Si esta guardando los archivos de las funciones en la misma carpeta?

    ResponderBorrar
  2. Hola buenas tardes he pegado el codigo y no hace nada que pena la molestia no se por que sera??

    ResponderBorrar
  3. No te sale nada porque debes poner en el form method="post" la propiedad name ='con el nombre de tu archivo en este caso index.php'

    ResponderBorrar
  4. Excelente trabajo, me estuve quemando las neuronas desarrollando este ejercicio, y gaste muchas horas haciéndolo como creía, lo tuve a un pelo, pero al ver que eran mas de 500 lineas de código, me dije, creo que algo esta mal. lo único por agregar, es que las funciones se pueden hacer en un mismo archivo, para que 2?

    ResponderBorrar
  5. Muy buen trabajo...muchas gracias¡ Me fue de gran ayuda¡ Bendiciones¡¡¡

    ResponderBorrar