Foros del Web » Programando para Internet » PHP »

Se recargan los datos una vez que ya se han procesado, al actualizar la pagina

Estas en el tema de Se recargan los datos una vez que ya se han procesado, al actualizar la pagina en el foro de PHP en Foros del Web. Hola a todos, desde hace un par de dias me tope con un inconveniente, tengo un par de formularios, que registran, modifican y eliminan datos, ...
  #1 (permalink)  
Antiguo 03/05/2006, 08:40
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Se recargan los datos una vez que ya se han procesado, al actualizar la pagina

Hola a todos, desde hace un par de dias me tope con un inconveniente, tengo un par de formularios, que registran, modifican y eliminan datos, correctamente de la base de datos, pero despues de presionar Modificar, Registrar o Eliminar se cargan de nuevo los datos, y la verdad no me explico por que, una vez borrado los datos de la base borro los datos de la sesion y del post, ahora no se por que se recargan los datos, o sera que me estoy olvidando borrar en algun lugar mas??, bueno gracias de antemano y agradezco cualquier comentario, aqui les dejo una idea de como es el codigo:
Código PHP:
//
if(isset($_POST['registrar']))
{
   if(
$_POST['registrar']=='Registrar')
   {
       
//codigo para registro
   
}
   elseif(
$_POST['registrar']=='Modificar')
   {
       
//codigo para modificar
   
}
   elseif(
$_POST['registrar']=='Eliminar')
   {
       
//codigo para eliminar
   
}
   
limpiaPost(); //me recorre todos los valores del POST y los borra
   
unset($_SESSION['cabecera']);
   unset(
$_SESSION['detalle']);

saludos, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #2 (permalink)  
Antiguo 03/05/2006, 09:09
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años
Puntos: 33
De acuerdo

Si pudieras poner el codigo de limpiapost() porfavor
  #3 (permalink)  
Antiguo 03/05/2006, 09:25
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Claro, aqui esta:
Código PHP:
//
function limpiaPost()
{
   foreach (
$_POST as $nombre_var => $valor_var)
        unset (
$_POST[$nombre_var]);

si hay alguna observacion sobre este metodo, agradezco comentarios, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #4 (permalink)  
Antiguo 03/05/2006, 10:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Deberías indicar todo el código que usas .. tanto de los scripts anteriores que apuntan al código que expones como del código completo de ese scritp, incluido (o que se vea) como "redireccionas" entre ellos: por link? .. con un "header()") .. como?

Por cierto, .. esa "limpieza" del array $_POST no sirve de mucho .. dicho array lo maneja PHP y contiene siempre lo que al script PHP le llegue por dicho método. Y recalco "le llegue" .. no a lo que "uno" pueda definir.

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 03/05/2006, 14:23
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Gracias por el dato Cluster, bueno creo que me aclaraste un poco la idea de la limpieza que hacia veo que no sirve de mucho en este caso, el procesamiento del formulario lo hago en la misma pagina y no redirecciono con header o algun link a otra pagina, ahora como seteo los campos de mi form era algo asi:
Código PHP:
//
<?php
$_SESSION
['cabecera'][0]=isset($_POST['nombDire'])?$_POST['nombDire']:"";
$_SESSION['cabecera'][1]=isset($_POST['fechaIni'])?$_POST['fechaIni']:"";

if(isset(
$_POST['registrar']))
{
  
//aqui se hace la insercion a la base de datos
  //despues de todo eso 'borraba' los datos de la session y el post
  //no hago ninguna redireccion con header ni con algun link
   
limpiaPost(); //me recorre todos los valores del POST y los borra
   
unset($_SESSION['cabecera']);
   unset(
$_SESSION['detalle']);
}

?>

<form method="POST" action="<?=$_SERVER['PHP_SELF']?>" >

     <input type="text" id="idNombDire" name="nombDire" value="<?=$_SESSION['cabecera'][0]?>"  size="30" class="inputText" >
     <input type='text' id="idFechaIni" name='fechaIni' value="<?=$_SESSION['cabecera'][1]?>" size="9"  class="inputDate" maxlength="10"  >

     <input type="submit" name="registrar" value="<?=isset($nombBoton)?$nombBoton:'Registrar'?>" class="inputSubmit" onclick=<?=$condicionJS?>  >

</form>
Bueno esa es la idea principal, y si entendi bien lo que me dices del manejo del arreglo $_POST entonces tecnicamente no podria evitar que suceda esto sin que redireccione de alguna manera, bueno de todas maneras cualquier idea o comentario sobre el asunto se los agradecere, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #6 (permalink)  
Antiguo 03/05/2006, 14:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
No entendí bien lo que pretendes hacer ..

Hay otro detalle más sobre las sesiones. El valor -real- de una variable de sesión sólo estará disponible en la próxima recarga de página o petición (a otro script que lo leas allá, etc). Es decir, esto no es "legalmente correcto":

$_SESSION['cabecera'][0]=y darle valor ...

Para luego en el mismo script (proceso y flujo del script) .. usar o acceder a:

$_SESSION['cabecera'][0]

Insisto que no entendí cual es la finalidad del código (por qué está fuera de contexto .. por qué no veo el "flujo" del mismo .. en fin .. ). Lo que "suele" ser muy común hacer en caso donde "o tomas el valor que te llega de un URL/formularo .. o tomas el que puedas tener en una variable de sesión" .. sería algo tipo:

Código PHP:
<?
session_start
();

if (isset(
$_SESSION['cabecera'][0])){
   
$variable1=$_SESSION['cabecera'][0];
} else {
   
$variable1=$_POST['nombDire'];
}

<
input type="text" id="idNombDire" name="nombDire" value="<?=$variable1?>"  size="30" class="inputText" >
No sé si el orden será el correcto o no tiene nada que ver con lo que planteas .. Pero, lo que estoy seguro es del uso de sesiones que haces no es correcto o "real".

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 03/05/2006, 15:24
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Gracias Cluster por los comentarios, si creo que no tiene logica si ves solo la parte que mostre, hasta podria hacerse mas simple, pero es algo mas complejo, es algo asi como un carrito de compras pero con dos detalles diferentes y cada uno dinamico, que poseen una cabecera de la cual debo mantener los datos ahi cada vez que se anade, modifica o elimina algun item de cualquier detalle, es por eso que los metia a la sesion.
Ahora segun veo el ejemplo que dejas, lo que haces con el if es lo mismo que hago con el operador ? solo que con la diferencia que no lo asigno a una variable si no a una posicion del arreglo de la sesion, lo que no me quedo claro, es el porque no seria "legalmente correcto" usar directamente asignacion a una variable de la sesion que se va usar en un par de paginas, por que seria mas correcto hacer uso de una variable, '$variable1' en este caso, para recibir el valor que tengo en la session, la verdad no encuentro bien clara la diferencia o el beneficio o desventeja, bueno gracias por el comentario de todas maneras, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
  #8 (permalink)  
Antiguo 03/05/2006, 16:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Según la documentación oficial de sesiones:

Cita:
Todas las variables registradas son almacenadas tras finalizar la petición. Las variables que están indefinidas se marcan como no definidas. En los subsiguientes accesos, no estarán definidas por el módulo de sesiones a menos que el usuario las defina más tarde.
Si bien como haces tu asignación de variables a la própia sesión te resulta . .no es "lógico" o por lo menos si tienes en cuenta que $_SESSION es y debe ser un array de "sistema" que "juegues" con el. Sobre todo cuando intervienen recargas de página (a si misma) y hacia otras.

Creo que es más "sano" tomar el valor de tu variable de sesión .. accederlo directamente o trabajar una variable intermedia para luego asignar su valor a la sesión que corresponda. Por lo menos no suelo ver código que "alteren" el valor directamente el valor de variables $_XXXX y luego lo trabaje .. A mi por lo menos "me confunde".

El tema de ? o "if" es lo de menos (si usas sintax abreviada o no .. ).

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 03/05/2006, 16:32
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 4 meses
Puntos: 5
Gracias por la cita, interesante, tomare en cuenta el consejo, y sobre el control de las variables por lo menos creo que estoy tratando en lo posible siempre que tenga un valor definido y no quede nada al aire (pero nada ni nadie es perfecto, puedo equivocarme), asi que me documentare mas sobre eso y revisare algo sobre estandares de codificacion, saludos y gracias, cya.
__________________
"El Conocimiento es de todos, no solo de algunos"
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 17:08.