Foros del Web » Programando para Internet » PHP »

Detener funcion, if - else

Estas en el tema de Detener funcion, if - else en el foro de PHP en Foros del Web. Hola, lo que me pasa es que verifico el hash que envio con anterioridad para que realice cierta función, el problema es que necesito que ...
  #1 (permalink)  
Antiguo 26/06/2013, 11:29
 
Fecha de Ingreso: octubre-2010
Mensajes: 136
Antigüedad: 13 años, 6 meses
Puntos: 4
Detener funcion, if - else

Hola, lo que me pasa es que verifico el hash que envio con anterioridad para que realice cierta función, el problema es que necesito que verifique 4 hash y dependiendo el que sea me corra cierta función, aquí está el código que estoy usando, no se como ponerlo en un solo script php y creo que de ahí viene el problema, ya que cuando pongo cada 1 por separado me funciona de maravilla pero cuando los pongo todos me corre siempre la ultima funcion es decir, verifica el hash = #comm pero igual me corre la ultima funcion de la lista...
PD: las funciones son javascript
Código PHP:
<?
$hash 
parse_url(PHP_URL_PATH);
if (
$hash '#comm') {
echo 
"<script type='text/javascript'>setTimeout('comm()',3500);</script>";
} else {
break;
}
?>
<?
$hash2 
parse_url(PHP_URL_PATH);
if (
$hash2 '#resd') {
echo 
"<script type='text/javascript'>setTimeout('resd()',3500);</script>";
} else {
break;
}
?>
<?
$hash3 
parse_url(PHP_URL_PATH);
if (
$hash3 '#prog') {
echo 
"<script type='text/javascript'>setTimeout('prog()',3500);</script>";
} else {
break;
}
?>
<?
$hash4 
parse_url(PHP_URL_PATH);
if (
$hash4 '#speci') {
echo 
"<script type='text/javascript'>setTimeout('speci()',3500);</script>";
} else {
break;
}
?>
__________________
Ser o conocer ese es el dilema...
  #2 (permalink)  
Antiguo 26/06/2013, 12:02
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Detener funcion, if - else

En vez de tantos IF ELSE.. deberias chequear la estructura de control SWITCH ... CASE
__________________
Salu2!
  #3 (permalink)  
Antiguo 26/06/2013, 12:50
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 6 meses
Puntos: 56
Respuesta: Detener funcion, if - else

el símbolo para "igual a" es == (doble)
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #4 (permalink)  
Antiguo 26/06/2013, 13:58
 
Fecha de Ingreso: octubre-2010
Mensajes: 136
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Detener funcion, if - else

Ya lo hice anteriormente con switch case y me hace lo mismo, y cuando pongo == para equal el valor no se porque razón no me corre
__________________
Ser o conocer ese es el dilema...
  #5 (permalink)  
Antiguo 26/06/2013, 14:15
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Detener funcion, if - else

En el SWITCH CASE... al final usa "Default:" y veras si pasa por ahi el flujo del programa... perdona por las MAYUSUCULAS


TRY {

SWITCH ($variable)
{
CASE (cond1):
break;

CASE (cond2):
break;

..

DEFAULT:
pasa por aca sino entra en los anteriores

}

} CATCH (Exception $e) {
echo 'Excepción capturada: ', $e->getMessage(), "\n";
}


Si ademas lo metes en un bloque TRY...CATCH...y ahi un error saldra en el mensaje del CATCH
__________________
Salu2!
  #6 (permalink)  
Antiguo 26/06/2013, 14:49
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: Detener funcion, if - else

Aquí hay varias cosas, una parse_url te devuelve un array, a menos que uses la segunda forma, pero de la forma que tienes jamás te va a funcionar, tienes que tener una variable con el URL a parsear:
Código PHP:
Ver original
  1. $url = "laurlaparsear";
  2. $path = parse_url($url, PHP_URL_PATH);

Ahora lo que estas comparando es el hash # (o fragmento) para eso deberías de usar PHP_URL_FRAGMENT.

@Italico76 parse_url no genera exepciones por lo que el bloque try/catch no hace nada en este caso.

Saludos.
  #7 (permalink)  
Antiguo 26/06/2013, 15:31
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Detener funcion, if - else

GatorV: gracias, si hice esa suposicion erroneamente justamente pensando en esa funcion
__________________
Salu2!
  #8 (permalink)  
Antiguo 26/06/2013, 15:37
 
Fecha de Ingreso: octubre-2010
Mensajes: 136
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Detener funcion, if - else

Código PHP:
<?
    $url 
"http://www.talwebsite.com/";
    
$hash parse_url($urlPHP_URL_PATH);
    
    switch (
$hash)
    {
    case(
$hash '#comm'):
        echo 
"<script type='text/javascript'>setTimeout('comm()',3500);</script>";
break;
    case(
$hash '#prog'):
        echo 
"<script type='text/javascript'>setTimeout('prog()',3500);</script>";
break;
    case(
$hash '#resd'):
        echo 
"<script type='text/javascript'>setTimeout('resd()',3500);</script>";
break;
    case(
$hash '#speci'):
        echo 
"<script type='text/javascript'>setTimeout('speci()',3500);</script>";
break;

}

?>
Así debería funcionar?
__________________
Ser o conocer ese es el dilema...
  #9 (permalink)  
Antiguo 26/06/2013, 15:42
 
Fecha de Ingreso: octubre-2010
Mensajes: 136
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Detener funcion, if - else

Ahora me hace algo si, pero solo me corre la primera funcion...cual puede ser el problema?
Es decir no importa que hash salga me corre siempre la primera funcion excepto cuando no hay hash
__________________
Ser o conocer ese es el dilema...
  #10 (permalink)  
Antiguo 26/06/2013, 16:07
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Detener funcion, if - else

CWeeD: amigo..haga el intento de leer la sintaxis, Ud entre parentesis coloca la condicion pero para que cree que en el SWITCH coloca la variable ? pues es para NO repetirla ahi... ademas son todas comparaciones con == implicatamente


Código PHP:
switch ($hash)
    {
    case(
'#comm'):
     ... 
Ud esta comparando con NULL o TRUE que se devuelve de la ASIGNACION con el '=' que Ud coloca cada vez
__________________
Salu2!
  #11 (permalink)  
Antiguo 26/06/2013, 16:11
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: Detener funcion, if - else

Código PHP:
<?
    $url 
"http://www.talwebsite.com/";
    
$hash parse_url($urlPHP_URL_PATH);
    
$hashes=array("#comm","#prog","#resd","#speci");
    if(
in_array($hash,$hashes))
         echo 
"<script type='text/javascript'>setTimeout('".substr($hash,1)."',3500);</script>";
?>
  #12 (permalink)  
Antiguo 26/06/2013, 16:11
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Detener funcion, if - else

Ud esta comparando SIEMPRE LO MISMO......porque cuando hace "$hash = '#comm'" dentro del primer CASE, lo esta asignando!

Que pena.. antes me equivoque, lastima no dejan editar y arreglar
__________________
Salu2!
  #13 (permalink)  
Antiguo 26/06/2013, 16:48
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: Detener funcion, if - else

Recuerda usar PHP_URL_FRAGMENT y no PHP_URL_PATH ya que te devuelven cosas diferentes...

Etiquetas: detener, funcion
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 06:12.