pues los pongo aqui y arreglado
uni5_entradas.php Código PHP:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="uni5_entradas.css" />
</head>
<body>
<?php
require 'uni5_entradas_class.php';
$mi_cine = new uni5_entradas_class();
session_start();
//entramos si se ha pinchado en una localidad
$mensaje = "";
//entramos cuando pulsamos en un asiento
if(isset($_REQUEST['estado'])){
$fila = (int) $_REQUEST['fila'];
$columna = (int) $_REQUEST['columna'];
//si es una nueva sesión o ha caducado en la que estábamos
if(!isset($_SESSION["contador"])){
//esto pasa cuando intentamos anular un asiento de otra sesión
if($_REQUEST['estado'] == 1){
$mensaje = "Esa entrada es de otra sesión y no se puede devolver";
}
elseif($_REQUEST['estado'] == 0){
$_SESSION["contador"] = 1;
$_SESSION[$fila][$columna] = 1;
$mensaje = "Gracias por comprar en este cine";
$mi_cine->cambiarestado();
}
}else{ //entra en el bucle cuando la sesión está activa
switch ($_REQUEST['estado']){
case "0":
$mensaje = "Gracias por comprar en este cine";
$_SESSION["contador"]++;
$_SESSION[$fila][$columna] = 1;
$mi_cine->cambiarestado();
break;
case "1":
if(isset($_SESSION[$fila][$columna])){
$mensaje = "Gracias por devolver la entrada";
unset($_SESSION[$fila][$columna]);
$mi_cine->cambiarestado();
}
break;
}
}
}
echo $mensaje;
$mi_cine->mostrarmatriz();
var_dump($_REQUEST);
var_dump($_SESSION);
?>
</body>
</html>
uni5_entradas_class.php Código PHP:
<?php
class uni5_entradas_class {
public $cine = array();
public $directorio;
function __construct() {
$this->directorio = '.'; //Directorio de trabajo el actual
$this->fichero = "uni5_entradas.txt";
$this->ficheroamatriz();
}
function ficheroamatriz(){
chdir($this->directorio);//cambiamos el directorio activo
//Abrimos el fichero en modo solo lectura
$idfich = @fopen($this->fichero, "r") or die("No existe el fichero $this->fichero");
$temp = explode("|",fgets($idfich,1024));
$this->cine["peli"] = array("sala"=>$temp[0],"titulo"=>$temp[1],"hora"=>$temp[2],"dia"=>$temp[3]);
while($linea= fgets($idfich,1024)){//leemos liena a linea
$this->cine[] = str_split($linea, 1);
}
fclose($idfich);
}
function mostrarmatriz(){
echo "<table>";
for ($fila = 0 ; $fila < 15; $fila++){
for ($columna = 0 ; $columna < 20; $columna++){
//numeracion lateral
if ($columna == 0 && $fila < 16) echo "<td class=\"limpio\">".($fila+1)."</td>";
switch ($this->cine[$fila][$columna]){
case 0:
echo "<td class=\"verde\"><a href=uni5_entradas.php?estado=".$this->cine[$fila][$columna]."&fila=$fila&columna=$columna>__</a></td>";
break;
case 1:
if (isset($_SESSION[$fila][$columna])){
echo "<td class=\"naranja\"><a href=uni5_entradas.php?estado=".$this->cine[$fila][$columna]."&fila=$fila&columna=$columna>__</a></td>";
}
else{
echo "<td class=\"rojo\"><a href=uni5_entradas.php?estado=".$this->cine[$fila][$columna]."&fila=$fila&columna=$columna>__</a></td>";
}
break;
default:
echo $this->cine[$fila][$columna];
}
}
echo "</tr>";
}
// numeracion en la última fila
for ($columna = 0 ; $columna < 21; $columna++){
if ($columna == 0) echo "<td class=\"limpio\"></td>";
else echo "<td class=\"limpio\">$columna</td>";
}
echo "</table>";
}
function matrizafichero(){
$idfich = @fopen($this->fichero, "w") or die("No existe el fichero $this->fichero");
$texto = implode("|",$this->cine["peli"]);
fputs($idfich,$texto,(strlen($texto)));
for ($fila = 0; $fila < 15;$fila++){
$texto = implode("",$this->cine[$fila]);
fputs($idfich,$texto,(strlen($texto)));
}
fclose($idfich);
}
function cambiarestado(){
$fila = (int) $_REQUEST['fila'];
$columna = (int) $_REQUEST['columna'];
switch ($this->cine[$fila][$columna]){
case 0:
$this->cine[$fila][$columna] = 1;
break;
case 1:
$this->cine[$fila][$columna] = 0;
break;
}
$this->matrizafichero();
}
}
?>
uni5_entradas.css
Código CSS:
Ver originalbody{
background-color: #cccccc;
}
table{
/*border-collapse:collapse;*/
font-family: 'Courier New',Courier,monospace;
font-size: 12px;
}
td{
border-right-style: solid;
border-left-style: solid;
/*border-bottom-style: solid;*/
border-top-style: solid;
border-right-width: 1px;
border-left-width: 1px;
border-bottom-width: 1px;
border-top-width: 1px;
}
.verde{
background-color: greenyellow;
}
.naranja{
background-color: orange;
}
.rojo{
background-color: red;
}
.limpio{
border-right-style: none;
border-left-style: none;
border-bottom-style: none;
border-top-style: none;
text-align: center;
}