Foros del Web » Programando para Internet » PHP »

Ordenar este switch

Estas en el tema de Ordenar este switch en el foro de PHP en Foros del Web. Hola tengo una gran duda Mi jerarquia esta asi carpeta proyecto css,descargas,includes, etc index.php , cabecera.php, etc Bueno este en mi controlador de mi descargas ...
  #1 (permalink)  
Antiguo 21/03/2009, 10:13
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Ordenar este switch

Hola tengo una gran duda
Mi jerarquia esta asi carpeta proyecto
css,descargas,includes, etc
index.php , cabecera.php, etc

Bueno este en mi controlador de mi descargas llamado descargas.ctrl.php
Código php:
Ver original
  1. <?php
  2.     $pagina = $_GET['pag'];
  3.     switch($pagina) {
  4.         case 'insertar':
  5.          if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  6.             include('vistas/insertar.html.php');
  7.         } else {
  8.          
  9.             echo " <center> Usted está tratando de ingresar a una area restringida </center>";
  10.         }
  11.             break;
  12.         case 'editar':
  13.             if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  14.                 include('vistas/editar.html.php');
  15.             } else {
  16.                  echo " <center> Usted está tratando de ingresar a una area restringida </center>";
  17.             }
  18.            
  19.         break;
  20.         case 'eliminar':
  21.         if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  22.             include('eliminar.php')
  23.         } else {
  24.             echo "<center> Area Restringida </center>";
  25.         }  
  26.         break;
  27.         case 'listado':
  28.         default:
  29.             if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  30.                 include('vistas/listar.html.php');
  31.             } else {
  32.                 include('vistas/listado_archivos.html.php');
  33.             }
  34.     }
  35. ?>

Y este en mi link de descargas que se encuentras en cabecera.php
Código html:
Ver original
  1. stm_aix("p3i0","p1i0",[0,"Descargas","","",-1,-1,0,"descargas/descargas.ctrl.php&pag=listado"]);

Resulta que cuando entro a mi index.php y me voy a la seccion descargas medeberia mostrar el listado_archivos.php pero me dice no encontrado
La duda es estoy llamando bien en mi cabecera a mi seccion descargas_archivos pq me dice no encontrado
  #2 (permalink)  
Antiguo 21/03/2009, 10:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ordenar este switch

El problema es que está mal la URL. Debería ser:
descargas/descargas.ctrl.php?pag=listado

Además, tienes mucho código repetitivo en el switch, podrías simplificarlo en uno sólo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 21/03/2009, 10:27
 
Fecha de Ingreso: febrero-2009
Ubicación: Cusco - Peru
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ordenar este switch

Primero revisa tu link porke deveria de tener un ? en ves de un &,

luego esto:

