Foros del Web » Programando para Internet » PHP »

if - else no me funciona???

Estas en el tema de if - else no me funciona??? en el foro de PHP en Foros del Web. Hola. ¿Me podéis mirar esto y decirme por qué razón no me funciona? Se trata de que en subcategoría "cateogoria-a" muestre a.js, y en los ...
  #1 (permalink)  
Antiguo 28/10/2013, 12:39
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
if - else no me funciona???

Hola.

¿Me podéis mirar esto y decirme por qué razón no me funciona?

Se trata de que en subcategoría "cateogoria-a" muestre a.js, y en los artículos es esta misma se muestre b.js


Código:
<?php
$uri = $_SERVER['REQUEST_URI'];
if (strpos($uri,'categorias/cateogoria-a') !== false ) {
   echo '<script src="js/a.js"></script>';
   } 
else if  (strpos($uri,'categorias/cateogoria-a/') !== false ) {
   echo '<script src="js/b.js"></script>';
    
   } 
?>
Como véis, lo que he hecho ha sido colocar un slash tras "cateogoria-a" como elemento diferenciador dentro del url, de esta forma ya no estamos en el mismo caso y tendria que insertar otro .js.

Pero ello no ocurre y siempre inserta a.js
  #2 (permalink)  
Antiguo 28/10/2013, 12:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: if - else no me funciona???

Pues yo veo que ambas comparaciones son idénticas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/10/2013, 12:56
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: if - else no me funciona???

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues yo veo que ambas comparaciones son idénticas.
Sí, yo también creo que incluir la barra no aporta nada, porque en los dos casos tenemos "categoria-a".

¿Conoces la función correcta para distinguir en caso de la existencia de subcategorías para evitar que se inserte a.js?

¿O cómo hacer que un elemento que se inserta en la categoría categoria.a, deje de insertarse en las subcategorías a partir de ese nivel?
  #4 (permalink)  
Antiguo 28/10/2013, 13:03
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: if - else no me funciona???

Es "categoria-a" o "cateogoria-a"?
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #5 (permalink)  
Antiguo 28/10/2013, 13:04
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: if - else no me funciona???

categoria-a
  #6 (permalink)  
Antiguo 28/10/2013, 13:07
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: if - else no me funciona???

Está claro que la función no es correcta.

De lo que se traría sería de que inserte un elemento en la categoria, pero no en las subcategorías.
  #7 (permalink)  
Antiguo 28/10/2013, 13:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: if - else no me funciona???

Podrías usar parse_url para parsear el Query String, y luego usar expresiones regulares para ver si la categoria existe pero sin subcategorias...
  #8 (permalink)  
Antiguo 28/10/2013, 13:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: if - else no me funciona???

categorias/cateogoria-a/ también pasará la comprobación que haces a categorias/cateogoria-a, por lo que deberías invertir el orden, primero comparas con diagonal al final y luego sin ella.

Por cierto, creo haber respondido lo mismo en un tema similar... también era tuyo?
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 28/10/2013, 13:45
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
¿Qué tal con str_replace?

Cita:
Iniciado por Triby Ver Mensaje
categorias/cateogoria-a/ también pasará la comprobación que haces a categorias/cateogoria-a, por lo que deberías invertir el orden, primero comparas con diagonal al final y luego sin ella.

Por cierto, creo haber respondido lo mismo en un tema similar... también era tuyo?
Sí, hablamos sobre este mismo tema, pero no era por lo mismo.

Aquí se trata en realidad de hacer que el elemento no salga en las subcategorías.

De todas formas voy a probar esto.

Cita:
Iniciado por Triby Ver Mensaje
categorias/cateogoria-a/ también pasará la comprobación que haces a categorias/cateogoria-a, por lo que deberías invertir el orden, primero comparas con diagonal al final y luego sin ella.
Dejándolo como sigue funciona, con la pequeña trampa de dejar el echo vacío

Código:
<?php
$uri = $_SERVER['REQUEST_URI'];
if (strpos($uri,'categoria/categoria-a/') !== false ) {
   echo '';
   } 
else if (strpos($uri,'categoria/categoria-a') !== false ) {
   echo '<script src="javascript/a.js"></script>';    
   } 
?>
El dejar la primera función vacía es limpio??

Esto funciona, pero me gustaría hacerlo muy correctamente.

Gracias.

Última edición por Triby; 28/10/2013 a las 18:09
  #10 (permalink)  
