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:
Esto seria la pagina inicial la cual me lleva a un php que redirige al resto dependiendo de la selección:
Vale depues esta la pagina de aparcar:
Y la de retirar:
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:
Luego el php de mostrar el parking funciona bien (en teoria):
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 =)
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


0