Ver Mensaje Individual
  #9 (permalink)  
Antiguo 04/06/2012, 05:51
Theasker
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Pierdo variable guardada en $_SESSION

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(
$lineafgets($idfich,1024)){//leemos liena a linea
      
$this->cine[] = str_split($linea1);
    }
    
fclose($idfich);
  }
  function 
mostrarmatriz(){
    echo 
"<table>";
    for (
$fila $fila 15$fila++){
      for (
$columna $columna 20$columna++){
        
//numeracion lateral
        
if ($columna == && $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 $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 original
  1. body{
  2.   background-color: #cccccc;
  3. }
  4. table{
  5.   /*border-collapse:collapse;*/
  6.   font-family: 'Courier New',Courier,monospace;
  7.   font-size: 12px;
  8. }
  9. td{
  10.   border-right-style: solid;
  11.   border-left-style: solid;
  12.   /*border-bottom-style: solid;*/
  13.   border-top-style: solid;
  14.   border-right-width: 1px;
  15.   border-left-width: 1px;
  16.   border-bottom-width: 1px;
  17.   border-top-width: 1px;
  18. }
  19. .verde{
  20.   background-color: greenyellow;
  21. }
  22. .naranja{
  23.   background-color: orange;
  24. }
  25. .rojo{
  26.   background-color: red;
  27. }
  28. .limpio{
  29.   border-right-style: none;
  30.   border-left-style: none;
  31.   border-bottom-style: none;
  32.   border-top-style: none;
  33.   text-align: center;
  34. }

Última edición por Theasker; 04/06/2012 a las 05:59