Antiguo 28/10/2013, 14:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: if - else no me funciona???

Pues en ese caso, si no vas a hacer nada, solo cambia lo que evaluas:
Código PHP:
Ver original
  1. if (strpos(..) === false) {
  2.       echo 'script.js';
  3. }

Así no haces todo lo que estas haciendo...
  #11 (permalink)  
Antiguo 28/10/2013, 17:13
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
No, esto no es solución, porque si lo dejo así:


Código:
<?php
$uri = $_SERVER['REQUEST_URI'];
else if (strpos($uri,'categoria/categoria-a/') !== false ) {
   echo '<script src="javascript/a.js"></script>';    
   } 
?>
Se inserta en las subcategorías de "categoria-a"

Si lo pongo así:

Código:
<?php
$uri = $_SERVER['REQUEST_URI'];
else if (strpos($uri,'categoria/categoria-a') !== false ) {
   echo '<script src="javascript/a.js"></script>';    
   } 
?>

Se muestra en "categoria-a" y en todas sus subcategorías.

No funciona.

Se trata de que se muestre en "categoria-a" pero no en sus subcategorías.

La solución es

Código:
<?php
$uri = $_SERVER['REQUEST_URI'];
if (strpos($uri,'categoria/categoria-a/') !== false ) {
   echo '';
   } 
else if (strpos($uri,'categoria/categoria-a') !== false ) {
   echo '<script src="javascript/a.js"></script>';    
   } 
?>
El problema que vuelvo a reiterar es si es correcto sintácticamente el dejar esa condición vacía.

O si se podría hacer con otra función incluso más limpia.

Un saludo y gracias por vuestra comprensión.

Error por mayor complicación.

No había contado con que se trata de un árbol de tres niveles:

categoria/categoria-a/subcategorias

El archivo .js debe insertarse en "categoria" y en "categoria-a" pero no en las subcategorías finales.

Última edición por Triby; 28/10/2013 a las 18:09
  #12 (permalink)  
Antiguo 28/10/2013, 18:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: if - else no me funciona???

Por favor deja de publicar mensajes consecutivos, hace más difícil la lectura del tema; si necesitas agregar algo y no hay respuestas posteriores, siempre puedes editar el último mensaje.

Tal vez sea más fácil si separas la URL usando explode(), ejemplo:
Código PHP:
Ver original
  1. // Suponiendo que la URL es categoria/categoria-a/subcategoria
  2. $parts = explode('/', $_SERVER['REQUEST_URI']);
  3.  
  4. /* ***********
  5.  $parts sería un array donde:
  6. 0 => categoria
  7. 1 => categoria-a
  8. 2 => subcategoria
  9. *********** */
  10.  
  11. // Entonces, tu if sería algo como:
  12. // - El primer elemento debe ser categoría
  13. // - Debe existir el segundo elemento (categoria, categoria-a, etc.)
  14. // - No debe existir el tercer elemento
  15. if($parts[0] == 'categoria' && isset($parts[1]) && !isset($parts[2])) {
  16.      // Aquí agregas tu javascript
  17. }
__________________
- León, Guanajuato
- GV-Foto
  #13 (permalink)  
Antiguo 28/10/2013, 18:23
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: if - else no me funciona???

¿No es más sencilla tu primera solución con "if y else if" seguida de esta otra para cuando se visite la categoría raíz de forma final:?


Código:
<?php
if(preg_match("%/categoria$%", $_SERVER['REQUEST_URI'])){
   echo '<script src="javascript/a.js"></script>';
}
?>
  #14 (permalink)  
Antiguo 28/10/2013, 18:31
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: if - else no me funciona???

Aún más sencilla sería si aplicas correctamente una expresión regular que en una sola línea haga la comparación que sugerí en el mensaje anterior y evites poner otro "if vacío" como dijiste.
__________________
- León, Guanajuato
- GV-Foto
  #15 (permalink)  
Antiguo 28/10/2013, 18:35
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: if - else no me funciona???

No sé cómo lograrlo.

Además, con tres elementos es bastante más difícil.

He probado tu solución asociada a esta nueva función para la categoría raíz y me funciona, pero yo creo que también es importante hacer las cosas lo más sencilla y correctamente posible.

Si me sugieres otra solución o idea por dónde tirar te lo agradecería.

Etiquetas: Ninguno
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 12:18.