Foros del Web » Programando para Internet » PHP »

Problemas con href en PHP

Estas en el tema de Problemas con href en PHP en el foro de PHP en Foros del Web. Hola a todos, Estoy desarrollando una web en PHP que tiene una variable global llamada opción y que cambia el contenido de la página según ...
  #1 (permalink)  
Antiguo 11/07/2006, 06:32
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Problemas con href en PHP

Hola a todos,

Estoy desarrollando una web en PHP que tiene una variable global llamada opción y que cambia el contenido de la página según su valor.


Si la variable opción no ha cambiado se inicializa a 1.
Hay un switch al principio que examina la variable opción y según su valor se muestra un contenido u otro.

Mi problema es el siguiente. Cuando estoy en el modo Mapa, opción vale 4, tengo un botón con una lupa para ampliar y otro para reducir. Estos botones solo cambian una imagen central. He creado una variable idMapa para saber que imagen mostrar según el botón pulsado pero, por alguna razón, cada vez que pulso alguno de los botones, el navegador me vuelve al estado 1.. No entiendo por qué me cambia la variable opción a 1 cuando valía 4 si yo no se lo he indicado..

echo "<a href='?idMapa=1'><img src=$iLupaMas></a>;

Con este código cada vez que pulso la imagen iLupaMas debería cambiar el valor de la variable idMapa a 1, verdad?..

Luego tengo este código:

switch($idMapa){
case 1: $iMapa="../Imagenes/Lupas/LupaMas.jpg";
break;
case 2: $iMapa="../Imagenes/Lupas/LupaMenos.jpg";
break;
}


De esta forma se muestra una imagen u otra en función de lo que valga idMapa. O eso debería ser.

Al principio de la página tengo escrito esto:

if(isset($_REQUEST['opcion'])){
//Se carga ese valor
$opcion=$_REQUEST['opcion'];
}else{
//Si no, se inicializa a uno
$opcion=1;
}


Inicializo idMapa a 3 para comprobar si realmente cambia o no.
$idMapa=3;

El caso es que no hace nada de lo que quiero. Pincho en Mapa, la variable opción vale 4 y me carga el contenido correspondiente. Hasta ahí bien, pero en cuanto pulso la imagen iLupaMas, en lugar de cambiarme la imagen central, por alguna razón la variable opción vuelve a ser 1, y me carga el contenido inicial, cosa que no quiero..

Yo sólo quiero cambiar una imagen al pulsar un botón pero manteniendo el estado 4 de la variable opción.. Es por el href?.. Estoy escrbiendo mal el código?.. He comprobado que en la línea:

echo "<a href='?idMapa=1'><img src=$iLupaMas></a>;

Si en lugar de escribir ?idMapa=1 escribo ?opcion=4 me mantiene el contenido y no vuelve al estado 1.. Pero claro, no me cambia la imagen central.. ¿Hay alguna forma de cambiar el valor de 2 variables con el href?

Gracias por todo.

Un saludo
  #2 (permalink)  
Antiguo 11/07/2006, 07:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por qué no recoges las variables externas a tu script por el array superglobal asociado?

Es decir .. tu $idMapa ..por $_GET['idMapa'] pues le pasas ese dato por el URL en un link ... (o si pudiera llegar por POST también .. es decir GET y/o POST usa $_REQUEST).

Lo mismo sucede con $opcion .. si bien usas $_REQUEST .. deberías ver si realmente esa variable llega por GET o por POST o eventuamente por cualquiera de estos dos métodos y escojer el array que mejor le venga.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 11/07/2006, 09:54
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Hola CLuster,

No entiendo muy bien lo que quieres decirme. La variable opcion es normal que aparezca en la url porque varía el contenido de la página según el valor. Pero idMapa es una variable que yo utilizo para cambiar un componente.. No quiero cambiar el estado, ni cambiar de página luego no debería aparecer en la url, no?..

He puesto esta línea en el href:

$idMapa=2;
echo "<a href='?opcion=4&idMapa=1'><img src=$iLupaMas></a>;

Luego hago un simple:

echo $idMapa;

Pero cuando pincho en la imagen iLupaMas, el valor de idMapa sigue siendo 2, tal como la inicialicé.. No hace caso del valor que quiero que coja en el href. ¿Por qué?.

