PHP - Ayuda actividad php

 
Vista:

Ayuda actividad php

Publicado por paco (8 intervenciones) el 25/03/2022 18:48:25
Buenas estaba realizando una actividad de practica con php en la que tengo que realizar una web de un parking para coches grandes o pequeños. Tengo 10 plazas pequeñas y 14 grandes, los pequeños solo pueden aparcar en la grande si no tienen sitio en la zona de los pequeños. Os muestro el código de la pagina inicial:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
  <meta charset="UTF-8">
	<title>Parking De Coches</title>
</head>
<body>
<form method="post" action="apartado2.php">
  <p>Seleccione una operacion y tamaño del coche</p>
Operacion<RadioGroup>
          <input type="radio" value="aparca" name="opcion">Aparcar coche
          <input type="radio" value="retira" name="opcion">Retirar coche
          <input type="radio" value="estado" name="opcion"">Estado parking
        </RadioGroup>
        <input type="submit" class="submit" value="Aceptar" />
    <br>
</form>
</body>
</html>


Esto seria la pagina inicial la cual me lleva a un php que redirige al resto dependiendo de la selección:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
session_start();
//Si está definido el formulario.
if (isset($_POST)) {
    //Comprobamos que no este vacío input.
    if (empty($_POST['opcion'])) {
        echo "Elige una opción. <a href='prueba.html'>Regresar</a>";
    } else {
 
        //Obtenemos valor input radio.
        $opcion = $_POST['opcion'] ?: '';
 
        //Redirigimos según opción seleccionado.
        if ($opcion == 'estado') {
            echo '<script>window.location="estado.php"</script>';
        }
        elseif($opcion == 'aparca' ) {
            echo '<script>window.location="aparcar.html"</script>';
        }
        elseif($opcion == 'retira' ) {
            echo '<script>window.location="retirar.html"</script>';
        }
    }
}
 
?>

Vale depues esta la pagina de aparcar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
  <meta charset="UTF-8">
	<title>Aparcar</title>
</head>
<body>
<form method="post" action="aparcar.php">
  <p>Seleccione tamaño del coche</p>
  <select name ="tamano">
    <option value="grande">grande</option><br>
    <option value="pequeno">pequeno</option><br>
    </select>
    <input type="submit" value="enviar" name="coche"/>
</form>
</body>
</html>

Y la de retirar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>
  <meta charset="UTF-8">
	<title>Retirar</title>
</head>
<body>
<form method="post" action="aparcar.php">
  <p>Seleccione tamaño del coche y plaza</p>
  <select name ="tamano">
    <option value="grande">grande</option><br>
    <option value="pequeno">pequeno</option><br>
    </select>
    Plaza: <input type ="text" name = "plaza">
    <input type="submit" value="enviar" name="coche"/>
</form>
</body>
</html>

Vale aquí ya se me complica. De momento estoy probando con un único php que se llama aparcar, el cual mirando por internet e informándome un poco me quedo esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
 
 session_start();
//Declaro constantes y defino mensajes a mostrar
const PLAZA_LIBRE = 0;
const PLAZA_OCUPADA = 1;
const COCHES_GRANDES = 14;
const COCHES_PEQUENOS = 10;
const APARCADO = "COCHE APARCADO";
const OCUPADO ="NO HAY SITIO EN EL PARKING";
 
$tamano = $_POST['tamano'];
//$opcion = $_POST['opcion'];
 
function construir_array($tamano){
	$parking = [];
	$count = ($tamano == 'grande') ? COCHES_GRANDES : COCHES_PEQUENOS;
	for ($i = 0; $i< $count; $i++) {
		$parking[$i] = PLAZA_LIBRE;
	}
	return $parking;
}
function libre($tamano){
	$parking = ($tamano == 'grande') ? $_SESSION['grande'] : $_SESSION['pequeno'];
    return array_search(PLAZA_LIBRE, $parking);
}
 
function aparcar($tamano){
	echo "estoy aquí; ".libre($tamano);
	$seccion = libre($tamano);
	if(!empty($seccion)) {
		$_SESSION[$tamano][$seccion] = PLAZA_OCUPADA;
		echo APARCADO;
	}else{
		echo OCUPADO;
	}
}
function retirar($tamano, $plaza){
	if (array_key_exists($plaza, $_SESSION[$tamano])){
		$_SESSION[$tamano][$plaza] = PLAZA_LIBRE;
		return true;
	}
	return false;
}
 
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 = "apartado2.html">VOLVER</a>';
?>

Luego el php de mostrar el parking funciona bien (en teoria):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
 echo "estado parking";
 session_start();
 
 
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='prueba.html'>Regresar</a>";
 
?>

Vale mi problema creo que esta en que al usar un unico php con un html para retirar y otro para aparcar la variable tamaño me crea conflicto.. O que lo que he probado al venir de un ejercicio similar que modifique para adaptarlo a este no es correcto.. Escucho opiniones y consejos para conseguir que funciones correctamente. Gracias =)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda actividad php

Publicado por paco (8 intervenciones) el 26/03/2022 11:39:03
Buenas tras seguir enredando conseguí que me funcionara =)
El problema que tengo ahora es que si el array de los vehículos pequeños esta ocupado que pase al de coches grandes. Dejo el código donde creo que debo añadirlo. Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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(libre($tamano)) {
		$_SESSION[$tamano][$seccion] = PLAZA_OCUPADA;
		echo APARCADO;
	}
    else{
        echo OCUPADO;
    }
}
Tengo una función para buscar las plazas libres que creo que eso me creara conflicto a la hora de realizar esa tarea luego mi intención en la función de aparcar seria poner una condición de si al seleccionar el array de coche pequeños esta completo proceder a incorporarlo al array de grandes. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar