Foros del Web » Programando para Internet » PHP »

botón atrás

Estas en el tema de botón atrás en el foro de PHP en Foros del Web. Lo que quiero conseguir es que al pulsar el boton o href me vuelva a la pagina anteriormente mostrada,pero que no me devuelva a la ...
  #1 (permalink)  
Antiguo 08/08/2007, 03:46
Avatar de SILVI85  
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
botón atrás

Lo que quiero conseguir es que al pulsar el boton o href me vuelva a la pagina anteriormente mostrada,pero que no me devuelva a la última accion. Es decir, si yo estoy en una pagina y le doy a un boton y luego a volver a la pagina anterior,se vaya y no me haga como si le hubiese dado otra vez al boton.
No se si me entendereis.
Gracias de antemano
  #2 (permalink)  
Antiguo 08/08/2007, 06:47
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: botón atrás

Para eso, lo mejor es redireccionar desde el servidor.

En una página que procesa un formulario, por ejemplo, cuando terminás el procesamiento simplemente le das

header('Location: nueva_pagina');
exit;

y listo, el navegador será redirigido a nueva_pagina directamente, y una actualización de la página no provocará que los datos del formulario se reenvíen.


Saludos.
  #3 (permalink)  
Antiguo 08/08/2007, 16:41
Avatar de SILVI85  
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: botón atrás

GRACIAS ALVLIN.Pero si es la misma pagina a la que quiero llamar pero que tiene varios formularios distintos en el mismo script ,si le doy a un href que tiene: javascript: window.history.go(-1) me desace la ultmia accion y yo quiero que me lleve al anterior formulario.Como seria entonces??
  #4 (permalink)  
Antiguo 08/08/2007, 19:22
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: botón atrás

Me pierdo. Quizás no esté con todas las luces ahora, ¿podrías dar un ejemplo con una página real?
  #5 (permalink)  
Antiguo 09/08/2007, 16:29
Avatar de SILVI85  
Fecha de Ingreso: julio-2007
Mensajes: 109
Antigüedad: 16 años, 9 meses
Puntos: 1
Re: botón atrás

Varios formularios que en el mismo script interactuan segun los if y que con el href vuelven a la accion anterior,queriendo yo que me vuelva al anterior formulario:
<table width="50%">

<tr align="center" bgcolor="#0000FF">
<th colspan="2" height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="3" color="#FFFFFF"><b>Modificar usuario <b></font></th>
</tr>

<tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Correo:&nbsp; &nbsp;</font></th>
<th align="left" width="70%"><input type="text" name="correo" value=<?php echo $fila2["correo"];?>></th>
</tr>

<tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Estado:&nbsp; &nbsp;</font></th>
<th align="left" width="70%"><input type="radio" name="estado" value="1" <?php if ($fila2["estado"]==1){echo "checked";}?>>Activo <input type="radio" name="estado" value="0" <?php if ($fila2["estado"]==0){echo "checked";}?>>Inactivo</th>