Código PHP:
case 'listado':        
default:            
if(!empty(
$_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
include(
'vistas/listar.html.php');            } 
else {                
include(
'vistas/listado_archivos.html.php');           
 } 
tu [case 'listado':] no tiene nada, ahi veo el error porke luego de eso tas poniendo el [default:], corrige esa parte.

Dberia de ser algo asi:

Código PHP:
case 'listado':        
if(!empty(
$_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
include(
'vistas/listar.html.php');            } 
else {                
include(
'vistas/listado_archivos.html.php');           break;
default: echo 
"Nada";
 } 
esto si no estoy mal.
  #4 (permalink)  
Antiguo 21/03/2009, 10:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ordenar este switch

Hola, kerverin.

El hecho de que case 'listado' no tenga nada, no necesariamente es un error.

Puede significar que case 'listado' y default ejecutarán la misma acción (al no tener case 'listado' un break)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 21/03/2009, 10:31
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ordenar este switch

En un solo
Código php:
Ver original
  1. if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
Hacer mis acciones
  #6 (permalink)  
Antiguo 21/03/2009, 10:37
 
Fecha de Ingreso: febrero-2009
Ubicación: Cusco - Peru
Mensajes: 142
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ordenar este switch

Cita:
Iniciado por David el Grande Ver Mensaje
Hola, kerverin.

El hecho de que case 'listado' no tenga nada, no necesariamente es un error.

Puede significar que case 'listado' y default ejecutarán la misma acción (al no tener case 'listado' un break)
Gracias por el dato, io siempre le ponia una variable en caso de ser vacia antes del switch cosa q simpre me hacia algo, pero con esto creo q ahorro codigo.
  #7 (permalink)  
Antiguo 21/03/2009, 11:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Ordenar este switch

Hola, majony.

No entendí lo que quisiste decir con tu última respuesta .

¿Lograste solucionar el problema?

P.S.: Así es kerverin, es útil en algunos casos para evitar código repetitivo en los case, aunque, en el caso anterior en sí no tenía mucha utilidad considerando que poniendo 'listado' o no ejecutaría el default. Pero sí puede resultar útil en otro contexto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 21/03/2009, 11:21
(Desactivado)
 
Fecha de Ingreso: diciembre-2008
Mensajes: 421
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ordenar este switch

Hola si la solucion esta en un 70% pq les explico
Realice lo sgte para no repeti codigo en la unica parte donde realizo comprobaciones de sesion es aqui
Código php:
Ver original
  1. <?php
  2.     $pagina = $_GET['pag'];
  3.  
  4.     switch($pagina) {
  5.         case 'insertar':
  6.          if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  7.             include('vistas/insertar.html.php');
  8.         } else {
  9.          
  10.             echo " <center> Usted está tratando de ingresar a una area restringida </center>";
  11.         }
  12.             break;
  13.         case 'editar':
  14.             if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  15.                 include('vistas/editar.html.php');
  16.             } else {
  17.                  echo " <center> Usted está tratando de ingresar a una area restringida </center>";
  18.             }
  19.            
  20.         break;
  21.         case 'eliminar':
  22.         if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  23.             include('vistas/eliminar.php');
  24.         } else {
  25.             echo "<center> Area Restringida </center>";
  26.         }  
  27.         break;
  28.         case 'listado':
  29.         default:
  30.             if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  31.                 include('vistas/listar.php');
  32.             } else {
  33.                 include('vistas/listar_archivos.php');
  34.             }
  35.     }
  36. ?>

Bien como hace tiempo plantea un duda ( Paginas Modulares )y al no haberle encontrado una respuesta tuve que hacer esto les explico
Tengo una pagina modular donde cada parte de mi sistema esta / en mudulos pequeños resulta que tengo (pq aun no lo he borrado) un modulo descargas que no es este, pero que funcionaba todo perfecto editaba, eliminaba , insertaba pero la unica cosa que no puedo hacer es la de Descargas (Haber si leen Pagina Modulares para q vean el error) bueno entonces decidi hacer este
Bueno ahora inicio sesion como administrador y voy a gestionar descargas me sale el listado pero como si fuera un usuario cuando deberia mostrarme otro listado como administrador
Entonces Hice esto
Código php:
Ver original
  1. <?php
  2.     session_name($cfg_session);
  3.     session_start();
  4.     if (empty($_SESSION['usuario_id'])) {
  5.         $_SESSION['usuario_id'] = 0;
  6.         $_SESSION['usuario_nick'] = 'invitado';
  7.         $_SESSION['usuario_nivel'] = 0;
  8.            
  9.     }
  10. ?>
  11. <?php
  12.     $pagina = $_GET['pag'];
  13.  
  14.     switch($pagina) {
  15.         case 'insertar':
  16.          if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  17.             include('vistas/insertar.html.php');
  18.         } else {
  19.          
  20.             echo " <center> Usted está tratando de ingresar a una area restringida </center>";
  21.         }
  22.             break;
  23.         case 'editar':
  24.             if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  25.                 include('vistas/editar.html.php');
  26.             } else {
  27.                  echo " <center> Usted está tratando de ingresar a una area restringida </center>";
  28.             }
  29.            
  30.         break;
  31.         case 'eliminar':
  32.         if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  33.             include('vistas/eliminar.php');
  34.         } else {
  35.             echo "<center> Area Restringida </center>";
  36.         }  
  37.         break;
  38.         case 'listado':
  39.         default:
  40.             if(!empty($_SESSION['usuario_id'])&&($_SESSION['usuario_nivel']==3)){
  41.                 include('vistas/listar.php');
  42.             } else {
  43.                 include('vistas/listar_archivos.php');
  44.             }
  45.     }
  46. ?>

Pese a esto todavia me nuestra cuando entro como admin el listado usuario y no se pq es
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:32.