Foros del Web » Programando para Internet » PHP »

Estructuras de Control y Switch

Estas en el tema de Estructuras de Control y Switch en el foro de PHP en Foros del Web. Hola. Tengo un menú generado con <a href=?id=1> Y su respectivos $id=$_GET['id']; switch ($id) { case '00': echo "Hola 0"; break; ... Necesito generar dinámicamente ...
  #1 (permalink)  
Antiguo 12/05/2005, 10:30
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Estructuras de Control y Switch

Hola.

Tengo un menú generado con
<a href=?id=1>

Y su respectivos
$id=$_GET['id'];
switch ($id) {
case '00':
echo "Hola 0";
break;
...

Necesito generar dinámicamente el contenido. Para la primer parte no tengo problemas, estoy usando
for ($x = 1; $x <= 9; $x++){
echo "<a href='?id=".$x."'>".$Tema[$x]."</a>";}

donde Temas es un array, y me genera correctamente las ligas, pero para la sección case parece no funcionar esta estructura

Necesitaré algo así:
$id=$_GET['id'];
switch ($id) {
(estructura de control){
case '$x':
echo $Tema[$x];
break;
}
}


Preguntas:
1) ¿La estructura de control es "volátil"? si genero un "echo" como en el menú, ya cumplió una función y el valor de $x ya cambia, por lo que tengo la duda.
2) Un echo o print... es sólo de salida salida, para html, o el php reconoce el código generado así?
3) ¿Qué puedo hacer?

Gracias.
  #2 (permalink)  
Antiguo 17/05/2005, 20:15
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Hola. :) Adios
  #3 (permalink)  
Antiguo 17/05/2005, 20:31
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
1) Poco claro... ¿qué es esa "estructura de control"???
2) Igual poco claro.. echo y print son funciones PHP cuyo objetivo es enviar una "salida" para que sea impresa... ¿a qué te refieres con "php reconoce el código generado así"?
3) ¿qué quieres hacer??

En conclusión: se más claro....
Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 17/05/2005, 21:15
 
Fecha de Ingreso: agosto-2004
Mensajes: 95
Antigüedad: 19 años, 8 meses
Puntos: 2
Por lo poco que pude entender ... llegue a la conclusión que lo que quieres es crear el menu a partir del nivel o el id del usuario sin tener guardado las opciones del menú ni los privilegios para el usuario en una BD

Es eso ?

Si es eso ..

Código PHP:
<?

$tipo_usuario
=2;

$menu_opcion['id1']="Opción 1";
$menu_opcion['id2']="Opción 2";
$menu_opcion['id3']="Opción 3";

//el usuario tipo 1 tiene accesso solo a la Opción 1
$menu_usuario[1]=array(id1);
//el usuario tipo 2 tiene accesso a la Opción 2 y la Opción 3
$menu_usuario[2]=array(id2,id3);

foreach (
$menu_usuario[$tipo_usuario] as $key => $value){
echo 
"<a href='contenido.php?id=".$value."'>".$menu_opcion[$value]."</a><br>";
}

?>
__________________
Marco de Arica (Chile)
  #5 (permalink)  
Antiguo 19/05/2005, 15:33
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Aclaraciones.

Gracias. Me trato de explicar mejor.

Estructura de control. En el manual de Referencia de Php (y de otros lenguajes) agrupa en el capítulo Estructuras de control a if, else, while, for, switch, etc.

Partiendo del menú tipo:
Código PHP:
<a href="?id=01" title="Uno">Sección 1</a>
<a href="?id=02" title="Dos">Sección 2</a>

<?
$id
=$_GET['id'];
switch (
$id) {
case 
'01':
    include(
"Seccion-1.html");
    break;
case 
'02':
    include(
"Seccion-2.html");
    break;

?>
Necesito construir uno dinámicamente. Para la primer parte del menú, las ligas, tengo:
Código PHP:
for ($x 1$x 9$x++){
echo 
"<a href='?id=".$x."'>".$Secciones[$x]."</a>";} 
Donde obviamente $Secciones es un array que puedo estar cambiando. Automáticamente me genera un texto y su respectivo ID diferente para cada elemento del array.

Lo que no sé es cómo construir la segunda parte, también con un array que coincida con los valores del menú, dados por $x, se me ocurre que va algo así:
Código PHP:
<?
$id
=$_GET['id'];
switch (
$id) {
for (
$x=1, $$x 9$x++){
case 
$x:
    include(
"$Ligas[$x]");
    break;}
}
?>
Pero esa sintáxis no la sé bien.

La pregunta referente al "echo" es que no sé si venga al caso ponerlo. Si lo quiero ver en pantalla si lo utilizo, como en la primer parte donde el usuario tiene que ver el menú generado, pero la segunda parte no lo se.

Pregunta: ¿Como queda correctamente la segunda parte parte?.
  #6 (permalink)  
Antiguo 19/05/2005, 17:02
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
Decirte que en esto último que has puesto, estás mezclando un switch con un for, y eso no se puede hacer. Puedes poner unos dentro de otros, pero no mezclarlos.
Lo que tienes que hacer es tan sencillo como esto:
Código PHP:
include($Ligas[$_GET['id']]); 
Según parece el array Ligas contiene el nombre del archivo html correspondiente a cada opción. Si los índices del array de Secciones se corresponen con el del array de Ligas, es tan sencillo como eso.
Si ese es el caso, te aconsejo hacerlo todo en un único array bidimensional que tenga pares como estos:
{ {1, archivo1} , {2, archivo2} , {3, archivo3}, .... , {N, archivoN} }
De esta forma, el código está mejor estructurado:
Código PHP:
for ($x 1$x 9$x++){
echo 
"<a href='?id=".$x."'>".$Secciones[$x][0]."</a>";} 
Y esto para la otra parte:
Código PHP:
include($Secciones[$_GET['id']][1]); 
Míralo, es más sencillo. Un saludo.
__________________
Mi página personal: Julián Urbano
  #7 (permalink)  
Antiguo 21/05/2005, 18:43
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Gracias

Gracias, con un array unidimensional basta, :)

Ok. La primera parte puede variar dinámicamente si cambio el valor de $x.

Código PHP:
for ($x 1$x 9$x++){
echo 
"<a href='?id=".$x."'>".$Secciones[$x]."</a>";} 
Entonces la segunda parte quedaría...¿?
Código PHP:
<?
$id
=$_GET['id'];
 switch (
$id) {
 case 
'¿¿¿???':
 include(
$Secciones[$_GET['id']]);
 break;
}
?>
¿Como varían los case dinámicamente si el valor de $x es diferente?
  #8 (permalink)  
Antiguo 21/05/2005, 20:02
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 19 años, 8 meses
Puntos: 1
No no, no tienes que poner ningún switch ni nada. Directamente al hacer include($Secciones[$_GET['id']]); se incluirá el archivo correcto. No tienes que seleccionar nada con switch, ya que el propio id cogerá el elemento correcto del array.
Un saludo
__________________
Mi página personal: Julián Urbano
  #9 (permalink)  
Antiguo 23/05/2005, 07:56
Avatar de Rafael
Modegráfico
 
Fecha de Ingreso: marzo-2003
Mensajes: 9.028
Antigüedad: 21 años, 1 mes
Puntos: 1826
Gracias

Gracias, voy a trabajarlo.
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 14:45.