PHP - Problema con switch

 
Vista:
sin imagen de perfil

Problema con switch

Publicado por Juanma (6 intervenciones) el 03/12/2014 17:20:04
Buenas tardes,
A ver cómo resolveríais este problema:

cuando recojo la variable $section dependiendo del valor cargo en la <div id="content"> un contenido distinto

Tengo un switch con 10 opciones
case "catalog"
otros 8 casos a parte
y el default que me lleva a inicio

Cuando el valor de $section es catalog o inicio, hay una sidebar que debe aparecer mientras que para los otros valores no
El problema viene cuando le doy a $section un valor que no corresponde con ninguno y salta el default. Entonces se carga el contenido de inicio pero también la barra lateral y queda todo deformado.

Es un poco lioso pero visto en el código es muy sencillo el problema, aunque no sé solucionarlo.

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
75
76
77
<div id="content-wrapper">
    <?php if($section == "catalog" || $section == ""): ?>
        <div id="menubar">
            <div class="display">
            <?php require_once "public/blocks/categories/categories.php"; ?>
            </div>
        </div>
    <?php endif; ?>
    <div id="content" <?php if($section !== "catalog" && $section !== ""): ?> style="width:746px !important; border-left:0px !important" <?php endif; ?>>
        <div class="display">
        <?php
        switch ($section) {
            case "conditions":
                require_once "public/html/conditions.html";
                break;
            case "questions":
                require_once "public/html/questions.html";
                break;
            case "contact":
                require_once "public/modules/contact/contact.php";
                break;
            case "catalog":
                require_once "public/modules/catalog/catalog.php";
                break;
            case "product":
                require_once "public/modules/catalog/product.php";
                break;
            case "cart":
                require_once "public/modules/cart/cart.php";
                break;
            case "registration":
                require_once "public/modules/registration/form.php";
                break;
            case "login":
                if ($login == "") {
                    require_once "public/blocks/login/login-form.tpl.php";
                } else {
                    require_once "public/blocks/private-area/menu.tpl.php";
                }
                break;
            case "activation":
                require_once "public/modules/registration/activate-result.php";
                break;
            case "password-recovery":
                require_once "public/modules/password-recovery/form.php";
                break;
            case "new-password":
                require_once "public/modules/password-recovery/new-password-result.php";
                break;
            case "confirm":
                require_once "public/modules/seller/confirm.php";
                break;
            case "resume":
                require_once "public/modules/seller/resume.php";
                break;
            case "payment":
                require_once "public/modules/seller/payment.php";
                break;
            case "fin":
                require_once "public/modules/seller/fin.php";
                break;
            case "user":
                require_once "public/modules/user/user.php";
                break;
            case "user-modify":
                require_once "public/modules/user/form.php";
                break;
 
            default:
                $section = "home";
                require_once "public/modules/home/home.php";
                break;
        }
        ?>
        </div>
    </div>
</div>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con switch

Publicado por xve (6935 intervenciones) el 03/12/2014 21:25:31
Hola Juanma, me cuesta un poco de entender, pero entiendo que cuando es default, carga esta página public/modules/home/home.php, la cual incluye dos menus? o incluye un menu, que ya esta en la página donde esta incluida?

Perdona, pero no termina de entender...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con switch

Publicado por Juanma (6 intervenciones) el 04/12/2014 12:24:26
Exacto incluye dos menús.
Uno fijo que siempre está y otro en el sidebar que es el que sólo tiene que aparecer en el home o en catalog.

El problema viene cuando le paso por get un valor de section q no corresponde con ninguno de los casos del switch, porque salta el default pero el valor de section no son ni catalog, ni home, ni cadena vacía.

Es decir que va a home pero sin que section tenga ningún valor reconocible para q se cargue o no el menu lateral.

Es complicado explicarme, lo siento :(
Pero igualmente muchas gracias por la ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con switch

Publicado por Fernando (80 intervenciones) el 04/12/2014 07:10:21
Juanma, por un lado decis "Cuando el valor de $section es catalog o inicio, hay una sidebar que debe aparecer"
y por otro lado decis "se carga el contenido de inicio pero también la barra lateral y queda todo deformado."

En realidad vos en el codigo decis que debe aparecer si el valor de section es catalog o "" (<?php if($section == "catalog" || $section == ""): ?>). Que no es no mismo que <?php if($section == "catalog" || $section == "home"): ?>. luego le das el valor "home" si section es igual a "" (en el default case) default: $section = "home";

Debe o no debe aparecer el sidebar en inicio?
Si no debe aparecer, tenes que poner <?php if($section == "catalog"): ?>

Es raro lo que queres hacer. Tendrias que pensarlo mejor o explicarlo mejor.

Saludos,
Fernando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con switch

Publicado por Juanma (6 intervenciones) el 04/12/2014 12:29:17
Juanma, por un lado decis "Cuando el valor de $section es catalog o inicio, hay una sidebar que debe aparecer"
y por otro lado decis "se carga el contenido de inicio pero también la barra lateral y queda todo deformado."

Claro porque el problema viene cuando se carga el default, pq $section sigue vale algo que no se corresponde con ningún valor reconocible por switch

Es decir, si le paso por get section=patata, me va a cargar la opcion por defecto que es home, pero section no va a valer home en ningún caso.

Muchas gracias de todas formas pero es que por aquí es complicado explicar el problema, al menos para mi :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar