Foros del Web » Programando para Internet » PHP »

duda con switch

Estas en el tema de duda con switch en el foro de PHP en Foros del Web. hola buen dia tengo una duda con el switch <?php $id=$_GET['id']; switch ($id) { case 1: include("1.html"); break; case 2: include("2.html"); break; default: include("inicio.html"); } ...
  #1 (permalink)  
Antiguo 23/01/2012, 16:05
 
Fecha de Ingreso: mayo-2008
Mensajes: 287
Antigüedad: 16 años
Puntos: 2
duda con switch

hola buen dia tengo una duda con el switch

<?php
$id=$_GET['id'];
switch ($id) {
case 1:
include("1.html");
break;
case 2:
include("2.html");
break;
default:
include("inicio.html");
}
?>

si estoy en el index me muestra la pag de inicio.html, pero si por algun motivo pongo por decir index.php?id=455, me muestra = la paguina de inicio.html por tenerlo como default.
mi pregunta es como poder evitar esto?
que al no existir el parametro me mande a una web de error y no ala de inicio
  #2 (permalink)  
Antiguo 23/01/2012, 16:10
 
Fecha de Ingreso: enero-2012
Ubicación: localhost
Mensajes: 37
Antigüedad: 12 años, 3 meses
Puntos: 10
Respuesta: duda con switch

facil
$id = $_GET['id'];
if(empty($id))
{
echo "Error pagina no encontrada";
}
else {
if($id == 1)
{
echo "Hola estas en la pagina 1";
}
}
Saludos!
__________________
"El Conocimiento Es Poder
Mente Comunal - Diversidad Colectiva
  #3 (permalink)  
Antiguo 23/01/2012, 16:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: duda con switch

Usa la función file_exists para averiguar si existe el archivo o no

http://docs.php.net/manual/es/function.file-exists.php

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 23/01/2012, 16:17
 
Fecha de Ingreso: mayo-2008
Mensajes: 287
Antigüedad: 16 años
Puntos: 2
Respuesta: duda con switch

no pero yo me refiero al parametro.

aun que una buena opcion es usar el if, pero en cuanto al switch como queda ? tendria que meter un if ?
  #5 (permalink)  
Antiguo 23/01/2012, 16:21
 
Fecha de Ingreso: enero-2012
Ubicación: localhost
Mensajes: 37
Antigüedad: 12 años, 3 meses
Puntos: 10
Respuesta: duda con switch

A con el switch seria asi pero es mejor con if en este caso xD

$id = $_GET['id'];

switch($id)
{
case '1' :
echo "Hola estas en la pagina 1";
break;
default :
echo "Error pagina no encontrada";
break;
}
Saludos!
__________________
"El Conocimiento Es Poder
Mente Comunal - Diversidad Colectiva
  #6 (permalink)  
Antiguo 23/01/2012, 16:23
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: duda con switch

Hola, que tal esto, puede ser una opcion

Código PHP:
Ver original
  1. <?php
  2. if (isset($_GET['id'])){
  3. $id=$_GET['id'];
  4. }else{
  5. $id=0;
  6. }
  7. switch ($id) {
  8. case 0:
  9. include("inicio.html");
  10. break;
  11. case 1:
  12. include("1.html");
  13. break;
  14. case 2:
  15. include("2.html");
  16. break;
  17. default:
  18. include("error.html");
  19. }
  20. ?>
  21.  
  22.  
  23. No lo he probado, pero lo puedes adaptar... :-)
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #7 (permalink)  
Antiguo 23/01/2012, 16:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: duda con switch

El problema es que tu etiqueta default va a cachar cuando no exista el parámetro o no este dentro del rango que quieres, es por eso que debes de usar un if() para verificar si el número esta fuera del rango de paginas que tienes y ya en base a eso mostrar el error.

Saludos.
  #8 (permalink)  
Antiguo 23/01/2012, 16:25
 
Fecha de Ingreso: enero-2012
Ubicación: localhost
Mensajes: 37
Antigüedad: 12 años, 3 meses
Puntos: 10
Respuesta: duda con switch

Basicamente ya tienes la solucion amigo saludos!
__________________
"El Conocimiento Es Poder
Mente Comunal - Diversidad Colectiva
  #9 (permalink)  
Antiguo 23/01/2012, 16:34
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: duda con switch

Siguiendo la idea de malakian lo puedes dejar así:

Código PHP:
Ver original
  1. <?php
  2. $id = isset($_GET['id']) ? $_GET['id'] : '';
  3. switch ($id) {
  4.         case '':
  5.             include "inicio.html";
  6.             break;
  7.         case 1:
  8.             include "1.html";
  9.             break;
  10.         case 2:
  11.             include "2.html";
  12.             break;
  13.         default:
  14.             echo 'Error';
  15. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #10 (permalink)  
Antiguo 23/01/2012, 16:41
 
Fecha de Ingreso: mayo-2008
Mensajes: 287
Antigüedad: 16 años
Puntos: 2
Respuesta: duda con switch

y una pregunta, por seguriad que es mejor usar switch o if ? o es igual ?
  #11 (permalink)  
Antiguo 23/01/2012, 16:44
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: duda con switch

Bueno pareciera que cada vez quieren reducir mas el codigo jajaja, bueno ahi va el mio :)
Código PHP:
Ver original
  1. <?php
  2.   $id = isset($_GET['id']) ? $_GET['id'] : 0;
  3.   if (!@include(($id==0)?"inicio.html":$id.".html")){
  4.     echo "error!!";
  5.   }
  6. ?>

respondiendo tu pregunta, pienso que es igual, tiene mas que ver con la logica del programa
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #12 (permalink)  
Antiguo 23/01/2012, 16:48
 
Fecha de Ingreso: mayo-2008
Mensajes: 287
Antigüedad: 16 años
Puntos: 2
Respuesta: duda con switch

mas que nada solo quiero incluir las demas hojas y ya, ha y poner el error por si no existe el parametro
  #13 (permalink)  
Antiguo 23/01/2012, 16:49
Avatar de malakian  
Fecha de Ingreso: septiembre-2010
Ubicación: $malakian->Colombia();
Mensajes: 469
Antigüedad: 13 años, 7 meses
Puntos: 45
Respuesta: duda con switch

Cita:
Iniciado por tokiodata Ver Mensaje
mas que nada solo quiero incluir las demas hojas y ya, ha y poner el error por si no existe el parametro
Si, el ultimo codigo que coloque funciona para eso, pero solo con la condicion que los demas archivos se llamen 1.html, 2.html, 3.html etc etc
__________________
Guitar Loco, Desarrollador Web PHP
Sigueme: @jose1x
  #14 (permalink)  
Antiguo 23/01/2012, 16:51
 
Fecha de Ingreso: mayo-2008
Mensajes: 287
Antigüedad: 16 años
Puntos: 2
Respuesta: duda con switch

en mi codigo la forma de incluir es la correcta ?
tambien mas que nada quiero filtrar bien para evitar rfi
  #15 (permalink)  
Antiguo 23/01/2012, 17:00
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: duda con switch

También puedes comparar si el archivo con ese id existe o no:

Código PHP:
Ver original
  1. <?php
  2. $id = isset($_GET['id']) ? $_GET['id'] : '';
  3.  
  4. if (file_exists("$id.html")) {
  5.     include "$id.html";
  6. } else if ($id === '') {
  7.     include "inicio.html";
  8. } else {
  9.     echo 'Error';
  10. }
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: html, switch
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 17:33.