<tr align="center" bgcolor="#FFFFCC" valign="middle">
<th colspan="2" height="40" width="30%">
<input type="submit" name="enviar" value="Enviar"
ONMOUSEOVER="this.className = 'over';"
ONMOUSEOUT="this.className = '';"
ONMOUSEDOWN="this.className = 'down';"
ONMOUSEUP="this.className = 'over';"></th></font>
</tr>
</table>
<center> <table width="50%" border="0" aling="center" >
<tr align="center">
<td height="40"><font face="Arial, Helvetica, sans-serif" size="3" color="#0000FF"><i> Pulse <A HREF=" javascript: window.history.go(-1) "><font face="Arial, Helvetica, sans-serif" size="2" color="#FF0000">Aqu&iacute;</font></a> para vover atr&aacute;s
<table width="50%" border="0" aling="center" >
<tr align="center">
<td height="40"><font face="Arial, Helvetica, sans-serif" size="3" color="#0000FF"><i>
<?php
}
}
//si se ha pulsado enviar,se actuliza el perfil (solo lo hace el admin)..
if (isset($enviar))
{
?>
<center>
<table width="50%" border="0" aling="center" >
<tr align="center">
<td height="40"><font face="Arial, Helvetica, sans-serif" size="3" color="#0000FF"><i>

<?php



if($nombre=="" or $apellidos=="" or $usu=="" or $clave=="" or $correo=="")
{
echo "<center><font color=\"blue\">Debe rellenar todos los datos<br>";
?><BR>Pulse <A HREF=" javascript: window.history.go(-1) "><font face="Arial, Helvetica, sans-serif" size="2" color="#FF0000">Aqu&iacute;</font></a> para vover atr&aacute;s
<?php
}
else
{
$id_mod=$_SESSION["id_mod"];

if($perfil=="Jefe")
{

$perfil="Jefe de Departamento";
$cadenaexis2="SELECT * FROM usuarios WHERE perfil=\"$perfil\" and id_unidad=\"$unid_organizativa\" and id<>\"$id_mod\"";
//echo "$cadenaexis2";
$consultaexis2=mysql_query($cadenaexis2,$conexion) or die ("Error al consultar familias a null");
$nfilasexis2=mysql_num_rows($consultaexis2);
if($nfilasexis2==0)
{
$cadena_mod="UPDATE usuarios SET nombre=\"$nombre\",apellidos=\"$apellidos\",usuari o=\"$usu\",clave=\"$clave\",correo=\"$correo\",est ado= \"$estado\",id_unidad=\"$unid_organizativa\",perfi l=\"$perfil\" where id like \"$id_mod\"";

//echo $cadena_mod;
$consulta_mod=mysql_query($cadena_mod, $conexion) or die ("Error al actualizar permisos del usuario");

if ($consulta_mod)
{
echo "<br><font color=\"blue\">Registro actualizado<br><br></font>";
?>Pulse <A HREF=" javascript: window.history.go(-2) "><font face="Arial, Helvetica, sans-serif" size="2" color="#FF0000">Aqu&iacute;</font></a> para vover atr&aacute;s<?php
}
}
else
{
$cadenanom="SELECT nombre FROM unidades_organizativas WHERE id=\"$unid_organizativa\"";
$consultanom=mysql_query($cadenanom,$conexion) or die ("Error al consultar familias a null");
$filanom=mysql_fetch_array($consultanom);

echo "<center><font color=\"blue\">Ya existe Jefe de Unidad Organizativa de \"". $filanom["nombre"] ."\"<br>";
?><BR>Pulse <A HREF=" javascript: window.history.go(-1) "><font face="Arial, Helvetica, sans-serif" size="2" color="#FF0000">Aqu&iacute;</font></a> para vover atr&aacute;s
<?php
} }
else
{
$cadena_mod="UPDATE usuarios SET nombre=\"$nombre\",apellidos=\"$apellidos\",usuari o=\"$usu\",clave=\"$clave\",correo=\"$correo\",est ado= \"$estado\",id_unidad=\"$unid_organizativa\",perfi l=\"$perfil\" where id like \"$id_mod\"";
//echo $cadena_mod;
$consulta_mod=mysql_query($cadena_mod, $conexion) or die ("Error al actualizar permisos del usuario");

if ($consulta_mod)
{
echo "<br><font color=\"blue\">Registro actualizado<br><br></font>";
?>Pulse <A HREF=" javascript: window.history.go(-2) "><font face="Arial, Helvetica, sans-serif" size="2" color="#FF0000">Aqu&iacute;</font></a> para vover atr&aacute;s<?php
}
}
}
}
if (empty($_SESSION["autentificado"]) or isset($nuevo) or isset($alta))
//si no estoy autentificado muestro inputs pa registrarse
{
?>
<center>
<table width="50%">
<tr align="center" bgcolor="#0000FF">
<th colspan="2" height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="3" color="#FFFFFF"><b>Registro de Nuevo Usuario<b></font></th>
</tr>
<tr align="center" bgcolor="#FFCC99" valign="middle">



<tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Nombre:&nbsp; &nbsp;</font></th>
<th align="left" width="70%"><input type="text" name="nombre2" value="<?=$nombre2?>"></th>
</tr>

<tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Apellidos:&nbsp; &nbsp;</font></th>
<th align="left" width="70%"><input type="text" name="apellidos2" value="<?=$apellidos2?>"></th>
</tr>

<tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Usuario:&nbsp; &nbsp;</font></th>
<th align="left" width="70%"><input type="text" name="user2" value="<?=$user2?>"></th>
</tr>

<tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Contrase&ntilde;a (hasta 8 caracteres):&nbsp; &nbsp;</font></th>
<th align="left" width="70%"><input type="password" name="clave2" SIZE="20" MAXLENGTH="8"></th>
</tr> <tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Repita la clave:&nbsp; &nbsp;</font></th>
<th align="left" width="70%"><input type="password" name="clave22"></th>
</tr>

<tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="30%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Correo:&nbsp; &nbsp;</font></th>
<th align="left" width="70%"><input type="text" name="correo2" value="<?=$correo2?>"></th>
</tr>

<tr align="right" bgcolor="#FFFFCC" valign="middle">
<th height="40" width="35%"><font face="Arial, Helvetica, sans-serif" size="2" color="#0000FF">Unidad Organizativa:&nbsp; &nbsp;</font></th>
<th align="left" width="65%">

<?php
include("conexion.php");
$cadena="SELECT nombre,id FROM unidades_organizativas";
$consulta=mysql_query($cadena) or die ("Error al consultar familias a null");
$nfilas=mysql_num_rows($consulta);

if($nfilas!=0)
{
echo "<select name=\"unid_organizativa2\">";
}

for($i=1;$i<=$nfilas;$i++)
{
$fila=mysql_fetch_array($consulta);
$nombreunidad=$fila["nombre"];
$idunidad=$fila["id"];

//aparece en el combo el nombre de todas las familias
echo "<option value=\"$idunidad\">$nombreunidad</option>";
}

if($nfilas!=0)
{
echo "</select>";
}
  #6 (permalink)  
Antiguo 09/08/2007, 19:42
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: botón atrás

Por lo que voy entendiendo, lo que tenés es un solo script php que contiene lo que luego se convierten en varias páginas, cada una de ellas es un paso de un sistema de formularios.

Si es eso,
1.- Mala idea ponerlo así. Es mucho más claro ponerlo en páginas separadas. Tendrás menos problemas y código más claro.

2.- usá variables que identifiquen claramente en qué paso estás (preferentemente variables GET). Así, pase lo que pase, solo se hace el procesamiento correspondiente a ese paso. Y podrás navegar con comodidad entre los formularios.

3.- Relacionado con 1: una buena forma de procesar series de formularios es:
si tengo la página A con un formulario cuyos datos deben ser recogidos por B, mejor es hacer que el fomulario en A se envíe hacia la misma A, se procese como corresponda, y después se redirija a B. Con este método, cada página tiene un control total sobre sus datos, y una actualización por parte del usuario de la página B no causa que el formulario se envíe de nuevo.

4.- No confíes en que un history.back() te va a conservar los datos que estaban escritos en el formulario. Esta conducta es poco predecible, por desgracia (si fuera algo que todos los navegadores hicieran, nos haría la vida más fácil a los programadores).

Perdón por sugerir una reescritura del sistema, pero realmente es complicado ver dónde empieza el HTML y dónde el PHP, y aún más complicado es entender el flujo del sistema.

Un último comentario: la próxima vez que pegues código, usá las etiquetas BBCode [ php] y [/php], para que esto:

$hola = "soy una variable";

se transforme en esto:

Código PHP:
$hola "soy una variable"
que es bastante más legible como código.

Saludos.
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.