Foros del Web » Programando para Internet » PHP »

Reenviar variables uqe provienen de un formulario

Estas en el tema de Reenviar variables uqe provienen de un formulario en el foro de PHP en Foros del Web. Hola, lo primero os saludo ya que es la primera vez que escribo en este foro, espero colaborar con los conocimientos de php que no ...
  #1 (permalink)  
Antiguo 29/01/2003, 16:25
 
Fecha de Ingreso: enero-2003
Mensajes: 75
Antigüedad: 14 años, 10 meses
Puntos: 0
Reenviar variables uqe provienen de un formulario

Hola, lo primero os saludo ya que es la primera vez que escribo en este foro, espero colaborar con los conocimientos de php que no tengo y ayudar a quien pueda.

Mi nivel de php es del 1 al 10 aprox -5, así que espero que adaptéis vuestras respuestas a mi nivel please.

Mi primera pregunta es, tengo un formulario que me envía unos datos a una pagina en php que lo que hace es comprobar que no existe ya (y si existe preguntar q hacer) e introducirlos en una base de datos y mostrar si se han introducido o no, y en el caso de que no se hayan introducido o que ya exista o casos similares, me gustaría poner un link al formulario q envie los datos para que se rellenen los campos del formulario con los datos puestos anteriormente.

En lo del formulario (creo) que ya se como hacerlo, pero como hago para reenviar esos datos para atrás (no son datos personales ni nada que se deba de ocultar) puede que se envien caracteres especiales tales como &, $ y similares.
Para el formulario utilicé el metodo POST, pero se puede cambiar por supuesto.

Supongo que esto no será nada complicado para los cracks del foro, por cierto si debo de poner algún dato más decidlo y pondré lo q haga falta.

Gracias por adelantado a todos.
__________________
Saludos, Mich

Última edición por Mich Buchanan; 29/01/2003 a las 16:30
  #2 (permalink)  
Antiguo 29/01/2003, 17:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tienes dos opciones:

1) javascript .. un link q apunte a history.back() .. o algo similar ...

2) via PHP:

Pasar las variables recibidas por tu metodo POST en un array y desglosar dicho array en el script formulario (si era un .html ahora tendrá q ser un .php ...) indicando el 'value=' de los <input> q usas para predefinir ese estado inicia que es el que puso en su orgien.

Usaré un par de funciones para serializar el array .. estan en:
http://www.forosdelweb.com/showthrea...072#post262072

Tu script.php de proceso (el q apuntas en tu action= de tu formulario ...) ...
Código PHP:
<?
// capturas las variables del array POST y lo asignamos a $variables .. siendo esta ahora un array.
//  (si usas PHP inferior a 4.1.x usa $HTTP_POST_VARS)
$variables=$_POST;

// Procesas tus variables con tus funciones/métodos ...

// caso q provoque el error y tengas q volver al formulario ...
if (error){
// serializamos el array ..
$variables=array_envia($variables);
header ("Location: formulario.php?variables=$variables");
exit;
}

// Por si no lo conocias esto redirecciona de forma automática .. sin tener q usar un link tipo "volver al formulario" .. que igualmente lo podrias usar pero no seía necesario ...

?>
Ahora . .tu formulario deberá cambiar un pco con lo siguiente:

Código PHP:
<?
// Recogemos el array (nos entra por GET desde links o ese redirecionamiento ..
// dejamos el array definida vacia (para q no nos de error de acceso a indices no definidos ..)
// a su vez des-serializamos el array ...

if (is_array($_GET['variables'])){
$variables=array_recibe($_GET['variables']); 
} else {
// si no es un array (partimos del primer instante del formulario sin errores ...)
$variables=Array();
}

?>

<form ......>

<input type="text" name="algo" value="<? echo $variables['algo']; ?>">

</form>
Como veras .. en value asignamos el valor del elemento correspondiente al array .. usando arrays asocitivos usamos el mismo nombre del campo q recibimos .. si lo usas así veras q es muy facil añadir o quitar elementos sin modificar nada el script.php de proceso de este formulario ..

A su vez .. puedes usar las variables así .. o continuar como las tengas ..

Un saludo,
  #3 (permalink)  
Antiguo 29/01/2003, 17:49
 
Fecha de Ingreso: enero-2003
Mensajes: 75
Antigüedad: 14 años, 10 meses
Puntos: 0
OK, perfecto, pero aún me queda una duda más.

Y si lo que pretendo es reenviar esos datos a esa misma página sólo que cambiando el valor de alguna de esas variables, vamos que si p.ej. $do="añadir" pues lo cambio a $do="actualizar" y que se reevie a esa misma página pero ya sería procesado de diferente forma con un switch.

¿Es posible esto?
__________________
Saludos, Mich
  #4 (permalink)  
Antiguo 29/01/2003, 17:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues solo altera el valor del elemento del array antes de serializarlo incluso ..

Código PHP:
if (error){

// accedes al elemento del array .. $variables['elemento'] equivale a $variable ....
$variables['do']="nuevovalor";

// serializamos el array ..
$variables=array_envia($variables);
header ("Location: formulario.php?variables=$variables");
exit;

Un saludo,
  #5 (permalink)  
Antiguo 30/01/2003, 11:01
 
Fecha de Ingreso: enero-2003
Mensajes: 75
Antigüedad: 14 años, 10 meses
Puntos: 0
Y por ¿último? una pregunta de muy lechón:

¿después de haber recogido las variables de url en $datos=recibe_url($_GET($variable)), para llamar a las variables en la pagina actual tengo que poner $datos['xxx'] o con $xxx sería suficiente?

Gracias, me estás ayudando musho
__________________
Saludos, Mich
  #6 (permalink)  
Antiguo 30/01/2003, 15:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Es un array lo q estas pasando del otro script .. así q tienes que llamarlo por $dato['nombre_variable']

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 00:56.