Autor Tema: PhP. Ejemplo uso sesiones y variables de sesión session_start var_dump($_SESSION  (Leído 2498 veces)

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Primero pondré el enunciado, es un poco largo:

1.   Realizar una aplicación que simule el funcionamiento de un parking que dispone de las siguientes plazas: 14 para coches pequeños y 10 para coches grandes. Usa dos arrays para representar el parking. Las posiciones de los arrays representarán las plazas, y almacenarán información de si la plaza está ocupada o no (puedes usar un valor numérico, como 0 para plaza libre, 1 para plaza ocupada).
Los coches se aparcarán de la siguiente forma: cuando entra en el parking, se identifica al coche como grande o pequeño. Los coches grandes aparcan en la primera plaza grande que encuentren. En cambio, los coches pequeños aparcaran en la primera plaza pequeña que encuentren, pero, de no encontrar ninguna, intentarán aparcar en la primera plaza grande libre que vean.
La aplicación tendrás las siguientes páginas:
•   Página inicial donde se mostrarán las siguientes opciones:
o   Aparcar coche.
o   Retirar coche.
o   Ver estado del parking.
Cada una de las opciones anteriores nos llevará a una página donde se ejecutarán las operaciones necesarias para llevar a cabo la opción seleccionada por el usuario. Éstas se detallan a continuación.
•   Aparcar coche: mediante un formulario se indicará si el coche es grande o pequeño. A continuación se procederá a aparcar usando el mecanismo que se ha explicado previamente. Obtendremos un mensaje que nos indicará si el coche se ha aparcado (no es necesario indicar la plaza), o si el parking está lleno.
•   Retirar coche: mediante un formulario se indicará de qué parking se quiere retirar el coche (parking grande o parking pequeño) y la plaza que ocupa el vehículo. El programa mostrará un mensaje indicando si se ha retirado el coche, o si no se encontraba ningún coche en la plaza indicada.
•   Ver estado del parking: se mostrará por pantalla el estado de cada plaza del parking, indicando si está libre u ocupada.

Consideraciones: recuerda que para pasar datos no incluidos en un formulario de una página a otra puedes usar sesiones.


El ejercicio lo he dividido en 3 archivos:

index.php
Código: [Seleccionar]
<!DOCTYPE HTML>
<html lang="es">
<head>
  <meta charset="UTF-8">
<title>Parking De Coches</title>
</head>
<body>
<form method="post" action="procesos.php">
  <p>Seleccione una operacion y tamaño del coche</p>
Coche <select name ="tamano">
      <option value="grande">grande</option><br>
      <option value="pequeno">pequeno</option><br>
      </select>
      <br>
Operacion <select name="opcion">
          <option value="aparca" >Aparcar coche</option>
          <option value="retira" >Retirar coche</option>
          </select>
      <input type="submit" value="enviar" name="estado"/>
    <br>
   Plaza: <input type ="text" name = "plaza">
</form>
 <a href ="estado.php">Estado Parking</a>
</body>
</html>




archivo procesa.php
Código: [Seleccionar]
<?php


const PLAZA_LIBRE 0;
const 
PLAZA_OCUPADA 1;

const 
NUM_COCHES_GRANDES 10;
const 
NUM_COCHES_PEQUENOS 14;


const 
MENSAJE "COCHE APARCADO";
const 
MENSAJE_NO_DISPONIBLE ="NO HAY SITIO EN EL PARKING";

$tamano $_POST['tamano'];
$opcion $_POST['opcion'];



function 
construir_array($tamano){

$arr = [];
$count = ($tamano == 'grande') ? NUM_COCHES_GRANDES NUM_COCHES_PEQUENOS;
for ($i 0$i$count$i++) {

$arr[$i] = PLAZA_LIBRE;
}

return $arr;

}




function 
libre($tamano){


    $arr = ($tamano == 'grande') ? $_SESSION['grande'] : $_SESSION['pequeno'];

    return 
array_search(PLAZA_LIBRE$arr);
}



function 
aparcar($tamano){

if(
FALSE != ($seccion libre($tamano))) {

$_SESSION[$tamano][$seccion] =PLAZA_OCUPADA;


echo MENSAJE;
}else{

MENSAJE_NO_DISPONIBLE;
}


}



function 
retirar ($tamano$plaza){

if (array_key_exists($plaza$_SESSION[$tamano])){

$_SESSION[$tamano][$plaza] = PLAZA_LIBRE;
return true;

}
return false;

}


if (!isset(
$_SESSION)){
session_start();
}

//CREO LOS ARRAYS PARA GUARDAR LOS DATOS
if (!isset($_SESSION['pequeno'])){

$_SESSION['pequeno'] = construir_array('pequeno');
}

if (!isset(
$_SESSION['grande'])){

$_SESSION['grande'] = construir_array('grande');

}

//PROCEDO A EJECUTAR LA ACCION
if (isset($tamano)) {

if ($opcion == 'aparca'){
aparcar($tamano);

}else if ($opcion ==='retira') {

$plaza = isset($_POST['plaza']) ? $_POST['plaza'] : null;

if (!isset($plaza) || empty($plaza)){

echo 'ingresa la plaza del coche a retirar';
}else{

if (retirar($tamano$plaza)) {

echo 'El coche de la plaza Numero '.$plaza.' se retiro bien';

}else{
echo '[ERROR] al retirar el coche de la plaza numero '.$plaza;
}

}
}else{
echo '[ERROR] la opcion no es valida.';
}
}

echo 
'<br><br>';
echo 
'<a href = "index.php">VOLVER</a>';

?>

archivo estado.php
Código: [Seleccionar]
<?php

 
if (!isset($_SESSION)) {
session_start();

}

 

echo 
'<a href="index.php"><VOLVER</a>';

 

echo 
'<h1>REFERENCIAS: <h1>';

 

echo 
'<h3>0 ===> PLAZA_LIBRE</h3>';

echo 
'<h3>1 ===> PLAZA_OCUPADA</h3>';

 

echo 
'<h1>COCHES GRANDES</h1>';

 

echo 
'<pre>';

var_dump($_SESSION['grande']);

echo 
'</pre>';

 

echo 
'<h1>COCHES PEQUEÑOS</h1>';

 

echo 
'<pre>';

var_dump($_SESSION['pequeno']);

echo 
'</pre>';

?>


El problema lo tengo que cuando voy a aparcar un coche ya sea grande o pequeño al darle al boton enviar no me muestra nada. En cambio si retiro un coche si me muestra un mensaje que se retiro con exito¿alguien puede ayudarme? tengo que entregarlo como muy tarde el lunes y me esta volviendo loco el ejercicio, gracias.

Un saludo
   

« Última modificación: 05 de Junio 2017, 17:57 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:solicito ayuda en este ejercicio
« Respuesta #1 en: 28 de Marzo 2017, 23:33 »
Hola javaquery.

No se si te valdrá la respuestas a estas alturas, pero ahí te la dejo.

procesos.php
Código: [Seleccionar]
<?php

session_start
();

const 
PLAZA_LIBRE 0;
const 
PLAZA_OCUPADA 1;
const 
NUM_COCHES_GRANDES 10;
const 
NUM_COCHES_PEQUENOS 14;
const 
MENSAJE "COCHE APARCADO";
const 
MENSAJE_NO_DISPONIBLE ="NO HAY SITIO EN EL PARKING";

$tamano $_POST['tamano'];
$opcion $_POST['opcion'];

function 
construir_array($tamano){
$arr = [];
$count = ($tamano == 'grande') ? NUM_COCHES_GRANDES NUM_COCHES_PEQUENOS;
for ($i 0$i$count$i++) {
$arr[$i] = PLAZA_LIBRE;
}
return $arr;
}

function 
libre($tamano){
$arr = ($tamano == 'grande') ? $_SESSION['grande'] : $_SESSION['pequeno'];
    return 
array_search(PLAZA_LIBRE$arr); 
}

function 
aparcar($tamano){
echo "estoy aquí; ".libre($tamano);
$seccion libre($tamano);
if(!empty($seccion)) {
$_SESSION[$tamano][$seccion] = PLAZA_OCUPADA;
echo MENSAJE;
}else{
echo MENSAJE_NO_DISPONIBLE;
}
}

function 
retirar($tamano$plaza){
if (array_key_exists($plaza$_SESSION[$tamano])){
$_SESSION[$tamano][$plaza] = PLAZA_LIBRE;
return true;
}
return false;
}

/**Si es la primera vez que se ejecuta el código, se crearán dos arrys,
  *uno que representa las plazas de aparcamiento pequeñas y otro que
  *representará las plazas grandes.
  */
if (!isset($_SESSION['pequeno'])){
$_SESSION['pequeno'] = construir_array('pequeno');
$_SESSION['grande'] = construir_array('grande');
}

//PROCEDO A EJECUTAR LA ACCION
if (isset($tamano)) {
if ($opcion == 'aparca'){
aparcar($tamano);
}else if ($opcion ==='retira') {
$plaza = isset($_POST['plaza']) ? $_POST['plaza'] : null;
if (!isset($plaza)){
echo 'ingresa la plaza del coche a retirar';
}else{
if (retirar($tamano$plaza)) {
echo 'El coche de la plaza Numero '.$plaza.' se retiro bien';
}else{
echo '[ERROR] al retirar el coche de la plaza numero '.$plaza;
}
}
}else{
echo '[ERROR] la opcion no es valida.';
}
}

echo 
'<br><br>';
echo 
'<a href = "index.php">VOLVER</a>';

?>

estado.php
Código: [Seleccionar]
<?php

session_start
();

echo 
'<a href="pruebas.php"><VOLVER</a>';
echo 
'<h1>REFERENCIAS: <h1>';
echo 
'<h3>0 ===> PLAZA_LIBRE</h3>';
echo 
'<h3>1 ===> PLAZA_OCUPADA</h3>';
echo 
'<h1>COCHES GRANDES</h1>';
echo 
'<pre>';
var_dump($_SESSION['grande']);
echo 
'</pre>';
echo 
'<h1>COCHES PEQUEÑOS</h1>';
echo 
'<pre>';
var_dump($_SESSION['pequeno']);
echo 
'</pre>';

echo 
'<br><br>';
echo 
'<a href = "index.php">VOLVER</a>';

?>


Saludos. ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".