Sólo quiero cambiar una imagen pulsando un botón. La variable idMapa me indica después qué imagen es, pero no consigo cambiar el valor de la variable mediante el href.. Puede que esta no sea la mejor manera..

Te agradezco cualquier consejo.

Gracias por todo.

Un saludo.
  #4 (permalink)  
Antiguo 11/07/2006, 10:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero cuando pincho en la imagen iLupaMas, el valor de idMapa sigue siendo 2, tal como la inicialicé.. No hace caso del valor que quiero que coja en el href. ¿Por qué?.

Por qué deberías recogerlo en principio en:
$_GET['idMapa']

No en $idMapa cuando tu variable llega por GET (por el URL del link donde propgas esas variables).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 11/07/2006, 11:14
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Muchas gracias Cluster!!

Ahora cambia el valor de la variable y cambia la imagen pero tengo un problemilla.. Verás: Tengo 4 imágenes y dos botones lupa.

Cuando pulso el botón de ampliar quiero que la variable idMapa se incremente una unidad.. y si pulso el de reducir se decremente.

Si vale 1 y pulso el de ampliar idMapa debe valer 2 pero si vale 4 (ültima de las 4 imágenes), no debería dejarme ampliar más.

Como le incluyo ese código al href?.. Tendría que poner un if o algo así verdad?.. Y como se incrementa una variable en php?.. idMapa+=1?

Gracias por todo.

Un saludo
  #6 (permalink)  
