Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Varias condicionales no funcionan????

Estas en el tema de Varias condicionales no funcionan???? en el foro de PHP en Foros del Web. Hola Tengo este script: Código: $uri = $_SERVER['REQUEST_URI']; if (strpos($uri,'categorias/categoria-a) !== false ) { echo '<link href="css/categoria-a.css" rel="stylesheet" type="text/css" />'; echo '<link href="javascript/categoria-a.js" rel="stylesheet" type="text/css" ...
  #1 (permalink)  
Antiguo 12/10/2013, 09:49
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Varias condicionales no funcionan????

Hola

Tengo este script:

Código:
$uri = $_SERVER['REQUEST_URI'];
if (strpos($uri,'categorias/categoria-a) !== false ) {
   echo '<link href="css/categoria-a.css" rel="stylesheet" type="text/css" />';    
   echo '<link href="javascript/categoria-a.js" rel="stylesheet" type="text/css" />';   
   }
else if (strpos($uri,'categorias) !== false ) {
   echo '<link href="css/categorias.css" rel="stylesheet" type="text/css" />';    
   echo '<script src="javascript/categorias.js"></script>';      
   }
?>
Funciona perfectamente.

Si es la categoría índice, inserta "categorias.css" y "categorias.js"

Si es la categoria-a, inserta "categoria-a.css" y "categoria-a.js" en su lugar.

Bien.

El tema es que si quiero introducir otras posibilidades ya no me funciona y no sé por qué razón.

Lo que quiero es introducir otra categoría y otras cuantas como condicionales, pero no funciona:

Código:
$uri = $_SERVER['REQUEST_URI'];
if (strpos($uri,'categorias/categoria-a) !== false ) {
   echo '<link href="css/categoria-a.css" rel="stylesheet" type="text/css" />';    
   echo '<link href="javascript/categoria-a.js" rel="stylesheet" type="text/css" />';   
   }
if (strpos($uri,'categorias/categoria-b) !== false ) {
   echo '<link href="css/categoria-b.css" rel="stylesheet" type="text/css" />';    
   echo '<link href="javascript/categoria-b.js" rel="stylesheet" type="text/css" />';   
   }
else if (strpos($uri,'categorias) !== false ) {
   echo '<link href="css/categorias.css" rel="stylesheet" type="text/css" />';    
   echo '<script src="javascript/categorias.js"></script>';      
   }
?>
Aquí, si estás en "categoria-b" efectivamente se insertan "categoria-b.css" y "categoria-b.js".

Pero si entras en "categoria-a" te encuentas con que no inserta sólo lo que le corresponde, sino también "categoria.css" y "categoria.js".

Creo que no es la fórmula correcta para añadir varios condicionales uno tras otro.

¿Me podéis indicar?
  #2 (permalink)  
Antiguo 12/10/2013, 09:52
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Varias condicionales no funcionan????

Hola, yo creo que la mejor forma de hacer lo que quieres es usar switch.

Aca la información.

http://php.net/manual/es/control-structures.switch.php

Saludos
  #3 (permalink)  
Antiguo 12/10/2013, 10: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: Varias condicionales no funcionan????

Te faltó un else en la segunda "posibilidad".
__________________
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 12/10/2013, 10:59
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Varias condicionales no funcionan????

He puesto el else adicional como dice andresdzphp y funciona.

Pero quizás sería más limpio el switch propuesto por Erick.

He intentado esto:

Código:
<?php
$uri = $_SERVER['REQUEST_URI'];
switch($uri)
{
case 'categorias/categoria-a':
   echo '<script src="javascript/xxxxxxxxxxxxxxxxxxxx.js"></script>';   
    break;
case 'categorias/categoria-b:
   echo '<script src="javascript/xxxxxxxxxxxxxxxxxxxx.js"></script>';   
    break;
}
?>
Pero no me funciona. No inserta nada.

??
  #5 (permalink)  
Antiguo 12/10/2013, 12:18
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Varias condicionales no funcionan????

No te funciona porque los cases del switch se ejecutan en caso de coincidencia completa, mientras tu código original utiliza strpos, lo cual significa que buscas una coincidencia parcial.

Suponiendo que "categorias/categoria-a" es la parte final de la url..
Código PHP:
Ver original
  1. <?php
  2. $uri = $_SERVER['REQUEST_URI'];
  3. // Primero, quedarnos con la parte que interesa.
  4. $prefix="categoria/";
  5. $suffix=substr($p,strpos($p,$prefix)+strlen($prefix));
  6. // Ahora, en $suffix tenemos "categoria-b","categoria-a",etc.
  7. ?>
  8. <link href="css/<?php echo $suffix;?>.css" rel="stylesheet" type="text/css" />
  9. <script src="javascript/<?php echo $suffix;?>"></script>';
  #6 (permalink)  
Antiguo 12/10/2013, 12: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: Varias condicionales no funcionan????

Probaste ese código? creo que en vez de sumar tienes que restar y sumar 1.
__________________
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
  #7 (permalink)  
Antiguo 12/10/2013, 13:10
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Varias condicionales no funcionan????

Lo he probado, pero por alguna razón no funciona. Debe tener algún error.

Lo he colocado así:

Código:
    <?php
    $uri = $_SERVER['REQUEST_URI'];
    // Primero, quedarnos con la parte que interesa.
    $prefix="categorias/";
    $suffix=substr($p,strpos($p,$prefix)+strlen($prefix));
    // Ahora, en $suffix tenemos "categoria-b","categoria-a",etc.
    ?>
    <link href="css/<?php echo $suffix;?>.css" rel="stylesheet" type="text/css" />
    <script src="javascript/<?php echo $suffix;?>"></script>';



Me introduce esto:

<link href="/css/.css" rel="stylesheet" type="text/css" />
<script src="/javascript/"></script>';

Además, en la cabecera del frontend parecer el final del script (';).
  #8 (permalink)  
Antiguo 12/10/2013, 14:07
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Varias condicionales no funcionan????

En la linea:

Código PHP:
Ver original
  1. $suffix=substr($p,strpos($p,$prefix)+strlen($prefix));
Escribe

Código PHP:
Ver original
  1. $suffix=substr($uri,strpos($uri,$prefix)+strlen($prefix));

Se me fue el nombre de variable.

Probado:
Código PHP:
Ver original
  1. <?php
  2.     $uri = 'http://127.0.0.1/a/b/categorias/categoria-1'; // $_SERVER['REQUEST_URI'];
  3.     // Primero, quedarnos con la parte que interesa.
  4.     $prefix="categorias/";
  5.     $suffix=substr($uri,strpos($uri,$prefix)+strlen($prefix));
  6.     // Ahora, en $suffix tenemos "categoria-b","categoria-a",etc.
  7.     ?>
  8.     <link href="css/<?php echo $suffix;?>.css" rel="stylesheet" type="text/css" />
  9.     <script src="javascript/<?php echo $suffix;?>.js"></script>
Da como resultado
Código HTML:
Ver original
  1. <link href="css/categoria-1.css" rel="stylesheet" type="text/css" />
  2.     <script src="javascript/categoria-1.js"></script>
  #9 (permalink)  
Antiguo 13/10/2013, 04:13
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Varias condicionales no funcionan????

Sí funciona.

Etiquetas: condicionales
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 02:59.