Foros del Web » Programando para Internet » PHP »

como hago que unset funcione??

Estas en el tema de como hago que unset funcione?? en el foro de PHP en Foros del Web. miren, este es el codigo del archivo prueba.php ------------------- <? if (isset($matricula ) && isset($id) ) { echo $matricula; unset($matricula); } else if (!isset($id)) { ...
  #1 (permalink)  
Antiguo 02/08/2002, 00:53
Avatar de ceronne  
Fecha de Ingreso: diciembre-2001
Ubicación: Paris
Mensajes: 990
Antigüedad: 22 años, 4 meses
Puntos: 1
como hago que unset funcione??

miren, este es el codigo del archivo prueba.php

-------------------
<?
if (isset($matricula ) && isset($id) )
{
echo $matricula;
unset($matricula);
}
else
if (!isset($id))
{
echo "La dirección que introduciste no es válida";
}
else
if (!isset($matricula ))
{
echo '<html> <head>';
echo '<title>ENTRADA</title>';
echo '</head><body>';
echo '<form action="prueba.php" method="post">';
echo "<br>".'Matrícula: <input type="text" name="matricula">';
echo "<br>".'<input type="submit" name="Submit" value="Enviar">';
echo "<input type=\"hidden\" name=\"id\" value=\"$id\">";
echo '</form>';
echo '</body></html>';
}
?>
---------------------

como ven es un formulario que se procesa dentro de la misma página....
Inmediatamente que se tienen las variables ID y MATRICULA entra a un IF.....al final de este IF tengo un UNSET para "desactivar" la variable.... resulta que si le doy un RELOAD a la página sigue entrando al if (isset($matricula ) && isset($id) ) . No se supone que no debe de entrar ahí xke la variable MATRICULA ya no existe?? como puedo hacer para desactivarla casi al terminar el primer IF????
  #2 (permalink)  
Antiguo 02/08/2002, 02:00
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Re: como hago que unset funcione??

Hola,

Si le das al RELOAD en una pagina a la que le has enviado un formulario, el navegador le vuelve a mandar los datos del formulario. Es decir, no carga la pagina como la primera vez, es mas como si le volvieses a dar al boton de enviar formulario.

Ademas, para PHP cada vez que se carga una pagina, esa pagina para el es nueva, aunque sea la misma. Las funciones solo tienen cobertura dentro del mismo script. Por mucho que modifiques el valor de una variable en un script, si a continuacion vuelves a ejecutar ese script con los mismos parametros, el valor inicial de esa variable no sera el que modificaste. A no ser que sean variables de sesion, pero eso ya son otras historias.

Perdona por el discurso, pero es que a veces creo que la gente no sabe exactamente que es PHP.


Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 02/08/2002, 08:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: como hago que unset funcione??

Bueno .. no todo el envio de variables se ha de hacer por GET o POST .. Se puede combinar estos dos metodos.

Para solucionar un poco tu problema .. deberias usar una variable extra que le indique que operacion debe realizar el script (o está realizando) .. algo asi como un "accion" .. y le asignas valor .. que usaras en tus condiciones "IF" para determinar si procesa los datos o muestra el formulario otra vez por ejemplo.

Como ya te han comentado .. el "unset" para las variables que usas ... descartalo por los motivos que te han explicado.

<?
if ($accion != "guardar"){
echo '<html> <head>';
echo '<title>ENTRADA</title>';
echo '</head><body>';
echo '<form action="prueba.php?accion=guardar" method="post">';
echo "<br>".'Matrícula: <input type="text" name="matricula">';
echo "<br>".'<input type="submit" name="Submit" value="Enviar">';
echo "<input type=\"hidden\" name=\"id\" value=\"$id\">";
echo '</form>';
echo '</body></html>';
} else {
// aqui tu logica que procesa los datos del formulario ...
header("location: prueba.php"); // esto al terminar el proceso nos devuelve a la pagina que contiene el formulario .. o bien a una pagina "sus datos fueron procesados .." el caso es "salir de esta pagina" y evitar asi que los datos al darla al recargar se vuevan a enviar.
}
?>

Fijate en esta linea:
<form action="prueba.php?accion=guardar" method="post">
Se le está diciendo que envie las varibles por metodo POST .. pero a su vez le eviamos una por GET (accion) y ya hemos combinado dos metodos diferentes de envio GET y POST ...
(de igual manera los podias enviar todo por GET o POST .. (en caso de POST .. via un campo oculto en tu formulario ..).

Al usar un redireccionamiento tipo Location (en cabecera) .. como ya sabras no puedes usar ningun "echo" en ese apartado .. pero si necesitas por ejemplo mosrar un error .. lo que se suele hacer es pasarle como parametro a en tu caso pagina.php .. un parametro error .. y ahi lo gestionas


Un saludo,
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 10:54.