Antiguo 11/07/2006, 11:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pue si ... un IF() bajo el total de ese valor que tu conoces (no sé cual es el límite).
Código PHP:
if (condicion){
el link con el idMapa +1
} else {
el link con el idMapa tal cual ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 11/07/2006, 13:34
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Gracias Cluster,

Pero y si quisiera realizar la comparación de if después de pulsar el link?
Según el código que me has mostrado se ejecutaría siempre el if, verdad?.
Tampoco quiero se quisquilloso, sé que es un simple if y que no va a perjudicar el rendimiento pero.. es por saber si se puede hacer como yo digo ya que sólo me interesa cambiar la imagen cuando el usuario pulsa el botón y no tendría por qué hacer la comparación del if antes..

Se puede incluir ese código if (condición).. dentro del href?


Son 4 imágenes.. Luego idMapa tendrá un rango de [1..4]. 4 posibles valores.
Si pulso el botón de ampliar y la imagen mostrada es la 4, no debería cambiar nada.
Gracias de nuevo.

Un saludo
  #8 (permalink)  
Antiguo 11/07/2006, 13:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Con PHP .. una "pulsación de un link" involucraría una recarga de página (supongo que esto lo sabes ya o conoces?).

PHP se ejecuta del lado del servidor (parece un tópico pero hay que recordarlo una vez más). El código PHP bajo tu condición de cierta variable que le -llega- a ese script (por la "recarga de tu página y con el link que contiene esa variable) ahí se decide si "generar" el código HTML para el link con el +1 o se queda como está (sin el +1)...

No sé si nos entendemos .. pero el "if()" para eso tiene un "else" ... en un "caso" generas tal código HTML (que será interpretado por tu navegador) y en otro caso otro código ...

Cualquier otra cosa "sin recargar la página" ante la "pulsación de tu link" (evento en el navegador) debería ser gestionada integramente con javascript no con PHP.

En resumen .. No se trata de que:
Cita:
Se puede incluir ese código if (condición).. dentro del href?
Sino que con "PHP" y bajo ese "IF" vas a genererar un link u otro link de otro tipo o sin link...

Código PHP:
if ($variable=="valor"){
  echo 
"<a href=\"nose.php?id=nose\">link</a>";
} else {
  echo 
"blabla";

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 11/07/2006, 14:04
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Sonrisa

Vale Cluster, está claro.

Una última cosilla, la sintaxis exacta para incrementar la variable dentro del href es idMapa=idMapa+1?.. Es que no me incrementa la variable..
Tal vez idMapa+=1?.. Estoy probando varias combinaciones pero no doy con la buena...

Y qué diferencia hay entre Request y get?.. Porque utilizo request para la variable opcion y get para idMapa.. Debería utilizar Get en ambas?

ASí es como se me ha quedado pero no me incrementa o decrementa la variable idMapa:


if ($idMapa < 4) {
echo "<a href='index.php?opcion=4&idMapa=idMapa+1'>
<img src=$iLupaMas></a></td></tr>";
}else {
echo "<a href='index.php?opcion=4&idMapa=$idMapa'>
<img src=$iLupaMas></a></td></tr>";
}
if ($idMapa > 1) {
echo "<a href='index.php?opcion=4&idMapa=idMapa-1'>
<img src=$iLupaMenos></a></td></tr>";
}else {
echo "<a href='index.php?opcion=4&idMapa=$idMapa'>
<img src=$iLupaMenos></a></td></tr>";
}


Gracias por todo!!!
  #10 (permalink)  
Antiguo 11/07/2006, 14:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En $_REQUEST tines todo lo que venga por GET, POST o sea una COOKIE .. en $_GET sólo lo que venga por dicho método (una variable en un link eso es GET .. o un formulario con method="get" ...) .

Por lo demás .. no entendí el problema .. No pongas el código en "verde" usa el botón "PHP" (saldrá automáticamente coloreado) .. intenta exponer el código completo que uses (no extraigas cosas fuera de contexto y más con los problemas que ya hemos tenido de que si se usa "$variable" o "$_GET['variable']" ...

Esto no es correcto:
echo "<a href='index.php?opcion=4&idMapa=idMapa+1'>

En tal caso:

Código PHP:
echo "<a href=\"index.php?opcion=4&idMapa=".$_GET['idMapa']+1."\"> ....etc .. 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 11/07/2006, 15:29
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Hola CLuster,

He pobado el código que me indicaste pero me da un error..

Código PHP:
Parse errorparse errorunexpected T_CONSTANT_ENCAPSED_STRINGexpecting ',' or ';' in C:UtilidadesWEBwwwIndex.php on line 342 
Código PHP:
echo "<a href=\"index.php?opcion=4&idMapa=".$_GET['idMapa']+1."\"> 
Puede que sea por el tema de las comillas pero las he quitado.. las he puesto.. pero nada.. siempre el mismo error.

te dejo ese trozo de código tal cual.. A ver si tú puedes iluminarme.

Código PHP:
// MAPA
case 4:   // Cada vez que se pulsa una de las Lupas se actualiza el idMapa para cambiar la imagen central.

  
echo "<table width=100% border=0 cellpadding=0 cellspacing=0>";
  echo 
"<tr><td><br><br><br><br><br><br><br>";
  
// Comprobar el valor de idMapa y averiguar qué imagen mostrar.
  
if ($idMapa 4) {
    echo 
"<a href=\'index.php?opcion=4&idMapa=".$_GET['idMapa']+1.'\"><img src=$iLupaMas></a></td></tr>";    
  }else {
    echo "<a href=\'index.php?opcion=4&idMapa=".$_GET['
idMapa'].'"><img src=$iLupaMas></a></td></tr>";    
}
                                  echo 
"<tr><td><br><br><br><br><br><br><br>";
   if (
$idMapa 1) {
     echo 
"<a href='index.php?opcion=4&idMapa=idMapa-1'><img src=$iLupaMenos></a></td></tr>";    
   }else {
     echo 
"<a href='index.php?opcion=4$idMapa'><img src=$iLupaMenos></a></td></tr>";    
   }
   echo 
"</table>";
   break;

El último if no lo he cambiado pero el error lo da antes.. Concretamente en el primer htref,

Gracias por todo. Me estás ayudando un montón.
  #12 (permalink)  
Antiguo 11/07/2006, 15:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
(Supuse que podrías continuar el código (con el resto que tu tienes ...), veo que no .. por eso tus "parse error" )

Según tu código original:

Código PHP:
echo "<a href=\"index.php?opcion=4&idMapa=".$_GET['idMapa']+1."\>
<img src=\"$iLupaMas\"></a></td></tr>"

Sólo incluyo comillas donde no las usas originalmente tu y uso las que corresponden .. si necesita usar comillas dobles .. las uso (para eso se "escapan" con el \ delante y no uso comillas simples (pues no corresponden).

Un saludo,
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 13/07/2006, 09:51
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Hola CLuster,

Vale, he probado esta línea y funciona bien.. El navegador me carga la página

echo "<a href=\"index.php?opcion=$4\"><img src=\"$iLupaMas\"></a></td></tr>";

Pero cuando incluyo la parte de la segunda variable (idMapa).. Deja de fuincionar..

¿Cómo va exactamente?.. Tengo que poner más comillas?

echo "<a href=\"index.php?opcion=$4&idMapa=.$_GET['idMapa']+1.\"><img src=\"$iLupaMas\"></a></td></tr>";

ASí no va... Debo incluir comillas antes del .$_GET?.. Y dónde las cierro?
Perdona mi insistencia... He probado tantas combinaciones que ya no sé como lo tenía en un principio..

Gracias por todo.

Última edición por Tarzan; 13/07/2006 a las 09:58
  #14 (permalink)  
Antiguo 13/07/2006, 10:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
$4 es un nombre de variable? ... Suponiendo que no lo sea (no deberías usar nombres de variables como n°) ...

Código PHP:
echo "<a href=\"index.php?opcion=4&idMapa=".$_GET['idMapa']+1."\"><img src="".$iLupaMas.""></a></td></tr>"
(si no me confundí con las comillas y los escpes \ .. sería así .. ).


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 13/07/2006 a las 10:32
  #15 (permalink)  
Antiguo 13/07/2006, 10:43
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Aarrgggggg!!

Perdona lo de $4.. Quería decir 4.. no es una variable.

He probado el código que me has dado pero sigue dándome error..
Jooo.. No consigo hacer que funcione el href con ambas variables.

La línea:

Código PHP:
echo "<a href=\"index.php?opcion=4&idMapa=".$_GET['idMapa']+1."\"><img src=\"$iLupaMas\"></a></td></tr>"
El error:
Código PHP:
Parse errorparse errorunexpected '"'expecting ',' or ';' in C:UtilidadesWEBwwwIndex.php on line 340 
He probado sin la segunda variable.. (es decir, sin &idMapa=".$_GET['idMapa']+1." ) y funciona bien.. Me carga la página perfectamente.

Esta línea funciona:

Código PHP:
echo "<a href=\"index.php?opcion=4\"><img src=\"$iLupaMas\"></a></td></tr>"
Pero cuando escribo esa parte del &idMapa=".$_GET['idMapa']+1." me sale el error que te he especificado..
Qué estoy haciendo mal?.. Uff.. Llevo tanto y tantas pruebas que me siento torpe.. Uso el explorer 6... Por si tiene algo que ver.

Gracias por tus esfuerzos..
  #16 (permalink)  
Antiguo 13/07/2006, 10:48
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 13 años
Puntos: 1
pues entonces haz esto:

$elid=$_GET['idMapa']+1;

echo "<a href=\"index.php?opcion=4&idMapa=".$elid."\"><img src=\"$iLupaMas\"></a>";

o

echo "<a href='"index.php?opcion=4&idMapa=".$elid."'><img src=\"$iLupaMas\"></a></td></tr>";

(ojo, son comilla simple y doble comilla en el 2º echo)
a ver si asi funciona.
__________________
ALOZORRO v5.0 (ahora en .es)
  #17 (permalink)  
Antiguo 13/07/2006, 10:56
Avatar de EternalWitness  
Fecha de Ingreso: agosto-2005
Mensajes: 146
Antigüedad: 12 años, 3 meses
Puntos: 2
prueba con
Código PHP:
echo "<a href=\"index.php?opcion=4&idMapa=".($_GET['idMapa']+1)."\"><img src=\"$iLupaMas\"></a></td></tr>"
__________________
PRIMERA REGLA PARA ESCRIBIR POSTS:
piensa, piensa, escribe, piensa otra vez, envia
  #18 (permalink)  
Antiguo 13/07/2006, 11:04
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 12 años
Puntos: 1
Bieeeeeeeeennnnn!!!

FUNCIONA!!! FUNCIOOOONA!!!

Así sí que va!!.. De las dos formas!!

Me faltaban los paréntesis.. Y el truquito de usar la variable $elid también funciona.

jeje.. 1 Millón de Gracias chicos!!
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 13:27.